Search in sources :

Example 1 with ApplicationResource

use of org.cloudfoundry.client.v2.applications.ApplicationResource in project promregator by promregator.

the class CFAccessorMock method retrieveApplicationId.

@Override
public Mono<ListApplicationsResponse> retrieveApplicationId(String orgId, String spaceId, String applicationName) {
    if (orgId.equals(UNITTEST_ORG_UUID) && spaceId.equals(UNITTEST_SPACE_UUID)) {
        ApplicationResource ar = null;
        if (applicationName.equals("testapp")) {
            ar = ApplicationResource.builder().entity(ApplicationEntity.builder().name(applicationName).build()).metadata(Metadata.builder().createdAt(CREATED_AT_TIMESTAMP).id(UNITTEST_APP1_UUID).build()).build();
        } else if (applicationName.equals("testapp2")) {
            ar = ApplicationResource.builder().entity(ApplicationEntity.builder().name(applicationName).build()).metadata(Metadata.builder().createdAt(CREATED_AT_TIMESTAMP).id(UNITTEST_APP2_UUID).build()).build();
        } else {
            Assert.fail("Invalid ApplicationId request, application name is invalid");
        }
        List<ApplicationResource> list = new LinkedList<>();
        list.add(ar);
        ListApplicationsResponse resp = ListApplicationsResponse.builder().addAllResources(list).build();
        return Mono.just(resp);
    }
    Assert.fail("Invalid ApplicationId request");
    return null;
}
Also used : ApplicationResource(org.cloudfoundry.client.v2.applications.ApplicationResource) ListApplicationsResponse(org.cloudfoundry.client.v2.applications.ListApplicationsResponse) LinkedList(java.util.LinkedList)

Example 2 with ApplicationResource

use of org.cloudfoundry.client.v2.applications.ApplicationResource in project promregator by promregator.

the class ReactiveAppInstanceScanner method getApplicationId.

private Mono<String> getApplicationId(Mono<String> orgIdMono, Mono<String> spaceIdMono, String applicationNameString) {
    String key = String.format("%d|%d|%s", orgIdMono.hashCode(), spaceIdMono.hashCode(), applicationNameString);
    synchronized (key.intern()) {
        Mono<String> cached = this.applicationMap.get(key);
        if (cached != null) {
            this.internalMetrics.countHit("appinstancescanner.app");
            return cached;
        }
        this.internalMetrics.countMiss("appinstancescanner.app");
        ReactiveTimer reactiveTimer = new ReactiveTimer(this.internalMetrics, "app");
        cached = Mono.zip(orgIdMono, spaceIdMono, Mono.just(applicationNameString)).zipWith(Mono.just(reactiveTimer)).map(tuple -> {
            tuple.getT2().start();
            return tuple.getT1();
        }).flatMap(triple -> {
            return this.cfAccessor.retrieveApplicationId(triple.getT1(), triple.getT2(), triple.getT3());
        }).flatMap(response -> {
            List<ApplicationResource> resources = response.getResources();
            if (resources == null) {
                return Mono.empty();
            }
            if (resources.isEmpty()) {
                log.warn(String.format("Received empty result on requesting application %s", applicationNameString));
                return Mono.empty();
            }
            ApplicationResource applicationResource = resources.get(0);
            return Mono.just(applicationResource.getMetadata().getId());
        }).zipWith(Mono.just(reactiveTimer)).map(tuple -> {
            tuple.getT2().stop();
            return tuple.getT1();
        }).cache();
        this.applicationMap.put(key, cached);
        return cached;
    }
}
Also used : RouteEntity(org.cloudfoundry.client.v2.routes.RouteEntity) Target(org.cloudfoundry.promregator.config.Target) Autowired(org.springframework.beans.factory.annotation.Autowired) SharedDomainEntity(org.cloudfoundry.client.v2.shareddomains.SharedDomainEntity) ListProcessesResponse(org.cloudfoundry.client.v3.processes.ListProcessesResponse) Mono(reactor.core.publisher.Mono) CFAccessor(org.cloudfoundry.promregator.cfaccessor.CFAccessor) SpaceResource(org.cloudfoundry.client.v2.spaces.SpaceResource) TimeUnit(java.util.concurrent.TimeUnit) Value(org.springframework.beans.factory.annotation.Value) PassiveExpiringMap(org.apache.commons.collections4.map.PassiveExpiringMap) Logger(org.apache.log4j.Logger) Flux(reactor.core.publisher.Flux) List(java.util.List) Component(org.springframework.stereotype.Component) ApplicationResource(org.cloudfoundry.client.v2.applications.ApplicationResource) Timer(io.prometheus.client.Histogram.Timer) ProcessResource(org.cloudfoundry.client.v3.processes.ProcessResource) PostConstruct(javax.annotation.PostConstruct) OrganizationResource(org.cloudfoundry.client.v2.organizations.OrganizationResource) LinkedList(java.util.LinkedList) InternalMetrics(org.cloudfoundry.promregator.internalmetrics.InternalMetrics) RouteMappingResource(org.cloudfoundry.client.v2.routemappings.RouteMappingResource) ApplicationResource(org.cloudfoundry.client.v2.applications.ApplicationResource)

Aggregations

LinkedList (java.util.LinkedList)2 ApplicationResource (org.cloudfoundry.client.v2.applications.ApplicationResource)2 Timer (io.prometheus.client.Histogram.Timer)1 List (java.util.List)1 TimeUnit (java.util.concurrent.TimeUnit)1 PostConstruct (javax.annotation.PostConstruct)1 PassiveExpiringMap (org.apache.commons.collections4.map.PassiveExpiringMap)1 Logger (org.apache.log4j.Logger)1 ListApplicationsResponse (org.cloudfoundry.client.v2.applications.ListApplicationsResponse)1 OrganizationResource (org.cloudfoundry.client.v2.organizations.OrganizationResource)1 RouteMappingResource (org.cloudfoundry.client.v2.routemappings.RouteMappingResource)1 RouteEntity (org.cloudfoundry.client.v2.routes.RouteEntity)1 SharedDomainEntity (org.cloudfoundry.client.v2.shareddomains.SharedDomainEntity)1 SpaceResource (org.cloudfoundry.client.v2.spaces.SpaceResource)1 ListProcessesResponse (org.cloudfoundry.client.v3.processes.ListProcessesResponse)1 ProcessResource (org.cloudfoundry.client.v3.processes.ProcessResource)1 CFAccessor (org.cloudfoundry.promregator.cfaccessor.CFAccessor)1 Target (org.cloudfoundry.promregator.config.Target)1 InternalMetrics (org.cloudfoundry.promregator.internalmetrics.InternalMetrics)1 Autowired (org.springframework.beans.factory.annotation.Autowired)1