Pass rAppInstanceId to k8s participant and create the invoker with the instance Id 89/12589/3
authoraravind.est <aravindhan.a@est.tech>
Fri, 1 Mar 2024 17:04:39 +0000 (17:04 +0000)
committeraravind.est <aravindhan.a@est.tech>
Mon, 4 Mar 2024 13:08:17 +0000 (13:08 +0000)
rAppInstanceId and Sme discovery endpoint has been passed to k8s participant.
The invoker gets created as part of the rApp instance is using rApp instance Id as invoker id.

Issue-ID: NONRTRIC-988
Change-Id: Iff684bcec554a004b3e4b8e5a2728148941a7a4f
Signed-off-by: aravind.est <aravindhan.a@est.tech>
24 files changed:
rapp-manager-acm/src/main/java/com/oransc/rappmanager/acm/service/AcmDeployer.java
rapp-manager-acm/src/test/java/com/oransc/rappmanager/acm/service/AcmDeployerTest.java
rapp-manager-acm/src/test/resources/application.yaml
rapp-manager-application/src/main/resources/application.yaml
rapp-manager-dme/src/test/java/com/oransc/rappmanager/dme/service/DmeAcmInterceptorTest.java
rapp-manager-dme/src/test/java/com/oransc/rappmanager/dme/service/DmeDeployerTest.java
rapp-manager-models/src/main/java/com/oransc/rappmanager/models/configuration/RappsEnvironmentConfiguration.java [new file with mode: 0644]
rapp-manager-models/src/main/java/com/oransc/rappmanager/models/csar/RappCsarConfigurationHandler.java
rapp-manager-models/src/test/java/com/oransc/rappmanager/models/RappServiceEnablerTest.java
rapp-manager-models/src/test/java/com/oransc/rappmanager/models/csar/RappCsarConfigurationHandlerTest.java
rapp-manager-models/src/test/java/com/oransc/rappmanager/models/csar/validator/ArtifactDefinitionValidatorTest.java
rapp-manager-models/src/test/java/com/oransc/rappmanager/models/csar/validator/AsdDescriptorValidatorTest.java
rapp-manager-models/src/test/java/com/oransc/rappmanager/models/csar/validator/FileExistenceValidatorTest.java
rapp-manager-models/src/test/java/com/oransc/rappmanager/models/csar/validator/RappValidationHandlerTest.java
rapp-manager-models/src/test/java/com/oransc/rappmanager/models/csar/validator/RappValidationUtilsTest.java
rapp-manager-models/src/test/resources/application.yaml [new file with mode: 0644]
rapp-manager-models/src/test/resources/valid-rapp-package.csar
rapp-manager-sme/src/main/java/com/oransc/rappmanager/sme/service/SmeDeployer.java
rapp-manager-sme/src/test/java/com/oransc/rappmanager/sme/service/SmeDeployerTest.java
sample-rapp-generator/rapp-all/Files/Acm/instances/all-instance.json
sample-rapp-generator/rapp-all/Files/Acm/instances/k8s-instance.json
sample-rapp-generator/rapp-all/Files/Sme/invokers/invoker-app1.json
sample-rapp-generator/rapp-all/Files/Sme/invokers/invoker-app2.json
sample-rapp-generator/rapp-hello-world/Files/Acm/instances/k8s-instance.json

