Merge 'origin/casablanca' into master
[so.git] / mso-catalog-db / src / main / java / org / onap / so / db / catalog / client / CatalogDbClient.java
index 8da24c9..828b2ff 100644 (file)
 
 package org.onap.so.db.catalog.client;
 
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.ws.rs.core.UriBuilder;
+
 import org.onap.so.db.catalog.beans.BuildingBlockDetail;
 import org.onap.so.db.catalog.beans.CloudSite;
 import org.onap.so.db.catalog.beans.CloudifyManager;
 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
 import org.onap.so.db.catalog.beans.ControllerSelectionReference;
+import org.onap.so.db.catalog.beans.CvnfcCustomization;
+import org.onap.so.db.catalog.beans.ExternalServiceToInternalService;
+import org.onap.so.db.catalog.beans.HomingInstance;
 import org.onap.so.db.catalog.beans.InstanceGroup;
 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
 import org.onap.so.db.catalog.beans.NetworkRecipe;
@@ -46,6 +57,7 @@ import org.onap.so.db.catalog.beans.VnfcInstanceGroupCustomization;
 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
 import org.onap.so.db.catalog.beans.macro.RainyDayHandlerStatus;
+import org.onap.so.logger.LogConstants;
 import org.onap.so.logging.jaxrs.filter.SpringClientFilter;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
@@ -53,17 +65,11 @@ import org.springframework.http.client.BufferingClientHttpRequestFactory;
 import org.springframework.http.client.ClientHttpRequestFactory;
 import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 import org.springframework.stereotype.Component;
+
 import uk.co.blackpepper.bowman.Client;
 import uk.co.blackpepper.bowman.ClientFactory;
 import uk.co.blackpepper.bowman.Configuration;
 
