Search in sources :

Example 1 with BatchApplicationDetail

use of io.cdap.cdap.proto.BatchApplicationDetail in project cdap by caskdata.

the class AppLifecycleHttpHandler method getApplicationDetails.

/**
 * Gets {@link ApplicationDetail} for a set of applications. It expects a post body as a array of object, with each
 * object specifying the applciation id and an optional version. E.g.
 *
 * <pre>
 * {@code
 * [
 *   {"appId":"XYZ", "version":"1.2.3"},
 *   {"appId":"ABC"},
 *   {"appId":"FOO", "version":"2.3.4"},
 * ]
 * }
 * </pre>
 * The response will be an array of {@link BatchApplicationDetail} object, which either indicates a success (200) or
 * failure for each of the requested application in the same order as the request.
 */
@POST
@Path("/appdetail")
public void getApplicationDetails(FullHttpRequest request, HttpResponder responder, @PathParam("namespace-id") String namespace) throws Exception {
    List<ApplicationId> appIds = decodeAndValidateBatchApplication(validateNamespace(namespace), request);
    Map<ApplicationId, ApplicationDetail> details = applicationLifecycleService.getAppDetails(appIds);
    List<BatchApplicationDetail> result = new ArrayList<>();
    for (ApplicationId appId : appIds) {
        ApplicationDetail detail = details.get(appId);
        if (detail == null) {
            result.add(new BatchApplicationDetail(new NotFoundException(appId)));
        } else {
            result.add(new BatchApplicationDetail(detail));
        }
    }
    responder.sendJson(HttpResponseStatus.OK, GSON.toJson(result));
}
Also used : ApplicationDetail(io.cdap.cdap.proto.ApplicationDetail) BatchApplicationDetail(io.cdap.cdap.proto.BatchApplicationDetail) ArrayList(java.util.ArrayList) ApplicationNotFoundException(io.cdap.cdap.common.ApplicationNotFoundException) NamespaceNotFoundException(io.cdap.cdap.common.NamespaceNotFoundException) NotFoundException(io.cdap.cdap.common.NotFoundException) ArtifactNotFoundException(io.cdap.cdap.common.ArtifactNotFoundException) BatchApplicationDetail(io.cdap.cdap.proto.BatchApplicationDetail) ApplicationId(io.cdap.cdap.proto.id.ApplicationId) Path(javax.ws.rs.Path) POST(javax.ws.rs.POST)

Example 2 with BatchApplicationDetail

use of io.cdap.cdap.proto.BatchApplicationDetail in project cdap by caskdata.

the class AppLifecycleHttpHandlerTest method testListAndGet.