index c1a035c..dce7be8 100755 (executable)
@@ -133,8 +133,7 @@ public class AcmDeployer implements RappDeployer {
     @Override
     public boolean deployRappInstance(Rapp rapp, RappInstance rappInstance) {
         try {
-            String instantiationPayload =
-                    rappCsarConfigurationHandler.getInstantiationPayload(rapp, rappInstance.getAcm(),
+            String instantiationPayload = rappCsarConfigurationHandler.getInstantiationPayload(rapp, rappInstance,
                             rapp.getCompositionId());
             AutomationComposition automationComposition =
                     gson.fromJson(instantiationPayload, AutomationComposition.class);
index 30c77a1..5f6b509 100755 (executable)
@@ -37,6 +37,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.oransc.rappmanager.acm.configuration.ACMConfiguration;
 import com.oransc.rappmanager.dme.service.DmeAcmInterceptor;
 import com.oransc.rappmanager.models.cache.RappCacheService;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
 import com.oransc.rappmanager.models.rapp.Rapp;
 import com.oransc.rappmanager.models.rapp.RappEvent;
@@ -78,8 +79,8 @@ import org.springframework.web.client.RestTemplate;
 
 @SpringBootTest(
         classes = {BeanTestConfiguration.class, ACMConfiguration.class, AcmDeployer.class, DmeAcmInterceptor.class,
-                RappCsarConfigurationHandler.class, RappCacheService.class, RappInstanceStateMachineConfig.class,
-                RappInstanceStateMachine.class})
+                RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class, RappCacheService.class,
+                RappInstanceStateMachineConfig.class, RappInstanceStateMachine.class})
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 @AutoConfigureMockMvc
 class AcmDeployerTest {
index 2fdadf4..2df8f66 100755 (executable)
@@ -1,7 +1,10 @@
 rappmanager:
   acm:
-    baseurl: http://10.101.3.22:30442/onap/policy/clamp/acm/v2/
+    baseurl: http://localhost:30442/onap/policy/clamp/acm/v2/
     username: runtimeUser
     password: zb!XztG34
     maxRetries: 3
-    retryInterval: 2 #seconds
\ No newline at end of file
+    retryInterval: 2 #seconds
+  rapps:
+    env:
+      smeDiscoveryEndpoint: http://localhost:53012/service-apis/v1/allServiceAPIs
\ No newline at end of file
index 0097f86..2a8489a 100755 (executable)
@@ -1,20 +1,24 @@
 rappmanager:
   csarlocation: src/test/resources/csar
   acm:
-    baseurl: http://10.101.2.41:30442/onap/policy/clamp/acm/v2/
+    baseurl: http://localhost:30442/onap/policy/clamp/acm/v2/
     username: runtimeUser
     password: zb!XztG34
     maxRetries: 10
     retryInterval: 2 #seconds
   sme:
-    baseurl: http://localhost:56571 #http://10.101.3.22:61761
+    baseurl: http://localhost:56571
     providerBasePath: /api-provider-management/v1/
     invokerBasePath: /api-invoker-management/v1/
     publishApiBasePath: /published-apis/v1/
     maxRetries: 3
     retryInterval: 2 #seconds
   dme:
-    baseurl: http://localhost:63475 #http://10.101.3.22:61761
+    baseurl: http://localhost:63475
+
+  rapps:
+    env:
+      smeDiscoveryEndpoint: http://localhost:53012/service-apis/v1/allServiceAPIs
 
 spring:
   jackson:
index fb51f29..005afcc 100755 (executable)
@@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonParser;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
 import com.oransc.rappmanager.models.rapp.Rapp;
 import com.oransc.rappmanager.models.rapp.RappDmeResourceBuilder;
@@ -48,7 +49,8 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaTopologyTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
-@SpringBootTest(classes = {ObjectMapper.class, RappCsarConfigurationHandler.class, DmeAcmInterceptor.class})
+@SpringBootTest(classes = {ObjectMapper.class, RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class,
+        DmeAcmInterceptor.class})
 class DmeAcmInterceptorTest {
 
     @Autowired
index acbf697..7961cc2 100755 (executable)
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.oransc.rappmanager.dme.configuration.DmeConfiguration;
 import com.oransc.rappmanager.models.cache.RappCacheService;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
 import com.oransc.rappmanager.models.rapp.Rapp;
 import com.oransc.rappmanager.models.rapp.RappDmeResourceBuilder;
@@ -65,8 +66,8 @@ import org.springframework.test.web.client.MockRestServiceServer;
 import org.springframework.web.client.RestTemplate;
 
 @SpringBootTest(classes = {DmeConfiguration.class, DmeDeployer.class, BeanTestConfiguration.class,
-        RappCsarConfigurationHandler.class, RappCacheService.class, RappInstanceStateMachineConfig.class,
-        RappInstanceStateMachine.class})
+        RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class, RappCacheService.class,
+        RappInstanceStateMachineConfig.class, RappInstanceStateMachine.class})
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 @AutoConfigureMockMvc
 class DmeDeployerTest {
diff --git a/rapp-manager-models/src/main/java/com/oransc/rappmanager/models/configuration/RappsEnvironmentConfiguration.java b/rapp-manager-models/src/main/java/com/oransc/rappmanager/models/configuration/RappsEnvironmentConfiguration.java
new file mode 100644 (file)
index 0000000..941556e
--- /dev/null
@@ -0,0 +1,31 @@
+/*-
+ * ============LICENSE_START======================================================================
+ * Copyright (C) 2024 OpenInfra Foundation Europe. 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 com.oransc.rappmanager.models.configuration;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ConfigurationProperties(prefix = "rappmanager.rapps.env")
+@Data
+public class RappsEnvironmentConfiguration {
+
+    String smeDiscoveryEndpoint;
+}
\ No newline at end of file
index f71315f..cb071b9 100755 (executable)
@@ -26,9 +26,10 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.rapp.Rapp;
 import com.oransc.rappmanager.models.rapp.RappResources;
-import com.oransc.rappmanager.models.rappinstance.RappACMInstance;
+import com.oransc.rappmanager.models.rappinstance.RappInstance;
 import com.oransc.rappmanager.models.rappinstance.RappSMEInstance;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -59,15 +60,19 @@ public class RappCsarConfigurationHandler {
     Logger logger = LoggerFactory.getLogger(RappCsarConfigurationHandler.class);
 
     private final ObjectMapper objectMapper;
+    private final RappsEnvironmentConfiguration rappsEnvironmentConfiguration;
 
     public Path getRappPackageLocation(String csarLocation, String rappId, String fileName) {
         return Path.of(csarLocation, rappId, fileName);
     }
 
-    public String getInstantiationPayload(Rapp rapp, RappACMInstance rappACMInstance, UUID compositionId) {
-        return getPayload(rapp,
-                getResourceUri(RappCsarPathProvider.ACM_INSTANCES_LOCATION, rappACMInstance.getInstance())).replaceAll(
-                "DO_NOT_CHANGE_THIS_COMPOSITION_ID", String.valueOf(compositionId));
+    public String getInstantiationPayload(Rapp rapp, RappInstance rappInstance, UUID compositionId) {
+        return getPayload(rapp, getResourceUri(RappCsarPathProvider.ACM_INSTANCES_LOCATION,
+                rappInstance.getAcm().getInstance())).replace("DO_NOT_CHANGE_THIS_COMPOSITION_ID",
+                        String.valueOf(compositionId))
+                       .replace("DO_NOT_CHANGE_THIS_RAPP_INSTANCE_ID", String.valueOf(rappInstance.getRappInstanceId()))
+                       .replace("DO_NOT_CHANGE_THIS_SME_DISCOVERY_ENDPOINT",
+                               rappsEnvironmentConfiguration.getSmeDiscoveryEndpoint());
     }
 
     public ByteArrayResource getArtifactPayload(Rapp rapp, String location) {
@@ -139,8 +144,6 @@ public class RappCsarConfigurationHandler {
     }
 
 
-
-
     public String getSmeProviderDomainPayload(Rapp rapp, RappSMEInstance rappSMEInstance) {
         return getPayload(rapp, getResourceUri(RappCsarPathProvider.SME_PROVIDER_FUNCS_LOCATION,
                 rappSMEInstance.getProviderFunction()));
@@ -151,9 +154,10 @@ public class RappCsarConfigurationHandler {
                 getResourceUri(RappCsarPathProvider.SME_SERVICE_APIS_LOCATION, rappSMEInstance.getServiceApis()));
     }
 
-    public String getSmeInvokerPayload(Rapp rapp, RappSMEInstance rappSMEInstance) {
-        return getPayload(rapp,
-                getResourceUri(RappCsarPathProvider.SME_INVOKERS_LOCATION, rappSMEInstance.getInvokers()));
+    public String getSmeInvokerPayload(Rapp rapp, RappInstance rappInstance) {
+        return getPayload(rapp, getResourceUri(RappCsarPathProvider.SME_INVOKERS_LOCATION,
+                rappInstance.getSme().getInvokers())).replace("DO_NOT_CHANGE_THIS_RAPP_INSTANCE_ID",
+                String.valueOf(rappInstance.getRappInstanceId()));
     }
 
     public String getAcmCompositionPayload(Rapp rapp) {
index 69ddc9b..4c0a63c 100755 (executable)
@@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
 import com.oransc.rappmanager.models.rapp.Rapp;
 import com.oransc.rappmanager.models.rapp.RappResources;
@@ -36,7 +37,8 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ContextConfiguration;
 
 @SpringBootTest
-@ContextConfiguration(classes = {ObjectMapper.class, RappCsarConfigurationHandler.class})
+@ContextConfiguration(
+        classes = {ObjectMapper.class, RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class})
 class RappServiceEnablerTest {
 
     @Autowired
index 9f1893b..be4e002 100755 (executable)
@@ -29,12 +29,15 @@ import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.JsonSyntaxException;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.rapp.Rapp;
 import com.oransc.rappmanager.models.rapp.RappResources;
 import com.oransc.rappmanager.models.rappinstance.RappACMInstance;
 import com.oransc.rappmanager.models.rappinstance.RappDMEInstance;
+import com.oransc.rappmanager.models.rappinstance.RappInstance;
 import com.oransc.rappmanager.models.rappinstance.RappSMEInstance;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -42,21 +45,30 @@ import java.io.IOException;
 import java.util.Set;
 import java.util.UUID;
 import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
+import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.SpyBean;
 import org.springframework.test.context.ContextConfiguration;
 
 @SpringBootTest
-@ContextConfiguration(classes = {ObjectMapper.class, RappCsarConfigurationHandler.class})
+@EnableConfigurationProperties
+@ContextConfiguration(
+        classes = {ObjectMapper.class, RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class})
 class RappCsarConfigurationHandlerTest {
 
     @SpyBean
     RappCsarConfigurationHandler rappCsarConfigurationHandler;
+    @Autowired
+    RappsEnvironmentConfiguration rappsEnvironmentConfiguration;
+    @Autowired
+    ObjectMapper objectMapper;
 
     String validCsarFileLocation = "src/test/resources/";
 
@@ -67,14 +79,27 @@ class RappCsarConfigurationHandlerTest {
     private final String invalidRappEmptyAsdFile = "invalid-rapp-package-empty-asd-yaml.csar";
 
     @Test
-    void testCsarInstantiationPayload() throws JSONException {
+    void testCsarInstantiationPayload() throws JSONException, JsonProcessingException {
         Rapp rapp = Rapp.builder().name("").packageName(validRappFile).packageLocation(validCsarFileLocation).build();
         UUID compositionId = UUID.randomUUID();
-        RappACMInstance rappACMInstance = new RappACMInstance();
-        rappACMInstance.setInstance("kserve-instance");
-        JSONObject jsonObject = new JSONObject(
-                rappCsarConfigurationHandler.getInstantiationPayload(rapp, rappACMInstance, compositionId));
-        assertEquals(jsonObject.get("compositionId"), String.valueOf(compositionId));
+        RappInstance rappInstance = new RappInstance();
+        RappACMInstance rappKserveACMInstance = new RappACMInstance();
+        rappKserveACMInstance.setInstance("kserve-instance");
+        rappInstance.setAcm(rappKserveACMInstance);
+        JSONObject kserveInstanceJsonObject =
+                new JSONObject(rappCsarConfigurationHandler.getInstantiationPayload(rapp, rappInstance, compositionId));
+        assertEquals(kserveInstanceJsonObject.get("compositionId"), String.valueOf(compositionId));
+        RappACMInstance rappK8sACMInstance = new RappACMInstance();
+        rappK8sACMInstance.setInstance("k8s-instance");
+        rappInstance.setAcm(rappK8sACMInstance);
+        JsonNode jsonNode = objectMapper.readTree(
+                rappCsarConfigurationHandler.getInstantiationPayload(rapp, rappInstance, compositionId));
+        assertEquals(jsonNode.get("compositionId").asText(), String.valueOf(compositionId));
+        JsonNode overrideParamsNode = jsonNode.at("/elements").elements().next().at("/properties/chart/overrideParams");
+        System.out.println(overrideParamsNode);
+        assertEquals(overrideParamsNode.get("appId").asText(), rappInstance.getRappInstanceId().toString());
+        assertEquals(overrideParamsNode.get("smeDiscoveryEndpoint").asText(),
+                rappsEnvironmentConfiguration.getSmeDiscoveryEndpoint());
     }
 
     @Test
@@ -191,12 +216,17 @@ class RappCsarConfigurationHandlerTest {
     void testGetSmeInvokerPayload() {
         UUID rappId = UUID.randomUUID();
         RappSMEInstance rappSMEInstance = new RappSMEInstance();
-        rappSMEInstance.setServiceApis("invoker-app1");
+        rappSMEInstance.setInvokers("invoker-app1");
+        RappInstance rappInstance = new RappInstance();
+        rappInstance.setSme(rappSMEInstance);
         Rapp rapp =
                 Rapp.builder().rappId(rappId).name("").packageName(validRappFile).packageLocation(validCsarFileLocation)
                         .build();
-        String smeProviderDomainPayload = rappCsarConfigurationHandler.getSmeInvokerPayload(rapp, rappSMEInstance);
-        assertNotNull(smeProviderDomainPayload);
+        JSONArray smeInvokerPayload =
+                new JSONArray(rappCsarConfigurationHandler.getSmeInvokerPayload(rapp, rappInstance));
+        assertNotNull(smeInvokerPayload);
+        assertEquals(smeInvokerPayload.getJSONObject(0).getString("apiInvokerInformation"),
+                rappInstance.getRappInstanceId().toString());
     }
 
     @Test
index b0c2f43..fa4377c 100755 (executable)
@@ -25,10 +25,9 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doCallRealMethod;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
 import com.oransc.rappmanager.models.exception.RappValidationException;
 import java.io.ByteArrayOutputStream;
@@ -50,7 +49,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 @SpringBootTest
 @ContextConfiguration(classes = {ArtifactDefinitionValidator.class, RappValidationUtils.class, ObjectMapper.class,
-        RappCsarConfigurationHandler.class})
+        RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class})
 class ArtifactDefinitionValidatorTest {
 
     @Autowired
@@ -84,7 +83,6 @@ class ArtifactDefinitionValidatorTest {
     }
 
 
-
     @ParameterizedTest
     @NullSource
     @ValueSource(strings = {"{asasdasd"})
index 1d9079b..eb60567 100755 (executable)
@@ -29,6 +29,7 @@ import static org.mockito.Mockito.doReturn;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.oransc.rappmanager.models.BeanTestConfiguration;
 import com.oransc.rappmanager.models.cache.RappCacheService;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.csar.AsdMetadata;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
 import com.oransc.rappmanager.models.exception.RappValidationException;
@@ -54,7 +55,8 @@ import org.springframework.web.multipart.MultipartFile;
 
 @SpringBootTest
 @ContextConfiguration(classes = {BeanTestConfiguration.class, AsdDescriptorValidator.class, RappValidationUtils.class,
-        ObjectMapper.class, RappCsarConfigurationHandler.class, RappCacheService.class, CacheManager.class})
+        ObjectMapper.class, RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class,
+        RappCacheService.class, CacheManager.class})
 class AsdDescriptorValidatorTest {
 
     @Autowired
index 2b6e369..22ca62c 100755 (executable)
@@ -25,6 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
 import com.oransc.rappmanager.models.exception.RappValidationException;
 import java.io.File;
@@ -41,7 +42,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 @SpringBootTest
 @ContextConfiguration(classes = {FileExistenceValidator.class, RappValidationUtils.class, ObjectMapper.class,
-        RappCsarConfigurationHandler.class})
+        RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class})
 class FileExistenceValidatorTest {
 
     @Autowired
index 2166419..ac61c3e 100755 (executable)
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.mock;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.oransc.rappmanager.models.BeanTestConfiguration;
 import com.oransc.rappmanager.models.cache.RappCacheService;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
 import com.oransc.rappmanager.models.exception.RappValidationException;
 import java.io.File;
@@ -47,7 +48,8 @@ import org.springframework.web.multipart.MultipartFile;
 @SpringBootTest
 @ContextConfiguration(classes = {BeanTestConfiguration.class, RappValidationHandler.class, NamingValidator.class,
         FileExistenceValidator.class, ArtifactDefinitionValidator.class, AsdDescriptorValidator.class,
-        RappValidationUtils.class, RappCsarConfigurationHandler.class, ObjectMapper.class, RappCacheService.class})
+        RappValidationUtils.class, RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class,
+        ObjectMapper.class, RappCacheService.class})
 class RappValidationHandlerTest {
 
     @Autowired
index da575dd..5245d54 100755 (executable)
@@ -27,6 +27,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
 import com.oransc.rappmanager.models.csar.RappCsarPathProvider;
 import com.oransc.rappmanager.models.exception.RappValidationException;
@@ -43,7 +44,8 @@ import org.springframework.test.context.ContextConfiguration;
 import org.springframework.web.multipart.MultipartFile;
 
 @SpringBootTest
-@ContextConfiguration(classes = {RappValidationUtils.class, ObjectMapper.class, RappCsarConfigurationHandler.class})
+@ContextConfiguration(classes = {RappValidationUtils.class, ObjectMapper.class, RappsEnvironmentConfiguration.class,
+        RappCsarConfigurationHandler.class})
 class RappValidationUtilsTest {
 
     String validCsarFileLocation = "src/test/resources/";
@@ -87,7 +89,8 @@ class RappValidationUtilsTest {
         RappValidationException exception = assertThrows(RappValidationException.class,
                 () -> rappValidationUtils.getFileFromCsar(multipartFile, null));
         assertEquals(HttpStatus.BAD_REQUEST, exception.getStatusCode());
-        assertEquals(String.format("Unable to get file %s from the multipart CSAR file", (Object) null), exception.getMessage());
+        assertEquals(String.format("Unable to get file %s from the multipart CSAR file", (Object) null),
+                exception.getMessage());
     }
 
     @Test
diff --git a/rapp-manager-models/src/test/resources/application.yaml b/rapp-manager-models/src/test/resources/application.yaml
new file mode 100644 (file)
index 0000000..2b28b08
--- /dev/null
@@ -0,0 +1,4 @@
+rappmanager:
+  rapps:
+    env:
+      smeDiscoveryEndpoint: http://localhost:53012/service-apis/v1/allServiceAPIs
index 1dddd4a..a24a8c8 100755 (executable)
Binary files a/rapp-manager-models/src/test/resources/valid-rapp-package.csar and b/rapp-manager-models/src/test/resources/valid-rapp-package.csar differ
index cab3ef8..8989e82 100755 (executable)
@@ -218,7 +218,7 @@ public class SmeDeployer implements RappDeployer {
     boolean createInvoker(Rapp rapp, RappInstance rappInstance) {
         logger.debug("Creating provider domain for Rapp {}", rapp.getName());
         try {
-            String invokerPayload = rappCsarConfigurationHandler.getSmeInvokerPayload(rapp, rappInstance.getSme());
+            String invokerPayload = rappCsarConfigurationHandler.getSmeInvokerPayload(rapp, rappInstance);
             if (invokerPayload != null) {
                 List<APIInvokerEnrolmentDetails> apiInvokerEnrolmentDetails =
                         objectMapper.readValue(invokerPayload, new TypeReference<>() { });
index 53d5b5d..b7bcab0 100755 (executable)
@@ -30,6 +30,7 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.oransc.rappmanager.models.cache.RappCacheService;
+import com.oransc.rappmanager.models.configuration.RappsEnvironmentConfiguration;
 import com.oransc.rappmanager.models.csar.RappCsarConfigurationHandler;
 import com.oransc.rappmanager.models.rapp.Rapp;
 import com.oransc.rappmanager.models.rapp.RappState;
@@ -63,8 +64,8 @@ import org.springframework.test.web.client.MockRestServiceServer;
 import org.springframework.web.client.RestTemplate;
 
 @SpringBootTest(classes = {SmeConfiguration.class, SmeDeployer.class, BeanTestConfiguration.class,
-        RappCsarConfigurationHandler.class, RappCacheService.class, RappInstanceStateMachineConfig.class,
-        RappInstanceStateMachine.class})
+        RappsEnvironmentConfiguration.class, RappCsarConfigurationHandler.class, RappCacheService.class,
+        RappInstanceStateMachineConfig.class, RappInstanceStateMachine.class})
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 @AutoConfigureMockMvc
 class SmeDeployerTest {
index 4491148..2e5a18a 100755 (executable)
           "repository": {
             "repoName": "local",
             "address": "UPDATE_THIS_CHART_MUSEUM_GET_CHARTS_URI"
+          },
+          "overrideParams": {
+            "appId": "DO_NOT_CHANGE_THIS_RAPP_INSTANCE_ID",
+            "smeDiscoveryEndpoint": "DO_NOT_CHANGE_THIS_SME_DISCOVERY_ENDPOINT"
           }
         }
       }
index b4416fb..a77ac5b 100755 (executable)
           "repository": {
             "repoName": "local",
             "address": "UPDATE_THIS_CHART_MUSEUM_GET_CHARTS_URI"
+          },
+          "overrideParams": {
+            "appId": "DO_NOT_CHANGE_THIS_RAPP_INSTANCE_ID",
+            "smeDiscoveryEndpoint": "DO_NOT_CHANGE_THIS_SME_DISCOVERY_ENDPOINT"
           }
         }
       }
index 612af40..0400730 100755 (executable)
@@ -1,6 +1,6 @@
 [
   {
-    "apiInvokerInformation": "Invoker App 1",
+    "apiInvokerInformation": "DO_NOT_CHANGE_THIS_RAPP_INSTANCE_ID",
     "apiList": [
       {}
     ],
index 27e1063..0ebeaad 100755 (executable)
@@ -1,6 +1,6 @@
 [
   {
-    "apiInvokerInformation": "Invoker App 2",
+    "apiInvokerInformation": "DO_NOT_CHANGE_THIS_RAPP_INSTANCE_ID",
     "apiList": [
       {}
     ],
index c019541..c37d288 100644 (file)
@@ -1,31 +1,35 @@
-{\r
-  "name": "K8DemoInstance0",\r
-  "version": "1.0.1",\r
-  "compositionId": "DO_NOT_CHANGE_THIS_COMPOSITION_ID",\r
-  "description": "Demo automation composition instance 0",\r
-  "elements": {\r
-    "d7be552e-bcc5-4478-b64d-797dbaec8f55": {\r
-      "id": "d7be552e-bcc5-4478-b64d-797dbaec8f55",\r
-      "definition": {\r
-        "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement",\r
-        "version": "1.2.3"\r
-      },\r
-      "description": "Starter Automation Composition Element for the Hello World",\r
-      "properties": {\r
-        "chart": {\r
-          "chartId": {\r
-            "name": "hello-world-chart",\r
-            "version": "0.1.0"\r
-          },\r
-          "namespace": "nonrtric",\r
-          "releaseName": "hello-world-chart",\r
-          "podName": "hello-world-chart",\r
-          "repository": {\r
-            "repoName": "local",\r
-            "address": "UPDATE_THIS_CHART_MUSEUM_GET_CHARTS_URI"\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
+{
+  "name": "K8DemoInstance0",
+  "version": "1.0.1",
+  "compositionId": "DO_NOT_CHANGE_THIS_COMPOSITION_ID",
+  "description": "Demo automation composition instance 0",
+  "elements": {
+    "d7be552e-bcc5-4478-b64d-797dbaec8f55": {
+      "id": "d7be552e-bcc5-4478-b64d-797dbaec8f55",
+      "definition": {
+        "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement",
+        "version": "1.2.3"
+      },
+      "description": "Starter Automation Composition Element for the Hello World",
+      "properties": {
+        "chart": {
+          "chartId": {
+            "name": "hello-world-chart",
+            "version": "0.1.0"
+          },
+          "namespace": "nonrtric",
+          "releaseName": "hello-world-chart",
+          "podName": "hello-world-chart",
+          "repository": {
+            "repoName": "local",
+            "address": "UPDATE_THIS_CHART_MUSEUM_GET_CHARTS_URI"
+          },
+          "overrideParams": {
+            "appId": "DO_NOT_CHANGE_THIS_RAPP_INSTANCE_ID",
+            "smeDiscoveryEndpoint": "DO_NOT_CHANGE_THIS_SME_DISCOVERY_ENDPOINT"
+          }
+        }
+      }
+    }
+  }
 }
\ No newline at end of file