-import javax.annotation.PostConstruct;
-import javax.ws.rs.core.UriBuilder;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 @Component("CatalogDbClient")
 public class CatalogDbClient {
 
@@ -82,6 +88,7 @@ public class CatalogDbClient {
        private static final String NETWORK_COLLECTION_RESOURCE_CUSTOMIZATION = "/networkCollectionResourceCustomization";
        private static final String VNF_RESOURCE_CUSTOMIZATION = "/vnfResourceCustomization";
        private static final String SERVICE = "/service";
+       private static final String EXTERNAL_SERVICE_TO_INTERNAL_MODEL_MAPPING = "/externalServiceToInternalService";
        private static final String VNF_RESOURCE = "/vnfResource";
        private static final String VNF_RECIPE = "/vnfRecipe";
        private static final String VFMODULE = "/vfModule";
@@ -94,6 +101,8 @@ public class CatalogDbClient {
        private static final String URI_SEPARATOR = "/";
 
        private static final String SERVICE_MODEL_UUID = "serviceModelUUID";
+       private static final String SERVICE_NAME = "serviceName";
+       private static final String MODEL_UUID = "modelUUID";
        private static final String MODEL_CUSTOMIZATION_UUID = "modelCustomizationUUID";
        private static final String ACTION = "action";
        private static final String MODEL_NAME = "modelName";
@@ -110,6 +119,7 @@ public class CatalogDbClient {
        private static final String TARGET_ACTION = "targetAction";
        private static final String REQUEST_SCOPE = "requestScope";
        private static final String IS_ALACARTE = "isALaCarte";
+       private static final String CLOUD_OWNER = "cloudOwner";
        private static final String FLOW_NAME = "flowName";
        private static final String SERVICE_TYPE = "serviceType";
        private static final String VNF_TYPE = "vnfType";
@@ -117,7 +127,15 @@ public class CatalogDbClient {
        private static final String WORK_STEP = "workStep";
        private static final String CLLI = "clli";
        private static final String CLOUD_VERSION = "cloudVersion";
+       private static final String HOMING_INSTANCE = "/homingInstance";
+       
+       private static final String TARGET_ENTITY = "SO:CatalogDB";
+       private static final String ASTERISK = "*";
 
+       private String findExternalToInternalServiceByServiceName = "/findByServiceName";
+       private String findServiceByModelName = "/findOneByModelName";
+       private String findServiceRecipeByActionAndServiceModelUUID = "/findByActionAndServiceModelUUID";
+       private String findServiceByModelUUID = "/findOneByModelUUID";
        private String findFirstByModelNameURI = "/findFirstByModelNameOrderByModelVersionDesc";
        private String findFirstByServiceModelUUIDAndActionURI = "/findFirstByServiceModelUUIDAndAction";
        private String findFirstByModelVersionAndModelInvariantUUIDURI = "/findFirstByModelVersionAndModelInvariantUUID";
@@ -137,8 +155,12 @@ public class CatalogDbClient {
        private String findVnfcInstanceGroupCustomizationByModelCustomizationUUID = "/findByModelCustomizationUUID";
        private String findCollectionResourceInstanceGroupCustomizationByModelCustomizationUUID = "/findByModelCustomizationUUID";
        private String findOneByActionAndRequestScopeAndIsAlacarte = "/findOneByActionAndRequestScopeAndIsAlacarte";
+       private String findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwner = "/findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwner";
+       private String findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType = "/findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType";
        private String findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep = "/findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep";
        private String findByClliAndCloudVersion = "/findByClliAndCloudVersion";
+       private String findServiceByServiceInstanceId = "/findServiceByServiceInstanceId";
+
 
        private String serviceURI;
        private String vfModuleURI;
@@ -151,6 +173,7 @@ public class CatalogDbClient {
        private String instanceGroupURI;
        private String cloudifyManagerURI;
        private String cloudSiteURI;
+       private String homingInstanceURI;
 
        private final Client<Service> serviceClient;
 
@@ -192,9 +215,15 @@ public class CatalogDbClient {
 
        private final Client<ServiceRecipe> serviceRecipeClient;
 
+       private final Client<ExternalServiceToInternalService> externalServiceToInternalServiceClient;
+
        private final Client<CloudSite> cloudSiteClient;
 
+       private final Client<HomingInstance> homingInstanceClient;
+
        private final Client<CloudifyManager> cloudifyManagerClient;
+       
+       private Client<CvnfcCustomization> cvnfcCustomizationClient;
 
        private final Client<ControllerSelectionReference> controllerSelectionReferenceClient;
 
@@ -207,6 +236,10 @@ public class CatalogDbClient {
 
        @PostConstruct
        public void init(){
+               findExternalToInternalServiceByServiceName = endpoint + EXTERNAL_SERVICE_TO_INTERNAL_MODEL_MAPPING + SEARCH + findExternalToInternalServiceByServiceName;
+               findServiceByModelName =  endpoint + SERVICE + SEARCH + findServiceByModelName;
+               findServiceRecipeByActionAndServiceModelUUID = endpoint + SERVICE_RECIPE + SEARCH + findServiceRecipeByActionAndServiceModelUUID;
+               findServiceByModelUUID =  endpoint + SERVICE + SEARCH + findServiceByModelUUID;
                findFirstByModelNameURI = endpoint + SERVICE + SEARCH + findFirstByModelNameURI;
                findFirstByModelVersionAndModelInvariantUUIDURI = endpoint + SERVICE + SEARCH + findFirstByModelVersionAndModelInvariantUUIDURI;
                findByModelInvariantUUIDURI = endpoint + SERVICE + SEARCH + findByModelInvariantUUIDURI;
@@ -226,6 +259,8 @@ public class CatalogDbClient {
                findVnfcInstanceGroupCustomizationByModelCustomizationUUID = endpoint + VNFC_INSTANCE_GROUP_CUSTOMIZATION + SEARCH + findVnfcInstanceGroupCustomizationByModelCustomizationUUID;
                findCollectionResourceInstanceGroupCustomizationByModelCustomizationUUID = endpoint + COLLECTION_RESOURCE_INSTANCE_GROUP_CUSTOMIZATION + SEARCH + findCollectionResourceInstanceGroupCustomizationByModelCustomizationUUID;
                findOneByActionAndRequestScopeAndIsAlacarte = endpoint + NORTHBOUND_REQUEST_REF_LOOKUP + SEARCH + findOneByActionAndRequestScopeAndIsAlacarte;
+               findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwner = endpoint + NORTHBOUND_REQUEST_REF_LOOKUP + SEARCH + findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwner;
+               findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType = endpoint + NORTHBOUND_REQUEST_REF_LOOKUP + SEARCH + findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType;
                findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep = endpoint + RAINY_DAY_HANDLER_MACRO + SEARCH + findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep;
                findByClliAndCloudVersion = endpoint + CLOUD_SITE + SEARCH + findByClliAndCloudVersion;
 
@@ -240,6 +275,8 @@ public class CatalogDbClient {
                instanceGroupURI = endpoint + INSTANCE_GROUP + URI_SEPARATOR;
                cloudifyManagerURI = endpoint + CLOUDIFY_MANAGER + URI_SEPARATOR;
                cloudSiteURI = endpoint + CLOUD_SITE + URI_SEPARATOR;
+               homingInstanceURI = endpoint + HOMING_INSTANCE + URI_SEPARATOR;
+
        }
 
        public CatalogDbClient() {
@@ -251,6 +288,50 @@ public class CatalogDbClient {
                        restTemplate.getInterceptors().add((request, body, execution) -> {
 
                                request.getHeaders().add(HttpHeaders.AUTHORIZATION, msoAdaptersAuth);
+                               request.getHeaders().add(LogConstants.TARGET_ENTITY_HEADER,TARGET_ENTITY);
+                               return execution.execute(request, body);
+                       });
+               }).build().buildClientFactory();
+               serviceClient = clientFactory.create(Service.class);
+               networkRecipeClient = clientFactory.create(NetworkRecipe.class);
+               networkResourceCustomizationClient = clientFactory.create(NetworkResourceCustomization.class);
+               vnfResourceClient = clientFactory.create(VnfResource.class);
+               vnfResourceCustomizationClient = clientFactory.create(VnfResourceCustomization.class);
+               vnfRecipeClient = clientFactory.create(VnfRecipe.class);
+               orchestrationClient = clientFactory.create(OrchestrationFlow.class);
+               vfModuleCustomizationClient = clientFactory.create(VfModuleCustomization.class);
+               vfModuleClient = clientFactory.create(VfModule.class);
+               vnfComponentsRecipeClient = clientFactory.create(VnfComponentsRecipe.class);
+               northBoundRequestClient = clientFactory.create(NorthBoundRequest.class);
+               rainyDayHandlerStatusClient = clientFactory.create(RainyDayHandlerStatus.class);
+               buildingBlockDetailClient = clientFactory.create(BuildingBlockDetail.class);
+               orchestrationStatusStateTransitionDirectiveClient = clientFactory
+                               .create(OrchestrationStatusStateTransitionDirective.class);
+               vnfcInstanceGroupCustomizationClient = clientFactory.create(VnfcInstanceGroupCustomization.class);
+               collectionResourceInstanceGroupCustomizationClient = clientFactory
+                               .create(CollectionResourceInstanceGroupCustomization.class);
+               instanceGroupClient = clientFactory.create(InstanceGroup.class);
+               networkCollectionResourceCustomizationClient = clientFactory.create(NetworkCollectionResourceCustomization.class);
+               collectionNetworkResourceCustomizationClient = clientFactory.create(CollectionNetworkResourceCustomization.class);
+               cloudSiteClient = clientFactory.create(CloudSite.class);
+               homingInstanceClient = clientFactory.create(HomingInstance.class);
+               cloudifyManagerClient = clientFactory.create(CloudifyManager.class);
+               serviceRecipeClient = clientFactory.create(ServiceRecipe.class);
+               cvnfcCustomizationClient = clientFactory.create(CvnfcCustomization.class);
+               controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
+               externalServiceToInternalServiceClient = clientFactory.create(ExternalServiceToInternalService.class);
+       }
+
+       public CatalogDbClient(String baseUri, String auth) {
+               ClientHttpRequestFactory factory = new BufferingClientHttpRequestFactory(new HttpComponentsClientHttpRequestFactory());
+
+               ClientFactory clientFactory = Configuration.builder().setBaseUri(baseUri).setClientHttpRequestFactory(factory).setRestTemplateConfigurer(restTemplate -> {
+                       restTemplate.getInterceptors().add((new SpringClientFilter()));
+
+                       restTemplate.getInterceptors().add((request, body, execution) -> {
+
+                               request.getHeaders().add(HttpHeaders.AUTHORIZATION, auth);
+                               request.getHeaders().add(LogConstants.TARGET_ENTITY_HEADER,TARGET_ENTITY);
                                return execution.execute(request, body);
                        });
                }).build().buildClientFactory();
@@ -276,9 +357,12 @@ public class CatalogDbClient {
                networkCollectionResourceCustomizationClient = clientFactory.create(NetworkCollectionResourceCustomization.class);
                collectionNetworkResourceCustomizationClient = clientFactory.create(CollectionNetworkResourceCustomization.class);
                cloudSiteClient = clientFactory.create(CloudSite.class);
+               homingInstanceClient = clientFactory.create(HomingInstance.class);
                cloudifyManagerClient = clientFactory.create(CloudifyManager.class);
                serviceRecipeClient = clientFactory.create(ServiceRecipe.class);
+               cvnfcCustomizationClient = clientFactory.create(CvnfcCustomization.class);
                controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
+               externalServiceToInternalServiceClient = clientFactory.create(ExternalServiceToInternalService.class);
        }
 
        public NetworkCollectionResourceCustomization getNetworkCollectionResourceCustomizationByID(String modelCustomizationUUID) {
@@ -409,14 +493,34 @@ public class CatalogDbClient {
                                .queryParam(ACTION, requestAction).queryParam(REQUEST_SCOPE, resourceName)
                                .queryParam(IS_ALACARTE, aLaCarte).build());
        }
+       
+       public NorthBoundRequest getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(String requestAction,
+                       String resourceName, boolean aLaCarte, String cloudOwner) {
+               return this.getSingleResource(northBoundRequestClient, getUri(UriBuilder
+                               .fromUri(findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType)
+                               .queryParam(ACTION, requestAction).queryParam(REQUEST_SCOPE, resourceName)
+                               .queryParam(IS_ALACARTE, aLaCarte)
+                               .queryParam(CLOUD_OWNER, cloudOwner)
+                               .queryParam(SERVICE_TYPE, ASTERISK).build().toString()));
+       }
+       
+       public NorthBoundRequest getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(String requestAction,
+                       String resourceName, boolean aLaCarte, String cloudOwner, String serviceType) {
+               return this.getSingleResource(northBoundRequestClient, getUri(UriBuilder
+                               .fromUri(findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType)
+                               .queryParam(ACTION, requestAction).queryParam(REQUEST_SCOPE, resourceName)
+                               .queryParam(IS_ALACARTE, aLaCarte)
+                               .queryParam(CLOUD_OWNER, cloudOwner)
+                               .queryParam(SERVICE_TYPE, serviceType).build().toString()));
+       }
 
        public RainyDayHandlerStatus getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
                        String flowName, String serviceType, String vnfType, String errorCode, String workStep) {
-               return this.getSingleResource(rainyDayHandlerStatusClient, UriBuilder
+               return this.getSingleResource(rainyDayHandlerStatusClient, getUri(UriBuilder
                                .fromUri(findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep)
                                .queryParam(FLOW_NAME, flowName).queryParam(SERVICE_TYPE, serviceType)
                                .queryParam(VNF_TYPE, vnfType).queryParam(ERROR_CODE, errorCode).queryParam(WORK_STEP, workStep)
-                               .build());
+                               .build().toString()));
        }
 
        public  ServiceRecipe getFirstByServiceModelUUIDAndAction(String modelUUID, String action){
@@ -445,6 +549,30 @@ public class CatalogDbClient {
                                .queryParam(MODEL_NAME,modelName).build());
        }
 
+       public ExternalServiceToInternalService findExternalToInternalServiceByServiceName(String serviceName){
+               return this.getSingleResource(externalServiceToInternalServiceClient, getUri(UriBuilder
+                               .fromUri(findExternalToInternalServiceByServiceName)
+                               .queryParam(SERVICE_NAME,serviceName).build().toString()));
+       }
+
+       public  ServiceRecipe findServiceRecipeByActionAndServiceModelUUID(String action,String modelUUID){
+               return this.getSingleResource(serviceRecipeClient, getUri(UriBuilder
+                               .fromUri(findServiceRecipeByActionAndServiceModelUUID)
+                               .queryParam(ACTION,action)
+                               .queryParam(SERVICE_MODEL_UUID,modelUUID).build().toString()));
+       }
+
+       public Service getServiceByModelName(String modelName){
+               return this.getSingleResource(serviceClient,getUri(UriBuilder
+                               .fromUri(findServiceByModelName)
+                               .queryParam(MODEL_NAME,modelName).build().toString()));
+       }
+
+       public Service getServiceByModelUUID(String modelModelUUID){
+               return this.getSingleResource(serviceClient,getUri(UriBuilder
+                               .fromUri(findServiceByModelUUID)
+                               .queryParam(MODEL_UUID,modelModelUUID).build().toString()));
+       }
 
        public VnfResource getFirstVnfResourceByModelInvariantUUIDAndModelVersion(String modelInvariantUUID, String modelVersion){
                return this.getSingleResource(vnfResourceClient, getUri(UriBuilder
@@ -491,7 +619,17 @@ public class CatalogDbClient {
        }
 
        public CloudSite getCloudSite(String id){
-               return this.getSingleResource(cloudSiteClient, getUri(cloudSiteURI + id));
+               return this.getSingleResource(cloudSiteClient,
+                               getUri(cloudSiteURI + id));
+       }
+
+       public CloudSite getCloudSite(String id, String uri){
+               return this.getSingleResource(cloudSiteClient,
+                               getUri(uri + id));
+       }
+
+       public void postCloudSite(CloudSite cloudSite){
+               this.postSingleResource(cloudSiteClient, cloudSite);
        }
 
        public CloudSite getCloudSiteByClliAndAicVersion (String clli, String cloudVersion){
@@ -500,6 +638,20 @@ public class CatalogDbClient {
                                .queryParam(CLLI,clli).queryParam(CLOUD_VERSION,cloudVersion).build().toString()));
        }
 
+       public HomingInstance getHomingInstance (String serviceInstanceId){
+               return this.getSingleResource(homingInstanceClient,
+                               getUri(homingInstanceURI + serviceInstanceId));
+       }
+
+       public HomingInstance getHomingInstance (String serviceInstanceId, String uri){
+               return this.getSingleResource(homingInstanceClient,
+                               getUri(uri + serviceInstanceId));
+       }
+
+       public void postHomingInstance(HomingInstance homingInstance){
+               this.postSingleResource(homingInstanceClient, homingInstance);
+       }
+
        public Service getServiceByModelVersionAndModelInvariantUUID(String modelVersion, String modelInvariantUUID) {
                return this.getSingleResource(serviceClient, getUri(UriBuilder
                                .fromUri(findFirstByModelVersionAndModelInvariantUUIDURI)
@@ -538,4 +690,23 @@ public class CatalogDbClient {
                return list;
        }
 
+       private <T> URI postSingleResource(Client<T> client, T type){
+               return client.post(type);
+       }
+       
+       public List<CvnfcCustomization> getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID(String vnfCustomizationUUID, String vfModuleCustomizationUUID){
+               return this.getMultipleVnfcCustomizations(
+                               UriBuilder.fromUri(endpoint + "/vnfcCustomization/search/findByVnfCustomizationUUIDAndVfModuleCustomizationUUID")
+                                               .queryParam("VNF_CUSTOMIZATION_UUID", vnfCustomizationUUID)
+                                               .queryParam("VFMODULE_CUSTOMIZATION_UUID", vfModuleCustomizationUUID).build());
+       }
+       
+       private List<CvnfcCustomization> getMultipleVnfcCustomizations(URI uri) {
+               Iterable<CvnfcCustomization> vnfcIterator = cvnfcCustomizationClient.getAll(uri);
+               List<CvnfcCustomization> vnfcList = new ArrayList<>();
+               Iterator<CvnfcCustomization> it = vnfcIterator.iterator();
+               it.forEachRemaining(vnfcList::add);
+               return vnfcList;
+       }
+
 }