@Test
public void testListAndGet() throws Exception {
    // deploy without name to testnamespace1
    deploy(AllProgramsApp.class, 200, Constants.Gateway.API_VERSION_3_TOKEN, TEST_NAMESPACE1);
    // deploy with name to testnamespace2
    String ns2AppName = AllProgramsApp.NAME + "2";
    Id.Namespace ns2 = Id.Namespace.from(TEST_NAMESPACE2);
    Id.Artifact ns2ArtifactId = Id.Artifact.from(ns2, AllProgramsApp.class.getSimpleName(), "1.0.0-SNAPSHOT");
    HttpResponse response = addAppArtifact(ns2ArtifactId, AllProgramsApp.class);
    Assert.assertEquals(200, response.getResponseCode());
    Id.Application appId = Id.Application.from(ns2, ns2AppName);
    response = deploy(appId, new AppRequest<>(ArtifactSummary.from(ns2ArtifactId.toArtifactId())));
    Assert.assertEquals(200, response.getResponseCode());
    // deploy with name and version to testnamespace2
    ApplicationId app1 = new ApplicationId(TEST_NAMESPACE2, ns2AppName, VERSION1);
    response = deploy(app1, new AppRequest<>(ArtifactSummary.from(ns2ArtifactId.toArtifactId())));
    Assert.assertEquals(200, response.getResponseCode());
    // verify testnamespace1 has 1 app
    List<JsonObject> apps = getAppList(TEST_NAMESPACE1);
    Assert.assertEquals(1, apps.size());
    // verify testnamespace2 has 2 app
    apps = getAppList(TEST_NAMESPACE2);
    Assert.assertEquals(2, apps.size());
    // get and verify app details in testnamespace1
    JsonObject result = getAppDetails(TEST_NAMESPACE1, AllProgramsApp.NAME);
    ApplicationSpecification spec = Specifications.from(new AllProgramsApp());
    Assert.assertEquals(AllProgramsApp.NAME, result.get("name").getAsString());
    Assert.assertEquals(AllProgramsApp.DESC, result.get("description").getAsString());
    // Validate the datasets
    JsonArray datasets = result.get("datasets").getAsJsonArray();
    Assert.assertEquals(spec.getDatasets().size(), datasets.size());
    Assert.assertTrue(StreamSupport.stream(datasets.spliterator(), false).map(JsonObject.class::cast).map(obj -> obj.get("name").getAsString()).allMatch(dataset -> spec.getDatasets().containsKey(dataset)));
    // Validate the programs
    JsonArray programs = result.get("programs").getAsJsonArray();
    int totalPrograms = Arrays.stream(io.cdap.cdap.api.app.ProgramType.values()).mapToInt(type -> spec.getProgramsByType(type).size()).reduce(0, (l, r) -> l + r);
    Assert.assertEquals(totalPrograms, programs.size());
    Assert.assertTrue(StreamSupport.stream(programs.spliterator(), false).map(JsonObject.class::cast).allMatch(obj -> {
        String type = obj.get("type").getAsString().toUpperCase();
        io.cdap.cdap.api.app.ProgramType programType = io.cdap.cdap.api.app.ProgramType.valueOf(type);
        return spec.getProgramsByType(programType).contains(obj.get("name").getAsString());
    }));
    // get and verify app details in testnamespace2
    List<BatchApplicationDetail> appDetails = getAppDetails(TEST_NAMESPACE2, Arrays.asList(ImmutablePair.of(ns2AppName, null), ImmutablePair.of(ns2AppName, VERSION1)));
    Assert.assertEquals(2, appDetails.size());
    Assert.assertTrue(appDetails.stream().allMatch(d -> d.getStatusCode() == 200));
    ApplicationDetail appDetail = appDetails.get(0).getDetail();
    Assert.assertNotNull(appDetail);
    Assert.assertEquals(ns2AppName, appDetail.getName());
    Assert.assertEquals(ApplicationId.DEFAULT_VERSION, appDetail.getAppVersion());
    appDetail = appDetails.get(1).getDetail();
    Assert.assertNotNull(appDetail);
    Assert.assertEquals(ns2AppName, appDetail.getName());
    Assert.assertEquals(VERSION1, appDetail.getAppVersion());
    // delete app in testnamespace1
    response = doDelete(getVersionedAPIPath("apps/", Constants.Gateway.API_VERSION_3_TOKEN, TEST_NAMESPACE1));
    Assert.assertEquals(200, response.getResponseCode());
    // delete app in testnamespace2
    response = doDelete(getVersionedAPIPath("apps/", Constants.Gateway.API_VERSION_3_TOKEN, TEST_NAMESPACE2));
    Assert.assertEquals(200, response.getResponseCode());
    deleteArtifact(ns2ArtifactId, 200);
    // verify testnamespace2 has 0 app
    apps = getAppList(TEST_NAMESPACE2);
    Assert.assertEquals(0, apps.size());
}
Also used : JsonObject(com.google.gson.JsonObject) ApplicationDetail(io.cdap.cdap.proto.ApplicationDetail) Arrays(java.util.Arrays) TypeToken(com.google.gson.reflect.TypeToken) ImmutablePair(io.cdap.cdap.common.utils.ImmutablePair) NamespaceId(io.cdap.cdap.proto.id.NamespaceId) AppLifecycleHttpHandler(io.cdap.cdap.gateway.handlers.AppLifecycleHttpHandler) UGIProvider(io.cdap.cdap.security.impersonation.UGIProvider) HttpResponse(io.cdap.common.http.HttpResponse) AppWithSchedule(io.cdap.cdap.AppWithSchedule) ArtifactSummary(io.cdap.cdap.api.artifact.ArtifactSummary) AuthenticationContext(io.cdap.cdap.security.spi.authentication.AuthenticationContext) ConfigTestApp(io.cdap.cdap.ConfigTestApp) PreferencesService(io.cdap.cdap.config.PreferencesService) AppWithDataset(io.cdap.cdap.AppWithDataset) BatchApplicationDetail(io.cdap.cdap.proto.BatchApplicationDetail) ImmutableSet(com.google.common.collect.ImmutableSet) MetadataSubscriberService(io.cdap.cdap.metadata.MetadataSubscriberService) ImmutableMap(com.google.common.collect.ImmutableMap) ApplicationSpecification(io.cdap.cdap.api.app.ApplicationSpecification) MessagingService(io.cdap.cdap.messaging.MessagingService) Set(java.util.Set) ApplicationLifecycleService(io.cdap.cdap.internal.app.services.ApplicationLifecycleService) MetadataServiceClient(io.cdap.cdap.data2.metadata.writer.MetadataServiceClient) AppDeploymentInfo(io.cdap.cdap.internal.app.deploy.pipeline.AppDeploymentInfo) Id(io.cdap.cdap.common.id.Id) JsonArray(com.google.gson.JsonArray) List(java.util.List) MetricsSystemClient(io.cdap.cdap.api.metrics.MetricsSystemClient) Constants(io.cdap.cdap.common.conf.Constants) AppWithNoServices(io.cdap.cdap.AppWithNoServices) ProfileId(io.cdap.cdap.proto.id.ProfileId) ApplicationId(io.cdap.cdap.proto.id.ApplicationId) NotFoundException(io.cdap.cdap.common.NotFoundException) Singleton(com.google.inject.Singleton) BeforeClass(org.junit.BeforeClass) AppFabricTestBase(io.cdap.cdap.internal.app.services.http.AppFabricTestBase) AccessEnforcer(io.cdap.cdap.security.spi.authorization.AccessEnforcer) ApplicationWithPrograms(io.cdap.cdap.internal.app.deploy.pipeline.ApplicationWithPrograms) ProgramType(io.cdap.cdap.proto.ProgramType) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) NamespaceNotFoundException(io.cdap.cdap.common.NamespaceNotFoundException) ManagerFactory(io.cdap.cdap.app.deploy.ManagerFactory) Profile(io.cdap.cdap.proto.profile.Profile) StreamSupport(java.util.stream.StreamSupport) SystemArguments(io.cdap.cdap.internal.app.runtime.SystemArguments) ArtifactId(io.cdap.cdap.proto.id.ArtifactId) CurrentUGIProvider(io.cdap.cdap.security.impersonation.CurrentUGIProvider) AppWithDatasetDuplicate(io.cdap.cdap.AppWithDatasetDuplicate) Before(org.junit.Before) UsageRegistry(io.cdap.cdap.data2.registry.UsageRegistry) Scheduler(io.cdap.cdap.scheduler.Scheduler) ProgramId(io.cdap.cdap.proto.id.ProgramId) Config(io.cdap.cdap.api.Config) Impersonator(io.cdap.cdap.security.impersonation.Impersonator) Test(org.junit.Test) Scopes(com.google.inject.Scopes) Store(io.cdap.cdap.app.store.Store) Mockito(org.mockito.Mockito) Provides(com.google.inject.Provides) CConfiguration(io.cdap.cdap.common.conf.CConfiguration) ArtifactRepository(io.cdap.cdap.internal.app.runtime.artifact.ArtifactRepository) CapabilityReader(io.cdap.cdap.internal.capability.CapabilityReader) OwnerAdmin(io.cdap.cdap.security.impersonation.OwnerAdmin) AllProgramsApp(io.cdap.cdap.AllProgramsApp) AppRequest(io.cdap.cdap.proto.artifact.AppRequest) Assert(org.junit.Assert) AbstractModule(com.google.inject.AbstractModule) Specifications(io.cdap.cdap.internal.app.deploy.Specifications) HttpResponseCodes(org.jboss.resteasy.util.HttpResponseCodes) ApplicationSpecification(io.cdap.cdap.api.app.ApplicationSpecification) HttpResponse(io.cdap.common.http.HttpResponse) JsonObject(com.google.gson.JsonObject) AllProgramsApp(io.cdap.cdap.AllProgramsApp) AppRequest(io.cdap.cdap.proto.artifact.AppRequest) JsonArray(com.google.gson.JsonArray) ApplicationDetail(io.cdap.cdap.proto.ApplicationDetail) BatchApplicationDetail(io.cdap.cdap.proto.BatchApplicationDetail) BatchApplicationDetail(io.cdap.cdap.proto.BatchApplicationDetail) NamespaceId(io.cdap.cdap.proto.id.NamespaceId) Id(io.cdap.cdap.common.id.Id) ProfileId(io.cdap.cdap.proto.id.ProfileId) ApplicationId(io.cdap.cdap.proto.id.ApplicationId) ArtifactId(io.cdap.cdap.proto.id.ArtifactId) ProgramId(io.cdap.cdap.proto.id.ProgramId) ProgramType(io.cdap.cdap.proto.ProgramType) ApplicationId(io.cdap.cdap.proto.id.ApplicationId) Test(org.junit.Test)

