Merge "Added actions to common APIH package"
authorSeshu Kumar M <seshu.kumar.m@huawei.com>
Mon, 27 Aug 2018 09:34:20 +0000 (09:34 +0000)
committerGerrit Code Review <gerrit@onap.org>
Mon, 27 Aug 2018 09:34:20 +0000 (09:34 +0000)
19 files changed:
adapters/mso-adapters-rest-interface/.gitignore [new file with mode: 0644]
adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.4__CreateTableControllerSelectionRefence.sql [new file with mode: 0644]
adapters/mso-openstack-adapters/.gitignore
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofHoming.groovy
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofUtils.groovy
bpmn/MSORESTClient/src/test/java/org/onap/so/rest/RESTClientTest.java
cloudify-client/.gitignore [new file with mode: 0644]
common/.gitignore
common/src/main/java/org/onap/so/client/RestClient.java
common/src/main/java/org/onap/so/client/RestRequest.java
deployment-configs/.gitignore [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/.gitignore [new file with mode: 0644]
mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ControllerSelectionReference.java [new file with mode: 0644]
mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ControllerSelectionReferenceId.java [new file with mode: 0644]
mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/ControllerSelectionReferenceRepository.java [new file with mode: 0644]
mso-catalog-db/src/test/java/org/onap/so/db/catalog/ControllerSelectionReferenceTest.java [new file with mode: 0644]
mso-catalog-db/src/test/resources/data.sql
mso-catalog-db/src/test/resources/schema.sql

diff --git a/adapters/mso-adapters-rest-interface/.gitignore b/adapters/mso-adapters-rest-interface/.gitignore
new file mode 100644 (file)
index 0000000..ae3c172
--- /dev/null
@@ -0,0 +1 @@
+/bin/
diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.4__CreateTableControllerSelectionRefence.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.4__CreateTableControllerSelectionRefence.sql
new file mode 100644 (file)
index 0000000..dbeba53
--- /dev/null
@@ -0,0 +1,8 @@
+use catalogdb;
+CREATE TABLE IF NOT EXISTS `controller_selection_reference` (
+  `VNF_TYPE` VARCHAR(50) NOT NULL,
+  `CONTROLLER_NAME` VARCHAR(100) NOT NULL,
+  `ACTION_CATEGORY` VARCHAR(15) NOT NULL,
+  PRIMARY KEY (`VNF_TYPE`, `CONTROLLER_NAME`, `ACTION_CATEGORY`)
+  ) ENGINE = InnoDB DEFAULT CHARSET=latin1;
index 2af7cef..3467f05 100644 (file)
@@ -21,4 +21,5 @@ build/
 nbbuild/
 dist/
 nbdist/
-.nb-gradle/
\ No newline at end of file
+.nb-gradle/
+/bin/
index c7fcc5c..35e68bb 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP - SO
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018 Intel Corp. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
index 7c5ffca..8ce6338 100644 (file)
@@ -2,14 +2,14 @@
  * ============LICENSE_START=======================================================
  * ONAP - SO
  * ================================================================================
- * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018 Intel Corp. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -82,20 +82,20 @@ class OofUtils {
         //ServiceInstance Info
         ServiceInstance serviceInstance = decomposition.getServiceInstance()
         def serviceInstanceId = ""
-        def serviceInstanceName = ""
+        def serviceName = ""
 
         serviceInstanceId = execution.getVariable("serviceInstanceId")
-        serviceInstanceName = execution.getVariable("serviceInstanceName")
+        serviceName = execution.getVariable("subscriptionServiceType")
 
         if (serviceInstanceId == null || serviceInstanceId == "null") {
             utils.log("DEBUG", "Unable to obtain Service Instance Id", isDebugEnabled)
             exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Internal Error - Unable to " +
-                    "obtain Service Instance Id, execution.getVariable(\"serviceInstanceName\") is null")
+                    "obtain Service Instance Id, execution.getVariable(\"serviceInstanceId\") is null")
         }