Example 3 with BatchApplicationDetail

use of io.cdap.cdap.proto.BatchApplicationDetail in project cdap by caskdata.

the class AppFabricTestBase method getAppDetails.

/**
 * Gets a list of {@link BatchApplicationDetail} from the give set of application version
 *
 * @param namespace the namespace to read from
 * @param appVersions list of appId and version pair.
 */
protected List<BatchApplicationDetail> getAppDetails(String namespace, Collection<ImmutablePair<String, String>> appVersions) throws Exception {
    List<Map<String, String>> request = appVersions.stream().map(e -> (e.getSecond() == null) ? Collections.singletonMap("appId", e.getFirst()) : ImmutableMap.of("appId", e.getFirst(), "version", e.getSecond())).collect(Collectors.toList());
    HttpResponse response = doPost(getVersionedAPIPath("appdetail", Constants.Gateway.API_VERSION_3_TOKEN, namespace), GSON.toJson(request));
    assertResponseCode(200, response);
    Assert.assertEquals("application/json", getFirstHeaderValue(response, HttpHeaderNames.CONTENT_TYPE.toString()));
    return readResponse(response, new TypeToken<List<BatchApplicationDetail>>() {
    }.getType());
}
Also used : BatchProgramSchedule(io.cdap.cdap.proto.BatchProgramSchedule) Manifest(java.util.jar.Manifest) Arrays(java.util.Arrays) TypeToken(com.google.gson.reflect.TypeToken) ImmutablePair(io.cdap.cdap.common.utils.ImmutablePair) UGIProvider(io.cdap.cdap.security.impersonation.UGIProvider) GsonBuilder(com.google.gson.GsonBuilder) ScheduledRuntime(io.cdap.cdap.proto.ScheduledRuntime) DefaultMetadataServiceClient(io.cdap.cdap.data2.metadata.writer.DefaultMetadataServiceClient) InetAddress(java.net.InetAddress) ProgramScheduleStatus(io.cdap.cdap.internal.app.runtime.schedule.ProgramScheduleStatus) MediaType(javax.ws.rs.core.MediaType) Map(java.util.Map) Closeables(com.google.common.io.Closeables) ClassRule(org.junit.ClassRule) ScheduleDetail(io.cdap.cdap.proto.ScheduleDetail) AfterClass(org.junit.AfterClass) MetadataSubscriberService(io.cdap.cdap.metadata.MetadataSubscriberService) StoreDefinition(io.cdap.cdap.store.StoreDefinition) AppFabricTestModule(io.cdap.cdap.internal.guice.AppFabricTestModule) Set(java.util.Set) Constraint(io.cdap.cdap.internal.schedule.constraint.Constraint) ProgramRunStatus(io.cdap.cdap.proto.ProgramRunStatus) Id(io.cdap.cdap.common.id.Id) ApplicationSpecificationAdapter(io.cdap.cdap.internal.app.ApplicationSpecificationAdapter) AppFabricServer(io.cdap.cdap.internal.app.services.AppFabricServer) MetadataScope(io.cdap.cdap.api.metadata.MetadataScope) TriggerCodec(io.cdap.cdap.internal.app.runtime.schedule.trigger.TriggerCodec) ApplicationId(io.cdap.cdap.proto.id.ApplicationId) Joiner(com.google.common.base.Joiner) RunRecord(io.cdap.cdap.proto.RunRecord) Location(org.apache.twill.filesystem.Location) SatisfiableTrigger(io.cdap.cdap.internal.app.runtime.schedule.trigger.SatisfiableTrigger) UnauthorizedException(io.cdap.cdap.security.spi.authorization.UnauthorizedException) Strings(com.google.common.base.Strings) ProfileStatus(io.cdap.cdap.runtime.spi.profile.ProfileStatus) Discoverable(org.apache.twill.discovery.Discoverable) DiscoveryServiceClient(org.apache.twill.discovery.DiscoveryServiceClient) Locations(io.cdap.cdap.common.io.Locations) DatasetOpExecutorService(io.cdap.cdap.data2.datafabric.dataset.service.executor.DatasetOpExecutorService) MetricDataQuery(io.cdap.cdap.api.metrics.MetricDataQuery) CurrentUGIProvider(io.cdap.cdap.security.impersonation.CurrentUGIProvider) Nullable(javax.annotation.Nullable) PreferencesDetail(io.cdap.cdap.proto.PreferencesDetail) TransactionManager(org.apache.tephra.TransactionManager) DatasetMeta(io.cdap.cdap.proto.DatasetMeta) URIScheme(io.cdap.cdap.common.discovery.URIScheme) IOException(java.io.IOException) LocationFactory(org.apache.twill.filesystem.LocationFactory) File(java.io.File) Service(com.google.common.util.concurrent.Service) MetadataClient(io.cdap.cdap.client.MetadataClient) Schedulers(io.cdap.cdap.internal.app.runtime.schedule.store.Schedulers) Guice(com.google.inject.Guice) Preconditions(com.google.common.base.Preconditions) TimeValue(io.cdap.cdap.api.dataset.lib.cube.TimeValue) HttpHeaderNames(io.netty.handler.codec.http.HttpHeaderNames) Assert(org.junit.Assert) InputSupplier(com.google.common.io.InputSupplier) MetadataService(io.cdap.cdap.metadata.MetadataService) AbstractModule(com.google.inject.AbstractModule) HttpRequest(io.cdap.common.http.HttpRequest) JsonObject(com.google.gson.JsonObject) Module(com.google.inject.Module) RandomEndpointStrategy(io.cdap.cdap.common.discovery.RandomEndpointStrategy) NamespaceId(io.cdap.cdap.proto.id.NamespaceId) HttpResponse(io.cdap.common.http.HttpResponse) EndpointStrategy(io.cdap.cdap.common.discovery.EndpointStrategy) AppJarHelper(io.cdap.cdap.common.test.AppJarHelper) ProtoConstraintCodec(io.cdap.cdap.proto.ProtoConstraintCodec) DatasetId(io.cdap.cdap.proto.id.DatasetId) Gson(com.google.gson.Gson) ProgramStatus(io.cdap.cdap.api.ProgramStatus) ServiceStore(io.cdap.cdap.app.store.ServiceStore) MetadataEntity(io.cdap.cdap.api.metadata.MetadataEntity) MetadataMutation(io.cdap.cdap.spi.metadata.MetadataMutation) URI(java.net.URI) AuthenticationTestContext(io.cdap.cdap.security.auth.context.AuthenticationTestContext) Tasks(io.cdap.cdap.common.utils.Tasks) BatchApplicationDetail(io.cdap.cdap.proto.BatchApplicationDetail) ImmutableMap(com.google.common.collect.ImmutableMap) Collection(java.util.Collection) MessagingService(io.cdap.cdap.messaging.MessagingService) HttpResponseStatus(io.netty.handler.codec.http.HttpResponseStatus) Collectors(java.util.stream.Collectors) HttpRequestConfig(io.cdap.common.http.HttpRequestConfig) NamespaceMeta(io.cdap.cdap.proto.NamespaceMeta) List(java.util.List) AggregationFunction(io.cdap.cdap.api.dataset.lib.cube.AggregationFunction) SecurityRequestContext(io.cdap.cdap.security.spi.authentication.SecurityRequestContext) Type(java.lang.reflect.Type) ClientConfig(io.cdap.cdap.client.config.ClientConfig) CaseInsensitiveEnumTypeAdapterFactory(io.cdap.cdap.common.io.CaseInsensitiveEnumTypeAdapterFactory) DatasetService(io.cdap.cdap.data2.datafabric.dataset.service.DatasetService) Optional(java.util.Optional) Constants(io.cdap.cdap.common.conf.Constants) ProfileId(io.cdap.cdap.proto.id.ProfileId) StructuredTableAdmin(io.cdap.cdap.spi.data.StructuredTableAdmin) NotFoundException(io.cdap.cdap.common.NotFoundException) RemoteClientFactory(io.cdap.cdap.common.internal.remote.RemoteClientFactory) Retries(io.cdap.cdap.common.service.Retries) PluginJarHelper(io.cdap.cdap.common.test.PluginJarHelper) BeforeClass(org.junit.BeforeClass) BatchProgramHistory(io.cdap.cdap.proto.BatchProgramHistory) ArtifactRange(io.cdap.cdap.api.artifact.ArtifactRange) ManifestFields(io.cdap.cdap.app.program.ManifestFields) Modules(com.google.inject.util.Modules) MetricStore(io.cdap.cdap.api.metrics.MetricStore) HashMap(java.util.HashMap) EntityId(io.cdap.cdap.proto.id.EntityId) MetadataStorage(io.cdap.cdap.spi.metadata.MetadataStorage) DatasetClient(io.cdap.cdap.client.DatasetClient) Trigger(io.cdap.cdap.api.schedule.Trigger) LogQueryService(io.cdap.cdap.logging.service.LogQueryService) BatchProgram(io.cdap.cdap.proto.BatchProgram) ConnectionConfig(io.cdap.cdap.client.config.ConnectionConfig) Profile(io.cdap.cdap.proto.profile.Profile) HttpRequests(io.cdap.common.http.HttpRequests) AbstractAppFabricHttpHandler(io.cdap.cdap.gateway.handlers.util.AbstractAppFabricHttpHandler) ProtoTrigger(io.cdap.cdap.proto.ProtoTrigger) TransactionSystemClient(org.apache.tephra.TransactionSystemClient) Scheduler(io.cdap.cdap.scheduler.Scheduler) ProgramId(io.cdap.cdap.proto.id.ProgramId) TxConstants(org.apache.tephra.TxConstants) Config(io.cdap.cdap.api.Config) MetricTimeSeries(io.cdap.cdap.api.metrics.MetricTimeSeries) Scopes(com.google.inject.Scopes) CoreSchedulerService(io.cdap.cdap.scheduler.CoreSchedulerService) UnauthenticatedException(io.cdap.cdap.security.spi.authentication.UnauthenticatedException) MetricsCollectionService(io.cdap.cdap.api.metrics.MetricsCollectionService) Injector(com.google.inject.Injector) DefaultInternalAuthenticator(io.cdap.cdap.common.internal.remote.DefaultInternalAuthenticator) TimeUnit(java.util.concurrent.TimeUnit) CConfiguration(io.cdap.cdap.common.conf.CConfiguration) EntityScope(io.cdap.cdap.proto.EntityScope) AppRequest(io.cdap.cdap.proto.artifact.AppRequest) Collections(java.util.Collections) TemporaryFolder(org.junit.rules.TemporaryFolder) InputStream(java.io.InputStream) TypeToken(com.google.gson.reflect.TypeToken) HttpResponse(io.cdap.common.http.HttpResponse) BatchApplicationDetail(io.cdap.cdap.proto.BatchApplicationDetail) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap) HashMap(java.util.HashMap)

Aggregations

NotFoundException (io.cdap.cdap.common.NotFoundException)3 BatchApplicationDetail (io.cdap.cdap.proto.BatchApplicationDetail)3 ApplicationId (io.cdap.cdap.proto.id.ApplicationId)3 ImmutableMap (com.google.common.collect.ImmutableMap)2 JsonObject (com.google.gson.JsonObject)2 TypeToken (com.google.gson.reflect.TypeToken)2 AbstractModule (com.google.inject.AbstractModule)2 Scopes (com.google.inject.Scopes)2 Config (io.cdap.cdap.api.Config)2 NamespaceNotFoundException (io.cdap.cdap.common.NamespaceNotFoundException)2 CConfiguration (io.cdap.cdap.common.conf.CConfiguration)2 Constants (io.cdap.cdap.common.conf.Constants)2 Id (io.cdap.cdap.common.id.Id)2 ImmutablePair (io.cdap.cdap.common.utils.ImmutablePair)2 MessagingService (io.cdap.cdap.messaging.MessagingService)2 MetadataSubscriberService (io.cdap.cdap.metadata.MetadataSubscriberService)2 ApplicationDetail (io.cdap.cdap.proto.ApplicationDetail)2 AppRequest (io.cdap.cdap.proto.artifact.AppRequest)2 NamespaceId (io.cdap.cdap.proto.id.NamespaceId)2 ProfileId (io.cdap.cdap.proto.id.ProfileId)2