-        if (serviceInstanceName == null || serviceInstanceName == "null") {
-            utils.log("DEBUG", "Unable to obtain Service Instance Name", isDebugEnabled)
+        if (serviceName == null || serviceName == "null") {
+            utils.log("DEBUG", "Unable to obtain Service Name", isDebugEnabled)
             exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Internal Error - Unable to " +
-                    "obtain Service Instance Name, execution.getVariable(\"serviceInstanceName\") is null")
+                    "obtain Service Name, execution.getVariable(\"subscriptionServiceType\") is null")
         }
         //Model Info
         ModelInfo model = decomposition.getModelInfo()
@@ -144,24 +144,12 @@ class OofUtils {
                 utils.log("DEBUG", "Allotted Resource: " + resource.toString(),
                         isDebugEnabled)
                 def serviceResourceId = resource.getResourceId()
-                def resourceModuleName = resource.getNfFunction()
-                utils.log("DEBUG", "resourceModuleName: " + resourceModuleName,
-                        isDebugEnabled)
-                def resourceModelInvariantId = "no-resourceModelInvariantId"
-                def resourceModelVersionId = "no-resourceModelVersionId"
-
-                List modelIdLst = execution.getVariable("homingModelIds")
-                utils.log("DEBUG", "Incoming modelIdLst is: " + modelIdLst.toString(), isDebugEnabled)
-                for (Map modelId : modelIdLst )
-                    if (resourceModuleName == modelId.resourceModuleName) {
-                        resourceModelInvariantId = modelId.resourceModelInvariantId
-                        resourceModelVersionId = modelId.resourceModelVersionId
-                    }
-
-                def resourceModelName = "" //Optional
-                def resourceModelVersion = "" //Optional
-                def resourceModelType = "" //Optional
-                def tenantId = "" //Optional
+                def resourceModelInvariantId = resource.getModelInfo().getModelInvariantUuid()
+                def resourceModelVersionId = resource.getModelInfo().getModelUuid()
+                def resourceModelName = resource.getModelInfo().getModelName()
+                def resourceModelVersion = resource.getModelInfo().getModelVersion()
+                def resourceModelType = resource.getModelInfo().getModelType()
+                def tenantId = execution.getVariable("tenantId")
                 def requiredCandidatesJson = ""
 
                 requiredCandidatesJson = createCandidateJson(
@@ -171,7 +159,7 @@ class OofUtils {
 
                 String demand =
                         "      {\n" +
-                        "      \"resourceModuleName\": \"${resourceModuleName}\",\n" +
+                        "      \"resourceModuleName\": \"${resourceModelName}\",\n" +
                         "      \"serviceResourceId\": \"${serviceResourceId}\",\n" +
                         "      \"tenantId\": \"${tenantId}\",\n" +
                         "      \"resourceModelInfo\": {\n" +
@@ -191,21 +179,18 @@ class OofUtils {
                         isDebugEnabled)
                 ModelInfo vnfResourceModelInfo = vnfResource.getModelInfo()
                 def serviceResourceId = vnfResource.getResourceId()
-                def resourceModuleName = vnfResource.getNfFunction()
-                utils.log("DEBUG", "resourceModuleName: " + resourceModuleName,
-                        isDebugEnabled)
                 def resourceModelInvariantId = vnfResourceModelInfo.getModelInvariantUuid()
                 def resourceModelName = vnfResourceModelInfo.getModelName()
                 def resourceModelVersion = vnfResourceModelInfo.getModelVersion()
                 def resourceModelVersionId = vnfResourceModelInfo.getModelUuid()
                 def resourceModelType = vnfResourceModelInfo.getModelType()
-                def tenantId = "" //Optional
+                def tenantId = execution.getVariable("tenantId")
                 def requiredCandidatesJson = ""
 
 
                 String placementDemand =
                         "      {\n" +
-                        "      \"resourceModuleName\": \"${resourceModuleName}\",\n" +
+                        "      \"resourceModuleName\": \"${resourceModelName}\",\n" +
                         "      \"serviceResourceId\": \"${serviceResourceId}\",\n" +
                         "      \"tenantId\": \"${tenantId}\",\n" +
                         "      \"resourceModelInfo\": {\n" +
@@ -297,7 +282,7 @@ class OofUtils {
                 "    },\n" +
                 "  \"serviceInfo\": {\n" +
                 "    \"serviceInstanceId\": \"${serviceInstanceId}\",\n" +
-                "    \"serviceName\": \"${serviceInstanceName}\",\n" +
+                "    \"serviceName\": \"${serviceName}\",\n" +
                 "    \"modelInfo\": {\n" +
                 "      \"modelType\": \"${modelType}\",\n" +
                 "      \"modelInvariantId\": \"${modelInvariantId}\",\n" +
index bbdaa94..17ede2f 100644 (file)
@@ -51,7 +51,8 @@ public class RESTClientTest {
        private String jsonResponseAsString;
        
        @Rule
-       public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(28090));      
+       public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().dynamicPort());    
+       
        
        @Before
        public void before() throws Exception {
@@ -62,7 +63,7 @@ public class RESTClientTest {
                jsonResponse = new JSONObject();
                jsonResponse.put("response", "responseValue");
                jsonResponseAsString = jsonResponse.toString(); 
-               restClient = new RESTClient("http://localhost:28090/example", "localhost", 28090);
+               restClient = new RESTClient("http://localhost:" + wireMockRule.port() + "/example", "localhost", wireMockRule.port());
        }       
        
        @Test
@@ -79,9 +80,9 @@ public class RESTClientTest {
                assertEquals(1, restClient.getParameters().size());
                restClient.addAuthorizationHeader("token");  
                assertEquals("[token]", restClient.getHeaders().get("Authorization").toString());               
-               assertEquals("http://localhost:28090/example", restClient.getURL());
-               restClient = new RESTClient("http://localhost:28090/example1");
-               assertEquals("http://localhost:28090/example1", restClient.getURL());
+               assertEquals("http://localhost:" + wireMockRule.port() + "/example", restClient.getURL());
+               restClient = new RESTClient("http://localhost:" + wireMockRule.port() + "/example1");
+               assertEquals("http://localhost:" + wireMockRule.port() + "/example1", restClient.getURL());
        }
        
        @Test
diff --git a/cloudify-client/.gitignore b/cloudify-client/.gitignore
new file mode 100644 (file)
index 0000000..ae3c172
--- /dev/null
@@ -0,0 +1 @@
+/bin/
index a791146..c2a9623 100644 (file)
@@ -1 +1,2 @@
 /tattletale-jar/
+/bin/
index 79fd7df..0f4bbea 100644 (file)
@@ -153,6 +153,10 @@ public abstract class RestClient {
                }
                return builder;
        }
+       
+       protected WebTarget getWebTarget() {
+               return this.webTarget;
+       }
 
        protected abstract void initializeHeaderMap(Map<String, String> headerMap);
 
index 985d7cc..4788acf 100644 (file)
@@ -73,7 +73,7 @@ public class RestRequest implements Callable<Response> {
                                mapper.get().map(response);
                        } catch (NotFoundException e) {
                                if (this.client.props.mapNotFoundToEmpty() && "GET".equals(method)) {
-                                       msoLogger.error(e);
+                                       msoLogger.debug("RestClient recieved not found on URL: " + this.client.getWebTarget().getUri());
                                        return response;
                                } else {
                                        throw e;
diff --git a/deployment-configs/.gitignore b/deployment-configs/.gitignore
new file mode 100644 (file)
index 0000000..ae3c172
--- /dev/null
@@ -0,0 +1 @@
+/bin/
diff --git a/mso-api-handlers/mso-api-handler-infra/.gitignore b/mso-api-handlers/mso-api-handler-infra/.gitignore
new file mode 100644 (file)
index 0000000..ae3c172
--- /dev/null
@@ -0,0 +1 @@
+/bin/
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ControllerSelectionReference.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ControllerSelectionReference.java
new file mode 100644 (file)
index 0000000..de0dd39
--- /dev/null
@@ -0,0 +1,106 @@
+package org.onap.so.db.catalog.beans;
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.Table;
+
+import com.openpojo.business.annotation.BusinessKey;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+
+@IdClass(ControllerSelectionReferenceId.class)
+@Entity
+@Table(name = "CONTROLLER_SELECTION_REFERENCE")
+public class ControllerSelectionReference implements Serializable {
+
+       private static final long serialVersionUID = -608098800737567188L;
+       
+       @BusinessKey
+       @Id
+       @Column(name = "VNF_TYPE")
+       private String vnfType;
+       
+       @BusinessKey
+       @Id
+       @Column(name = "CONTROLLER_NAME")
+    private String controllerName;
+       
+       @BusinessKey
+       @Id
+       @Column(name = "ACTION_CATEGORY")
+    private String actionCategory;
+
+       
+       public String getVnfType() {
+               return vnfType;
+       }
+       public void setVnfType(String vnfType) {
+               this.vnfType = vnfType;
+       }
+       public String getControllerName() {
+               return controllerName;
+       }
+       public void setControllerName(String controllerName) {
+               this.controllerName = controllerName;
+       }
+       public String getActionCategory() {
+               return actionCategory;
+       }
+       public void setActionCategory(String actionCategory) {
+               this.actionCategory = actionCategory;
+       }       
+       
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public String toString() {
+               return new ToStringBuilder(this).append("vnfType", vnfType).append("controllerName", controllerName)
+                               .append("actionCategory", actionCategory).toString();
+       }
+       
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public boolean equals(final Object other) {
+               if (!(other instanceof ControllerSelectionReference)) {
+                       return false;
+               }
+               ControllerSelectionReference castOther = (ControllerSelectionReference) other;
+               return new EqualsBuilder().append(vnfType, castOther.vnfType).append(controllerName, castOther.controllerName)
+                               .append(actionCategory, castOther.actionCategory).isEquals();
+       }
+       
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public int hashCode() {
+               return new HashCodeBuilder().append(vnfType).append(controllerName).append(actionCategory).toHashCode();
+       }
+}
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ControllerSelectionReferenceId.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ControllerSelectionReferenceId.java
new file mode 100644 (file)
index 0000000..e6ee349
--- /dev/null
@@ -0,0 +1,83 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.db.catalog.beans;
+
+import java.io.Serializable;
+
+import com.openpojo.business.annotation.BusinessKey;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+
+
+public class ControllerSelectionReferenceId implements Serializable {
+
+       private static final long serialVersionUID = 1L;
+       @BusinessKey
+       private String vnfType;
+       @BusinessKey
+    private String controllerName;
+       @BusinessKey
+    private String actionCategory;
+
+       
+       @Override
+       public boolean equals(final Object other) {
+               if (!(other instanceof ControllerSelectionReferenceId)) {
+                       return false;
+               }
+               ControllerSelectionReferenceId castOther = (ControllerSelectionReferenceId) other;
+               return new EqualsBuilder().append(vnfType, castOther.vnfType).append(controllerName, castOther.controllerName)
+                               .append(actionCategory, castOther.actionCategory).isEquals();
+       }
+       
+       @Override
+       public int hashCode() {
+               return new HashCodeBuilder().append(vnfType).append(controllerName).append(actionCategory).toHashCode();
+       }
+
+       @Override
+       public String toString() {
+               return new ToStringBuilder(this).append("vnfType", vnfType).append("controllerName", controllerName)
+                               .append("actionCategory", actionCategory).toString();
+       }
+       
+       public String getVnfType() {
+               return vnfType;
+       }
+       public void setVnfType(String vnfType) {
+               this.vnfType = vnfType;
+       }
+       public String getControllerName() {
+               return controllerName;
+       }
+       public void setControllerName(String controllerName) {
+               this.controllerName = controllerName;
+       }
+       public String getActionCategory() {
+               return actionCategory;
+       }
+       public void setActionCategory(String actionCategory) {
+               this.actionCategory = actionCategory;
+       }       
+       
+
+}
index 3b1535d..e43fc17 100644 (file)
@@ -23,6 +23,7 @@ package org.onap.so.db.catalog.client;
 import org.onap.so.db.catalog.beans.BuildingBlockDetail;
 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.InstanceGroup;
 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
 import org.onap.so.db.catalog.beans.OrchestrationAction;
@@ -102,6 +103,8 @@ public class CatalogDbClient {
 
        private Client<CloudifyManager> cloudifyManagerClient;
 
+       protected Client<ControllerSelectionReference> controllerSelectionReferenceClient;
+
        @Value("${mso.catalog.db.spring.endpoint}")
        private String endpoint;
 
@@ -145,6 +148,7 @@ public class CatalogDbClient {
                cloudIdentityClient = clientFactory.create(CloudIdentity.class);
                cloudifyManagerClient = clientFactory.create(CloudifyManager.class);
                serviceRecipeClient = clientFactory.create(ServiceRecipe.class);
+               controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
        }
        
        public NetworkCollectionResourceCustomization getNetworkCollectionResourceCustomizationByID(String modelCustomizationUUID) {
@@ -296,6 +300,18 @@ public class CatalogDbClient {
                                .build());
        }
        
+       public ControllerSelectionReference getControllerSelectionReferenceByVnfType(String vnfType) {
+               return this.getSingleControllerSelectionReference(UriBuilder
+                               .fromUri(endpoint + "/controllerSelectionReference/search/findControllerSelectionReferenceByVnfType")
+                                               .queryParam("VNF_TYPE", vnfType).build());
+
+       }
+       
+       public ControllerSelectionReference getControllerSelectionReferenceByVnfTypeAndActionCategory(String vnfType, String actionCategory) {
+               return this.getSingleControllerSelectionReference(UriBuilder
+                               .fromUri(endpoint + "/controllerSelectionReference/search/findControllerSelectionReferenceByVnfTypeAndActionCategory")
+                                               .queryParam("VNF_TYPE", vnfType).queryParam("ACTION_CATEGORY", actionCategory).build());
+       }
        
        private CollectionNetworkResourceCustomization getSingleCollectionNetworkResourceCustomization(URI uri) {
                return collectionNetworkResourceCustomizationClient.get(uri);
@@ -355,6 +371,10 @@ public class CatalogDbClient {
                return cloudifyManagerClient.get(uri);
        }
 
+       private ControllerSelectionReference getSingleControllerSelectionReference(URI uri) {
+               return controllerSelectionReferenceClient.get(uri);
+       }
+
        public Service getServiceByModelVersionAndModelInvariantUUID(String modelVersion, String modelInvariantUUID) {
                return this.getSingleService(
                                UriBuilder.fromUri(findByModelVersionAndModelInvariantUUIDURI)
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/ControllerSelectionReferenceRepository.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/ControllerSelectionReferenceRepository.java
new file mode 100644 (file)
index 0000000..ad1bbc3
--- /dev/null
@@ -0,0 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.db.catalog.data.repository;
+
+
+import org.onap.so.db.catalog.beans.ControllerSelectionReference;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.query.Param;
+import org.springframework.data.rest.core.annotation.RepositoryRestResource;
+
+       @RepositoryRestResource(collectionResourceRel = "controllerSelectionReference", path = "controllerSelectionReference")
+       public interface ControllerSelectionReferenceRepository extends JpaRepository<ControllerSelectionReference, String> {
+               
+               public ControllerSelectionReference findControllerSelectionReferenceByVnfType(@Param("VNF_TYPE") String vnfType);
+               
+               public ControllerSelectionReference findControllerSelectionReferenceByVnfTypeAndActionCategory(@Param("VNF_TYPE") String vnfType, 
+                               @Param("ACTION_CATEGORY") String actionCategory);
+               
+       }
\ No newline at end of file
diff --git a/mso-catalog-db/src/test/java/org/onap/so/db/catalog/ControllerSelectionReferenceTest.java b/mso-catalog-db/src/test/java/org/onap/so/db/catalog/ControllerSelectionReferenceTest.java
new file mode 100644 (file)
index 0000000..f793fd7
--- /dev/null
@@ -0,0 +1,80 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.db.catalog;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.so.TestApplication;
+import org.onap.so.db.catalog.beans.ControllerSelectionReference;
+import org.onap.so.db.catalog.data.repository.ControllerSelectionReferenceRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@ActiveProfiles("test")
+public class ControllerSelectionReferenceTest {
+
+       @Autowired
+       private ControllerSelectionReferenceRepository controllerSelectionReferenceRepository;
+       
+       
+       @Test
+       public void Find_ControllerNameByVnfType_Test() {
+               String vnfType = "vLoadBalancerMS/vLoadBalancerMS 0";
+               String controllerName = "APPC";
+               ControllerSelectionReference controller = controllerSelectionReferenceRepository.findControllerSelectionReferenceByVnfType(vnfType);
+               assertEquals(vnfType, controller.getVnfType());
+               assertEquals(controllerName, controller.getControllerName());
+       }
+       
+       @Test
+       public void Find_ControllerNameByVnfTypeAndAction_Test() {
+               String vnfType = "vLoadBalancerMS/vLoadBalancerMS 0";
+               String controllerName = "APPC";
+               String actionCategory = "ConfigScaleOut";
+               ControllerSelectionReference controller = 
+                               controllerSelectionReferenceRepository.findControllerSelectionReferenceByVnfTypeAndActionCategory(vnfType, actionCategory);
+               assertEquals(vnfType, controller.getVnfType());
+               assertEquals(controllerName, controller.getControllerName());
+               assertEquals(actionCategory, controller.getActionCategory());
+       }
+       
+       @Test
+       public final void controllerDataTest() {
+               ControllerSelectionReference controller = new ControllerSelectionReference();
+
+               controller.setVnfType("vnfType");
+               assertTrue(controller.getVnfType().equalsIgnoreCase("vnfType"));
+
+               controller.setControllerName("controllerName");
+               assertTrue(controller.getControllerName().equalsIgnoreCase("controllerName"));
+
+               controller.setActionCategory("actionCategory");
+               assertTrue(controller.getActionCategory().equalsIgnoreCase("actionCategory"));
+       }
+}
index e16ca0f..58bde0e 100644 (file)
@@ -642,9 +642,11 @@ VALUES
 ('CUSTOM', 'PENDING_DELETE', 'CUSTOM', 'CONTINUE'),
 ('CUSTOM', 'PRECREATED', 'CUSTOM', 'CONTINUE');
 
-
 INSERT INTO `cloudify_managers` (`ID`, `CLOUDIFY_URL`, `USERNAME`, `PASSWORD`, `VERSION`, `LAST_UPDATED_BY`, `CREATION_TIMESTAMP`, `UPDATE_TIMESTAMP`) VALUES ('mtn13', 'http://localhost:28090/v2.0', 'm93945', '93937EA01B94A10A49279D4572B48369', NULL, 'MSO_USER', '2018-07-17 14:05:08', '2018-07-17 14:05:08');
 
 INSERT INTO `identity_services` (`ID`, `IDENTITY_URL`, `MSO_ID`, `MSO_PASS`, `ADMIN_TENANT`, `MEMBER_ROLE`, `TENANT_METADATA`, `IDENTITY_SERVER_TYPE`, `IDENTITY_AUTHENTICATION_TYPE`, `LAST_UPDATED_BY`, `CREATION_TIMESTAMP`, `UPDATE_TIMESTAMP`) VALUES ('MTN13', 'http://localhost:28090/v2.0', 'm93945', '93937EA01B94A10A49279D4572B48369', 'admin', 'admin', 1, 'KEYSTONE', 'USERNAME_PASSWORD', 'MSO_USER', '2018-07-17 14:02:33', '2018-07-17 14:02:33');
 
-INSERT INTO `cloud_sites` (`ID`, `REGION_ID`, `IDENTITY_SERVICE_ID`, `CLOUD_VERSION`, `CLLI`, `CLOUDIFY_ID`, `PLATFORM`, `ORCHESTRATOR`, `LAST_UPDATED_BY`, `CREATION_TIMESTAMP`, `UPDATE_TIMESTAMP`) VALUES ('mtn13', 'mtn13', 'MTN13', '2.5', 'MDT13', 'mtn13', NULL, 'orchestrator', 'MSO_USER', '2018-07-17 14:06:28', '2018-07-17 14:06:28');
\ No newline at end of file
+INSERT INTO `cloud_sites` (`ID`, `REGION_ID`, `IDENTITY_SERVICE_ID`, `CLOUD_VERSION`, `CLLI`, `CLOUDIFY_ID`, `PLATFORM`, `ORCHESTRATOR`, `LAST_UPDATED_BY`, `CREATION_TIMESTAMP`, `UPDATE_TIMESTAMP`) VALUES ('mtn13', 'mtn13', 'MTN13', '2.5', 'MDT13', 'mtn13', NULL, 'orchestrator', 'MSO_USER', '2018-07-17 14:06:28', '2018-07-17 14:06:28');
+
+INSERT INTO `controller_selection_reference` (`VNF_TYPE`, `CONTROLLER_NAME`, `ACTION_CATEGORY`) VALUES
+('vLoadBalancerMS/vLoadBalancerMS 0', 'APPC', 'ConfigScaleOut');
index 8ff04ea..8a4b1f2 100644 (file)
@@ -822,6 +822,13 @@ create table if not exists model (
        FOREIGN KEY (`RECIPE`) REFERENCES `model_recipe` (`MODEL_ID`) ON DELETE CASCADE ON UPDATE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
+CREATE TABLE IF NOT EXISTS `controller_selection_reference` (
+  `VNF_TYPE` VARCHAR(50) NOT NULL,
+  `CONTROLLER_NAME` VARCHAR(100) NOT NULL,
+  `ACTION_CATEGORY` VARCHAR(15) NOT NULL,
+  PRIMARY KEY (`VNF_TYPE`, `CONTROLLER_NAME`, `ACTION_CATEGORY`)
+) ;
+
 ALTER TABLE `vnf_recipe` 
 CHANGE COLUMN `VNF_TYPE` `NF_ROLE` VARCHAR(200) NULL DEFAULT NULL ;
 
@@ -841,7 +848,6 @@ CREATE TABLE IF NOT EXISTS `identity_services` (
   PRIMARY KEY (`ID`)
 ) ;
 
-
 CREATE TABLE IF NOT EXISTS `cloudify_managers` (
   `ID` varchar(50) NOT NULL,
   `CLOUDIFY_URL` varchar(200) DEFAULT NULL,
@@ -854,9 +860,6 @@ CREATE TABLE IF NOT EXISTS `cloudify_managers` (
   PRIMARY KEY (`ID`)
 ) ;
 
-
-
-
 CREATE TABLE IF NOT EXISTS `cloud_sites` (
   `ID` varchar(50) NOT NULL,
   `REGION_ID` varchar(11)  DEFAULT NULL,
@@ -872,4 +875,4 @@ CREATE TABLE IF NOT EXISTS `cloud_sites` (
   PRIMARY KEY (`ID`),
   KEY `FK_cloud_sites_identity_services` (`IDENTITY_SERVICE_ID`),
   CONSTRAINT `FK_cloud_sites_identity_services` FOREIGN KEY (`IDENTITY_SERVICE_ID`) REFERENCES `identity_services` (`ID`)
-) ;
\ No newline at end of file
+) ;