diff options
author | Benjamin, Max (mb388a) <mb388a@us.att.com> | 2018-07-30 15:56:09 -0400 |
---|---|---|
committer | Benjamin, Max (mb388a) <mb388a@us.att.com> | 2018-07-31 11:09:25 -0400 |
commit | 5a6a6de6f1a26a1897e4917a0df613e25a24eb70 (patch) | |
tree | 59a968f27b4b603aacc9d5e7b51fb598aeec5321 /asdc-controller/src/test | |
parent | b6dc38501f3b746426b42d9de4cc883d894149e8 (diff) |
Containerization feature of SO
Change-Id: I95381232eeefcd247a66a5cec370a8ce1c288e18
Issue-ID: SO-670
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
Diffstat (limited to 'asdc-controller/src/test')
80 files changed, 6916 insertions, 2888 deletions
diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/ASDCPojoTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/ASDCPojoTest.java new file mode 100644 index 0000000000..354b6dac3c --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/ASDCPojoTest.java @@ -0,0 +1,60 @@ +/*- + * ============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.asdc; + +import org.junit.Test; +import org.onap.so.asdc.client.FinalDistributionStatusMessage; +import org.onap.so.asdc.client.test.emulators.ArtifactInfoImpl; +import org.onap.so.asdc.client.test.emulators.DistributionClientEmulator; +import org.onap.so.asdc.client.test.emulators.JsonStatusData; +import org.onap.so.asdc.client.test.emulators.JsonVfModuleMetaData; +import org.onap.so.asdc.client.test.emulators.NotificationDataImpl; +import org.onap.so.asdc.client.test.emulators.ResourceInfoImpl; +import org.onap.so.asdc.installer.VfResourceStructure; + +import com.openpojo.reflection.PojoClass; +import com.openpojo.reflection.impl.PojoClassFactory; +import com.openpojo.validation.Validator; +import com.openpojo.validation.ValidatorBuilder; +import com.openpojo.validation.test.impl.GetterTester; +import com.openpojo.validation.test.impl.SetterTester; + +public class ASDCPojoTest { + @Test + public void pojoStructure() { + test(PojoClassFactory.getPojoClass(FinalDistributionStatusMessage.class)); + test(PojoClassFactory.getPojoClass(ArtifactInfoImpl.class)); + test(PojoClassFactory.getPojoClass(NotificationDataImpl.class)); + test(PojoClassFactory.getPojoClass(JsonVfModuleMetaData.class)); + test(PojoClassFactory.getPojoClass(ResourceInfoImpl.class)); + test(PojoClassFactory.getPojoClass(DistributionClientEmulator.class)); + test(PojoClassFactory.getPojoClass(JsonStatusData.class)); + test(PojoClassFactory.getPojoClass(VfResourceStructure.class)); + } + + private void test(PojoClass pojoClass) { + Validator validator = ValidatorBuilder.create() + .with(new SetterTester()) + .with(new GetterTester()) + .build(); + validator.validate(pojoClass); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/BaseTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/BaseTest.java new file mode 100644 index 0000000000..9a7240c830 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/BaseTest.java @@ -0,0 +1,65 @@ +/*- + * ============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.asdc; + +import static org.mockito.Mockito.reset; + +import org.junit.After; +import org.junit.runner.RunWith; +import org.onap.so.asdc.installer.ToscaResourceStructure; +import org.onap.so.asdc.installer.VfResourceStructure; +import org.onap.so.asdc.installer.heat.ToscaResourceInstaller; +import org.onap.so.asdc.tenantIsolation.SpringContextHelper; +import org.onap.so.asdc.tenantIsolation.WatchdogDistribution; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.boot.test.mock.mockito.SpyBean; +import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ActiveProfiles("test") +@ContextConfiguration(classes = SpringContextHelper.class, initializers = ConfigFileApplicationContextInitializer.class) +@AutoConfigureWireMock(port = 0) +public abstract class BaseTest { + @MockBean + protected VfResourceStructure vfResourceStructure; + @MockBean + protected ToscaResourceStructure toscaResourceStruct; + @SpyBean + protected WatchdogDistribution watchdogDistributionSpy; + @SpyBean + protected ToscaResourceInstaller toscaInstaller; + + @Value("${wiremock.server.port}") + protected String wireMockPort; + + @After + public void after() { + reset(vfResourceStructure); + reset(toscaResourceStruct); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/EmbeddedCatalogDbConfig.java b/asdc-controller/src/test/java/org/onap/so/asdc/EmbeddedCatalogDbConfig.java new file mode 100644 index 0000000000..f7e678731e --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/EmbeddedCatalogDbConfig.java @@ -0,0 +1,102 @@ +/*- + * ============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.asdc; +import ch.vorburger.exec.ManagedProcessException; +import ch.vorburger.mariadb4j.DBConfigurationBuilder; +import ch.vorburger.mariadb4j.springframework.MariaDB4jSpringService; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Profile; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.persistence.EntityManagerFactory; +import javax.sql.DataSource; + +@Configuration +@Profile({"test"}) +@EnableTransactionManagement +@EnableJpaRepositories( + entityManagerFactoryRef = "entityManagerFactory", + basePackages = {"org.onap.so.db.catalog.data.repository"} + ) +public class EmbeddedCatalogDbConfig { + + @Bean + MariaDB4jSpringService mariaDB4jSpringService() { + return new MariaDB4jSpringService(); + } + + @Primary + @Bean(name = "dataSource") + DataSource dataSource(MariaDB4jSpringService mariaDB4jSpringService, + @Value("${mariaDB4j.databaseName}") String databaseName, + @Value("${spring.datasource.username}") String datasourceUsername, + @Value("${spring.datasource.password}") String datasourcePassword, + @Value("${spring.datasource.driver-class-name}") String datasourceDriver) throws ManagedProcessException { + //Create our database with default root user and no password + mariaDB4jSpringService.getDB().createDB(databaseName); + + DBConfigurationBuilder config = mariaDB4jSpringService.getConfiguration(); + + return DataSourceBuilder + .create() + .username(datasourceUsername) + .password(datasourcePassword) + .url(config.getURL(databaseName)) + .driverClassName(datasourceDriver) + .build(); + } + + + @Primary + @Bean(name = "entityManagerFactory") + public LocalContainerEntityManagerFactoryBean + entityManagerFactory( + EntityManagerFactoryBuilder builder, + @Qualifier("dataSource") DataSource dataSource + ) { + return builder + .dataSource(dataSource) + .packages("org.onap.so.db.catalog.beans") + .persistenceUnit("catalogDB") + .build(); + } + + @Primary + @Bean(name = "transactionManager") + public PlatformTransactionManager transactionManager( + @Qualifier("entityManagerFactory") EntityManagerFactory + entityManagerFactory + ) { + return new JpaTransactionManager(entityManagerFactory); + } + +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/EmbeddedRequestDbConfig.java b/asdc-controller/src/test/java/org/onap/so/asdc/EmbeddedRequestDbConfig.java new file mode 100644 index 0000000000..6d1bfcdb8f --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/EmbeddedRequestDbConfig.java @@ -0,0 +1,102 @@ +/*- + * ============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.asdc; +import ch.vorburger.exec.ManagedProcessException; +import ch.vorburger.mariadb4j.DBConfigurationBuilder; +import ch.vorburger.mariadb4j.springframework.MariaDB4jSpringService; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Profile; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.persistence.EntityManagerFactory; +import javax.sql.DataSource; + +@Configuration +@Profile({"test"}) +@EnableTransactionManagement +@EnableJpaRepositories( + entityManagerFactoryRef = "requestEntityManagerFactory",transactionManagerRef = "requestTransactionManager", + basePackages = { "org.onap.so.db.request.data.repository" } + ) +public class EmbeddedRequestDbConfig { + + @Bean + MariaDB4jSpringService mariaDB4jSpringService() { + return new MariaDB4jSpringService(); + } + + + @Bean(name = "requestDataSource") + @ConfigurationProperties(prefix = "request.datasource") + DataSource dataSource(MariaDB4jSpringService mariaDB4jSpringService, + @Value("${mariaDB4j.databaseName2}") String databaseName, + @Value("${spring.datasource.username}") String datasourceUsername, + @Value("${spring.datasource.password}") String datasourcePassword, + @Value("${spring.datasource.driver-class-name}") String datasourceDriver) throws ManagedProcessException { + //Create our database with default root user and no password + mariaDB4jSpringService.getDB().createDB(databaseName); + + DBConfigurationBuilder config = mariaDB4jSpringService.getConfiguration(); + + return DataSourceBuilder + .create() + .username(datasourceUsername) + .password(datasourcePassword) + .url(config.getURL(databaseName)) + .driverClassName(datasourceDriver) + .build(); + } + + + @Bean(name = "requestEntityManagerFactory") + public LocalContainerEntityManagerFactoryBean + entityManagerFactory( + EntityManagerFactoryBuilder builder, + @Qualifier("requestDataSource") DataSource dataSource + ) { + return builder + .dataSource(dataSource) + .packages("org.onap.so.db.request.beans") + .persistenceUnit("requestDB") + .build(); + } + + + @Bean(name = "requestTransactionManager") + public PlatformTransactionManager transactionManager( + @Qualifier("requestEntityManagerFactory") EntityManagerFactory + entityManagerFactory + ) { + return new JpaTransactionManager(entityManagerFactory); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java b/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java new file mode 100644 index 0000000000..4298f9c5b5 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java @@ -0,0 +1,45 @@ +/*- + * ============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.asdc; + +import org.onap.so.db.request.data.repository.InfraActiveRequestsRepositoryImpl; +import org.onap.so.requestsdb.RequestsDBHelper; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.ComponentScan.Filter; +import org.springframework.context.annotation.FilterType; +import org.springframework.context.annotation.Profile; + +@SpringBootApplication +@Profile("test") +@ComponentScan(basePackages = {"org.onap.so.asdc"}, excludeFilters = { + @Filter(type = FilterType.ANNOTATION, classes = SpringBootApplication.class), + @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = RequestsDBHelper.class), + @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = InfraActiveRequestsRepositoryImpl.class) }) +public class TestApplication { + public static void main(String... args) { + SpringApplication.run(TestApplication.class, args); + System.getProperties().setProperty("mso.db", "MARIADB"); + System.getProperties().setProperty("server.name", "Springboot"); + System.getProperties().setProperty("mso.config.path", "src/test/resources/"); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCConfigurationTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCConfigurationTest.java new file mode 100644 index 0000000000..ce8b664bda --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCConfigurationTest.java @@ -0,0 +1,58 @@ +/*- + * ============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.asdc.client; + + + +import static org.junit.Assert.assertTrue; + +import javax.transaction.Transactional; + +import org.junit.Test; +import org.onap.so.asdc.BaseTest; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * THis class tests the ASDC Controller by using the ASDC Mock CLient + * + * + */ +public class ASDCConfigurationTest extends BaseTest { + + @Autowired + private ASDCConfiguration config; + + @Test + @Transactional + public void testInitASDCConfiguration() throws Exception { + assertTrue("msopreist".equals(config.getUser())); + assertTrue("msoasdc-id-local".equals(config.getConsumerGroup())); + assertTrue("msoasdc-id-local".equals(config.getConsumerID())); + assertTrue("Pre-IST".equals(config.getEnvironmentName())); + assertTrue("localhost:8443".equals(config.getAsdcAddress())); + assertTrue("msopreist".equals(config.getPassword())); + assertTrue(config.getPollingInterval() == 30); + assertTrue(config.getPollingTimeout() == 30); + assertTrue(config.getRelevantArtifactTypes().size() == config.SUPPORTED_ARTIFACT_TYPES_LIST.size()); + assertTrue(config.getWatchDogTimeout() == 1); + } + +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCControllerTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCControllerTest.java new file mode 100644 index 0000000000..580220aabb --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCControllerTest.java @@ -0,0 +1,48 @@ +/*- + * ============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.asdc.client; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.onap.so.asdc.BaseTest; +import org.onap.so.asdc.client.exceptions.ASDCControllerException; +import org.springframework.beans.factory.annotation.Autowired; + +public class ASDCControllerTest extends BaseTest { + @Autowired + private ASDCController asdcController; + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Test + public void initASDCExceptionTest() throws Exception { + expectedException.expect(ASDCControllerException.class); + + asdcController.changeControllerStatus(ASDCControllerStatus.IDLE); + + try { + asdcController.initASDC(); + } finally { + asdcController.closeASDC(); + } + } +} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCElementInfoTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCElementInfoTest.java index 6bb938c29b..fec3ae6362 100644 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCElementInfoTest.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCElementInfoTest.java @@ -1,174 +1,174 @@ -/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei 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.openecomp.mso.asdc.client;
-
-
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Collections;
-import java.util.UUID;
-
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.onap.sdc.api.notification.IArtifactInfo;
-import org.onap.sdc.api.notification.INotificationData;
-import org.onap.sdc.api.notification.IResourceInstance;
-import org.onap.sdc.api.notification.IVfModuleMetadata;
-import org.openecomp.mso.asdc.client.ASDCConfiguration;
-import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException;
-import org.openecomp.mso.asdc.installer.ASDCElementInfo;
-import org.openecomp.mso.asdc.installer.VfModuleStructure;
-import org.openecomp.mso.asdc.installer.VfResourceStructure;
-import org.openecomp.mso.asdc.installer.IVfModuleData;
-
-public class ASDCElementInfoTest {
-
- @Test
- public void createASDCElementInfoWithNullParameterTest() {
- ASDCElementInfo elementInfoFromNullVfArtifact = ASDCElementInfo.createElementFromVfArtifactInfo(null);
- ASDCElementInfo elementInfoFromNullVfModuleStructure = ASDCElementInfo.createElementFromVfModuleStructure(null);
- ASDCElementInfo elementInfoFromNullVfResourceStructure = ASDCElementInfo.createElementFromVfResourceStructure(null);
-
- elementInfoFromNullVfArtifact.addElementInfo(null, null);
- elementInfoFromNullVfModuleStructure.addElementInfo(null, "someValue");
- elementInfoFromNullVfResourceStructure.addElementInfo("someKey", null);
-
- assertEquals(elementInfoFromNullVfArtifact.toString(), "");
- assertEquals(elementInfoFromNullVfModuleStructure.toString(), "");
- assertEquals(elementInfoFromNullVfResourceStructure.toString(), "");
-
- assertNotNull(elementInfoFromNullVfArtifact);
- assertNotNull(elementInfoFromNullVfModuleStructure);
- assertNotNull(elementInfoFromNullVfResourceStructure);
-
- assertNotNull(ASDCElementInfo.EMPTY_INSTANCE);
-
- assertEquals(elementInfoFromNullVfArtifact, ASDCElementInfo.EMPTY_INSTANCE);
- assertEquals(elementInfoFromNullVfModuleStructure, ASDCElementInfo.EMPTY_INSTANCE);
- assertEquals(elementInfoFromNullVfResourceStructure, ASDCElementInfo.EMPTY_INSTANCE);
-
- assertEquals(ASDCElementInfo.EMPTY_INSTANCE.getType(), "");
- assertEquals(ASDCElementInfo.EMPTY_INSTANCE.toString(), "");
-
- assertEquals(elementInfoFromNullVfArtifact.getType(), ASDCElementInfo.EMPTY_INSTANCE.getType());
- assertEquals(elementInfoFromNullVfModuleStructure.getType(), ASDCElementInfo.EMPTY_INSTANCE.getType());
- assertEquals(elementInfoFromNullVfResourceStructure.getType(), ASDCElementInfo.EMPTY_INSTANCE.getType());
- }
-
- @Test
- public void createASDCElementInfoFromVfResourceTest() {
-
- String resourceInstanceName = "Resource 1";
-
- UUID generatedUUID = UUID.randomUUID();
-
- INotificationData notificationData = Mockito.mock(INotificationData.class);
- IResourceInstance resourceInstance = Mockito.mock(IResourceInstance.class);
-
- Mockito.when(resourceInstance.getResourceInstanceName()).thenReturn(resourceInstanceName);
- Mockito.when(resourceInstance.getResourceInvariantUUID()).thenReturn(generatedUUID.toString());
-
- VfResourceStructure vfResourceStructure = new VfResourceStructure(notificationData, resourceInstance);
-
- ASDCElementInfo elementInfoFromVfResource = ASDCElementInfo.createElementFromVfResourceStructure(vfResourceStructure);
-
- assertTrue(elementInfoFromVfResource.toString().contains(resourceInstanceName));
- assertTrue(elementInfoFromVfResource.toString().contains(generatedUUID.toString()));
-
- assertFalse(ASDCConfiguration.VF_MODULES_METADATA.equals(elementInfoFromVfResource.getType()));
- assertEquals(ASDCElementInfo.ASDCElementTypeEnum.VNF_RESOURCE.name(), elementInfoFromVfResource.getType());
-
- assertFalse(elementInfoFromVfResource.toString().contains("MyInfo1: someValue"));
- elementInfoFromVfResource.addElementInfo("MyInfo1", "someValue");
- assertTrue(elementInfoFromVfResource.toString().contains("MyInfo1: someValue"));
- }
-
- @Test
- public void createASDCElementInfoFromVfModuleTest() throws ArtifactInstallerException {
-
- String resourceInstanceName = "Resource 1";
-
- UUID generatedUUID = UUID.randomUUID();
-
- INotificationData notificationData = Mockito.mock(INotificationData.class);
- IResourceInstance resourceInstance = Mockito.mock(IResourceInstance.class);
-
- Mockito.when(resourceInstance.getResourceInstanceName()).thenReturn(resourceInstanceName);
- Mockito.when(resourceInstance.getResourceInvariantUUID()).thenReturn(generatedUUID.toString());
-
- VfResourceStructure vfResourceStructure = new VfResourceStructure(notificationData, resourceInstance);
-
- // Create module structure now
-
- String vfModuleModelName = "Module Model XYZ";
-
- UUID generatedUUIDForModule = UUID.randomUUID();
-
- IVfModuleData moduleMetadata = Mockito.mock(IVfModuleData.class);
- Mockito.when(moduleMetadata.getVfModuleModelName()).thenReturn(vfModuleModelName);
- Mockito.when(moduleMetadata.getVfModuleModelInvariantUUID()).thenReturn(generatedUUIDForModule.toString());
- Mockito.when(moduleMetadata.getArtifacts()).thenReturn(Collections.<String> emptyList());
-
- VfModuleStructure vfModuleStructure = new VfModuleStructure(vfResourceStructure, moduleMetadata);
-
- ASDCElementInfo elementInfoFromVfModule = ASDCElementInfo.createElementFromVfModuleStructure(vfModuleStructure);
-
- assertTrue(elementInfoFromVfModule.toString().contains(vfModuleModelName));
- assertTrue(elementInfoFromVfModule.toString().contains(generatedUUIDForModule.toString()));
-
- assertFalse(ASDCElementInfo.ASDCElementTypeEnum.VNF_RESOURCE.name().equals(elementInfoFromVfModule.getType()));
- assertEquals(ASDCConfiguration.VF_MODULES_METADATA, elementInfoFromVfModule.getType());
-
- assertFalse(elementInfoFromVfModule.toString().contains("MyInfo2: someValue"));
- elementInfoFromVfModule.addElementInfo("MyInfo2", "someValue");
- assertTrue(elementInfoFromVfModule.toString().contains("MyInfo2: someValue"));
- }
-
- @Test
- public void createASDCElementInfoFromArtifact() {
- for (String eVal : ASDCConfiguration.SUPPORTED_ARTIFACT_TYPES_LIST) {
- String generatedArtifactName = eVal + " 1";
- UUID generatedUUIDForArtifact = UUID.randomUUID();
-
- IArtifactInfo artifactInfo = Mockito.mock(IArtifactInfo.class);
- Mockito.when(artifactInfo.getArtifactType()).thenReturn(eVal);
- Mockito.when(artifactInfo.getArtifactName()).thenReturn(generatedArtifactName);
- Mockito.when(artifactInfo.getArtifactUUID()).thenReturn(generatedUUIDForArtifact.toString());
-
- ASDCElementInfo elementInfoFromArtifact = ASDCElementInfo.createElementFromVfArtifactInfo(artifactInfo);
-
- assertTrue(elementInfoFromArtifact.toString().contains(generatedArtifactName));
- assertTrue(elementInfoFromArtifact.toString().contains(generatedUUIDForArtifact.toString()));
-
- assertFalse(ASDCElementInfo.ASDCElementTypeEnum.VNF_RESOURCE.name().equals(elementInfoFromArtifact.getType()));
- assertEquals(eVal, elementInfoFromArtifact.getType());
-
- assertFalse(elementInfoFromArtifact.toString().contains("MyInfo3: someValue"));
- elementInfoFromArtifact.addElementInfo("MyInfo3", "someValue");
- assertTrue(elementInfoFromArtifact.toString().contains("MyInfo3: someValue"));
- }
- }
-}
+/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei 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.asdc.client; + + + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.Collections; +import java.util.UUID; + +import org.junit.Test; +import org.mockito.Mockito; +import org.onap.sdc.api.notification.IArtifactInfo; +import org.onap.sdc.api.notification.INotificationData; +import org.onap.sdc.api.notification.IResourceInstance; +import org.onap.sdc.api.notification.IVfModuleMetadata; +import org.onap.so.asdc.client.ASDCConfiguration; +import org.onap.so.asdc.client.exceptions.ArtifactInstallerException; +import org.onap.so.asdc.installer.ASDCElementInfo; +import org.onap.so.asdc.installer.VfModuleStructure; +import org.onap.so.asdc.installer.VfResourceStructure; +import org.onap.so.asdc.installer.IVfModuleData; + +public class ASDCElementInfoTest { + + @Test + public void createASDCElementInfoWithNullParameterTest() { + ASDCElementInfo elementInfoFromNullVfArtifact = ASDCElementInfo.createElementFromVfArtifactInfo(null); + ASDCElementInfo elementInfoFromNullVfModuleStructure = ASDCElementInfo.createElementFromVfModuleStructure(null); + ASDCElementInfo elementInfoFromNullVfResourceStructure = ASDCElementInfo.createElementFromVfResourceStructure(null); + + elementInfoFromNullVfArtifact.addElementInfo(null, null); + elementInfoFromNullVfModuleStructure.addElementInfo(null, "someValue"); + elementInfoFromNullVfResourceStructure.addElementInfo("someKey", null); + + assertEquals(elementInfoFromNullVfArtifact.toString(), ""); + assertEquals(elementInfoFromNullVfModuleStructure.toString(), ""); + assertEquals(elementInfoFromNullVfResourceStructure.toString(), ""); + + assertNotNull(elementInfoFromNullVfArtifact); + assertNotNull(elementInfoFromNullVfModuleStructure); + assertNotNull(elementInfoFromNullVfResourceStructure); + + assertNotNull(ASDCElementInfo.EMPTY_INSTANCE); + + assertEquals(elementInfoFromNullVfArtifact, ASDCElementInfo.EMPTY_INSTANCE); + assertEquals(elementInfoFromNullVfModuleStructure, ASDCElementInfo.EMPTY_INSTANCE); + assertEquals(elementInfoFromNullVfResourceStructure, ASDCElementInfo.EMPTY_INSTANCE); + + assertEquals(ASDCElementInfo.EMPTY_INSTANCE.getType(), ""); + assertEquals(ASDCElementInfo.EMPTY_INSTANCE.toString(), ""); + + assertEquals(elementInfoFromNullVfArtifact.getType(), ASDCElementInfo.EMPTY_INSTANCE.getType()); + assertEquals(elementInfoFromNullVfModuleStructure.getType(), ASDCElementInfo.EMPTY_INSTANCE.getType()); + assertEquals(elementInfoFromNullVfResourceStructure.getType(), ASDCElementInfo.EMPTY_INSTANCE.getType()); + } + + @Test + public void createASDCElementInfoFromVfResourceTest() { + + String resourceInstanceName = "Resource 1"; + + UUID generatedUUID = UUID.randomUUID(); + + INotificationData notificationData = Mockito.mock(INotificationData.class); + IResourceInstance resourceInstance = Mockito.mock(IResourceInstance.class); + + Mockito.when(resourceInstance.getResourceInstanceName()).thenReturn(resourceInstanceName); + Mockito.when(resourceInstance.getResourceInvariantUUID()).thenReturn(generatedUUID.toString()); + + VfResourceStructure vfResourceStructure = new VfResourceStructure(notificationData, resourceInstance); + + ASDCElementInfo elementInfoFromVfResource = ASDCElementInfo.createElementFromVfResourceStructure(vfResourceStructure); + + assertTrue(elementInfoFromVfResource.toString().contains(resourceInstanceName)); + assertTrue(elementInfoFromVfResource.toString().contains(generatedUUID.toString())); + + assertFalse(ASDCConfiguration.VF_MODULES_METADATA.equals(elementInfoFromVfResource.getType())); + assertEquals(ASDCElementInfo.ASDCElementTypeEnum.VNF_RESOURCE.name(), elementInfoFromVfResource.getType()); + + assertFalse(elementInfoFromVfResource.toString().contains("MyInfo1: someValue")); + elementInfoFromVfResource.addElementInfo("MyInfo1", "someValue"); + assertTrue(elementInfoFromVfResource.toString().contains("MyInfo1: someValue")); + } + + @Test + public void createASDCElementInfoFromVfModuleTest() throws ArtifactInstallerException { + + String resourceInstanceName = "Resource 1"; + + UUID generatedUUID = UUID.randomUUID(); + + INotificationData notificationData = Mockito.mock(INotificationData.class); + IResourceInstance resourceInstance = Mockito.mock(IResourceInstance.class); + + Mockito.when(resourceInstance.getResourceInstanceName()).thenReturn(resourceInstanceName); + Mockito.when(resourceInstance.getResourceInvariantUUID()).thenReturn(generatedUUID.toString()); + + VfResourceStructure vfResourceStructure = new VfResourceStructure(notificationData, resourceInstance); + + // Create module structure now + + String vfModuleModelName = "Module Model XYZ"; + + UUID generatedUUIDForModule = UUID.randomUUID(); + + IVfModuleData moduleMetadata = Mockito.mock(IVfModuleData.class); + Mockito.when(moduleMetadata.getVfModuleModelName()).thenReturn(vfModuleModelName); + Mockito.when(moduleMetadata.getVfModuleModelInvariantUUID()).thenReturn(generatedUUIDForModule.toString()); + Mockito.when(moduleMetadata.getArtifacts()).thenReturn(Collections.<String> emptyList()); + + VfModuleStructure vfModuleStructure = new VfModuleStructure(vfResourceStructure, moduleMetadata); + + ASDCElementInfo elementInfoFromVfModule = ASDCElementInfo.createElementFromVfModuleStructure(vfModuleStructure); + + assertTrue(elementInfoFromVfModule.toString().contains(vfModuleModelName)); + assertTrue(elementInfoFromVfModule.toString().contains(generatedUUIDForModule.toString())); + + assertFalse(ASDCElementInfo.ASDCElementTypeEnum.VNF_RESOURCE.name().equals(elementInfoFromVfModule.getType())); + assertEquals(ASDCConfiguration.VF_MODULES_METADATA, elementInfoFromVfModule.getType()); + + assertFalse(elementInfoFromVfModule.toString().contains("MyInfo2: someValue")); + elementInfoFromVfModule.addElementInfo("MyInfo2", "someValue"); + assertTrue(elementInfoFromVfModule.toString().contains("MyInfo2: someValue")); + } + + @Test + public void createASDCElementInfoFromArtifact() { + for (String eVal : ASDCConfiguration.SUPPORTED_ARTIFACT_TYPES_LIST) { + String generatedArtifactName = eVal + " 1"; + UUID generatedUUIDForArtifact = UUID.randomUUID(); + + IArtifactInfo artifactInfo = Mockito.mock(IArtifactInfo.class); + Mockito.when(artifactInfo.getArtifactType()).thenReturn(eVal); + Mockito.when(artifactInfo.getArtifactName()).thenReturn(generatedArtifactName); + Mockito.when(artifactInfo.getArtifactUUID()).thenReturn(generatedUUIDForArtifact.toString()); + + ASDCElementInfo elementInfoFromArtifact = ASDCElementInfo.createElementFromVfArtifactInfo(artifactInfo); + + assertTrue(elementInfoFromArtifact.toString().contains(generatedArtifactName)); + assertTrue(elementInfoFromArtifact.toString().contains(generatedUUIDForArtifact.toString())); + + assertFalse(ASDCElementInfo.ASDCElementTypeEnum.VNF_RESOURCE.name().equals(elementInfoFromArtifact.getType())); + assertEquals(eVal, elementInfoFromArtifact.getType()); + + assertFalse(elementInfoFromArtifact.toString().contains("MyInfo3: someValue")); + elementInfoFromArtifact.addElementInfo("MyInfo3", "someValue"); + assertTrue(elementInfoFromArtifact.toString().contains("MyInfo3: someValue")); + } + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCStatusCallBackTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCStatusCallBackTest.java new file mode 100644 index 0000000000..97fa773fd5 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCStatusCallBackTest.java @@ -0,0 +1,91 @@ +/*- + * ============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.asdc.client; + +import static org.mockito.Matchers.isA; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.mockito.MockitoAnnotations; +import org.onap.sdc.api.notification.IStatusData; +import org.onap.sdc.utils.DistributionStatusEnum; +import org.onap.so.asdc.BaseTest; +import org.onap.so.asdc.client.exceptions.ArtifactInstallerException; +import org.onap.so.asdc.client.test.emulators.JsonStatusData; +import org.springframework.beans.factory.annotation.Autowired; + +public class ASDCStatusCallBackTest extends BaseTest { + @Autowired + private ASDCStatusCallBack statusCallback; + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Before + public void before() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void activateCallbackTest() throws Exception { + JsonStatusData statusData = new JsonStatusData(); + + doNothing().when(toscaInstaller).installTheComponentStatus(isA(JsonStatusData.class)); + + statusCallback.activateCallback(statusData); + + verify(toscaInstaller, times(1)).installTheComponentStatus(statusData); + } + + @Test + public void activateCallbackDoneErrorStatusTest() throws Exception { + IStatusData statusData = mock(IStatusData.class); + + doReturn("distributionId").when(statusData).getDistributionID(); + doReturn("componentName").when(statusData).getComponentName(); + doReturn(DistributionStatusEnum.COMPONENT_DONE_ERROR).when(statusData).getStatus(); + doNothing().when(toscaInstaller).installTheComponentStatus(isA(IStatusData.class)); + + statusCallback.activateCallback(statusData); + + verify(toscaInstaller, times(1)).installTheComponentStatus(statusData); + } + + @Test + public void activateCallbackExceptionTest() throws Exception { + IStatusData statusData = mock(IStatusData.class); + + doReturn("distributionId").when(statusData).getDistributionID(); + doReturn("componentName").when(statusData).getComponentName(); + doReturn(DistributionStatusEnum.COMPONENT_DONE_OK).when(statusData).getStatus(); + doThrow(ArtifactInstallerException.class).when(toscaInstaller).installTheComponentStatus(isA(IStatusData.class)); + + statusCallback.activateCallback(statusData); + } +} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/BigDecimalVersionTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/BigDecimalVersionTest.java index b395cee471..4eb9ed5619 100644 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/BigDecimalVersionTest.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/BigDecimalVersionTest.java @@ -18,14 +18,14 @@ * ============LICENSE_END========================================================= */ -package org.openecomp.mso.asdc.client; +package org.onap.so.asdc.client; import static org.junit.Assert.assertTrue; import java.math.BigDecimal; import org.junit.Test; -import org.openecomp.mso.asdc.installer.BigDecimalVersion; +import org.onap.so.asdc.installer.BigDecimalVersion; public class BigDecimalVersionTest { diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/DistributionStatusMessageTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/DistributionStatusMessageTest.java new file mode 100644 index 0000000000..0c6476ddef --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/DistributionStatusMessageTest.java @@ -0,0 +1,45 @@ +/*- + * ============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.asdc.client; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.onap.sdc.utils.DistributionStatusEnum; + +public class DistributionStatusMessageTest { + + @Test + public void distributionStatusMessageTest() { + String artifactUrl = "artifactUrl"; + String consumerId = "consumerId"; + String distributionId = "distributionId"; + Long timestamp = 123L; + DistributionStatusMessage distributionStatusMessage = new DistributionStatusMessage( + artifactUrl, consumerId, distributionId, DistributionStatusEnum.DEPLOY_OK, timestamp); + + assertEquals(artifactUrl, distributionStatusMessage.getArtifactURL()); + assertEquals(consumerId, distributionStatusMessage.getConsumerID()); + assertEquals(distributionId, distributionStatusMessage.getDistributionID()); + assertEquals(DistributionStatusEnum.DEPLOY_OK, distributionStatusMessage.getStatus()); + assertEquals(123L, distributionStatusMessage.getTimestamp()); + } +} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/YamlTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/YamlTest.java index 7179de736a..ed761c7f4d 100644 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/YamlTest.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/YamlTest.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.openecomp.mso.asdc.client; +package org.onap.so.asdc.client; import static org.junit.Assert.*; @@ -31,10 +31,8 @@ import java.util.List; import java.util.Set; import org.apache.commons.io.IOUtils; import org.junit.Test; - -import org.openecomp.mso.asdc.installer.heat.VfResourceInstaller; -import org.openecomp.mso.asdc.util.YamlEditor; -import org.openecomp.mso.db.catalog.beans.HeatTemplateParam; +import org.onap.so.asdc.util.YamlEditor; +import org.onap.so.db.catalog.beans.HeatTemplateParam; public class YamlTest { @@ -152,14 +150,4 @@ public class YamlTest { assertTrue(check1); assertTrue(check2); } - - @Test - public void VfResourceInstallerTest() throws Exception { - - assertTrue("mon ami toto, est dans le bois: toto ici".equals(VfResourceInstaller.verifyTheFilePrefixInString("mon ami toto, est dans le bois: toto ici","toto"))); - assertTrue("mon ami toto, est dans le bois: toto ici".equals(VfResourceInstaller.verifyTheFilePrefixInString("mon ami file:///toto, est dans le bois: file:///toto ici","toto"))); - assertTrue("mon ami toto, est dans le bois: toto ici".equals(VfResourceInstaller.verifyTheFilePrefixInString("mon ami file:///toto, est dans le bois: toto ici","toto"))); - assertTrue("mon ami toto, est dans le bois: toto ici".equals(VfResourceInstaller.verifyTheFilePrefixInString("mon ami toto, est dans le bois: file:///toto ici","toto"))); - - } } diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ASDCControllerExceptionTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ASDCControllerExceptionTest.java new file mode 100644 index 0000000000..e2aee6080e --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ASDCControllerExceptionTest.java @@ -0,0 +1,50 @@ +/*- + * ============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.asdc.client.exceptions; + +import static com.shazam.shazamcrest.MatcherAssert.assertThat; +import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; + +import org.junit.Test; + +public class ASDCControllerExceptionTest { + private String exceptionMessage = "test message for exception"; + private String throwableMessage = "separate throwable that caused asdcDownloadException"; + + @Test + public void asdcParametersExceptionTest() { + ASDCControllerException asdcDownloadException = new ASDCControllerException(exceptionMessage); + + Exception expectedException = new Exception(exceptionMessage); + + assertThat(asdcDownloadException, sameBeanAs(expectedException)); + } + + @Test + public void asdcParametersExceptionThrowableTest() { + Throwable throwableCause = new Throwable(throwableMessage); + ASDCControllerException asdcDownloadException = new ASDCControllerException(exceptionMessage, throwableCause); + + Exception expectedException = new Exception(exceptionMessage, new Throwable(throwableMessage)); + + assertThat(asdcDownloadException, sameBeanAs(expectedException)); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ASDCDownloadExceptionTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ASDCDownloadExceptionTest.java new file mode 100644 index 0000000000..98deb52a08 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ASDCDownloadExceptionTest.java @@ -0,0 +1,50 @@ +/*- + * ============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.asdc.client.exceptions; + +import static com.shazam.shazamcrest.MatcherAssert.assertThat; +import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; + +import org.junit.Test; + +public class ASDCDownloadExceptionTest { + private String exceptionMessage = "test message for exception"; + private String throwableMessage = "separate throwable that caused asdcDownloadException"; + + @Test + public void asdcDownloadExceptionTest() { + ASDCDownloadException asdcDownloadException = new ASDCDownloadException(exceptionMessage); + + Exception expectedException = new Exception(exceptionMessage); + + assertThat(asdcDownloadException, sameBeanAs(expectedException)); + } + + @Test + public void asdcDownloadExceptionThrowableTest() { + Throwable throwableCause = new Throwable(throwableMessage); + ASDCDownloadException asdcDownloadException = new ASDCDownloadException(exceptionMessage, throwableCause); + + Exception expectedException = new Exception(exceptionMessage, new Throwable(throwableMessage)); + + assertThat(asdcDownloadException, sameBeanAs(expectedException)); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ASDCParametersExceptionTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ASDCParametersExceptionTest.java new file mode 100644 index 0000000000..bac05bd47c --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ASDCParametersExceptionTest.java @@ -0,0 +1,50 @@ +/*- + * ============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.asdc.client.exceptions; + +import static com.shazam.shazamcrest.MatcherAssert.assertThat; +import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; + +import org.junit.Test; + +public class ASDCParametersExceptionTest { + private String exceptionMessage = "test message for exception"; + private String throwableMessage = "separate throwable that caused asdcDownloadException"; + + @Test + public void asdcParametersExceptionTest() { + ASDCParametersException asdcDownloadException = new ASDCParametersException(exceptionMessage); + + Exception expectedException = new Exception(exceptionMessage); + + assertThat(asdcDownloadException, sameBeanAs(expectedException)); + } + + @Test + public void asdcParametersExceptionThrowableTest() { + Throwable throwableCause = new Throwable(throwableMessage); + ASDCParametersException asdcDownloadException = new ASDCParametersException(exceptionMessage, throwableCause); + + Exception expectedException = new Exception(exceptionMessage, new Throwable(throwableMessage)); + + assertThat(asdcDownloadException, sameBeanAs(expectedException)); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ArtifactInstallerExceptionTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ArtifactInstallerExceptionTest.java new file mode 100644 index 0000000000..f2227908f5 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/exceptions/ArtifactInstallerExceptionTest.java @@ -0,0 +1,50 @@ +/*- + * ============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.asdc.client.exceptions; + +import static com.shazam.shazamcrest.MatcherAssert.assertThat; +import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; + +import org.junit.Test; + +public class ArtifactInstallerExceptionTest { + private String exceptionMessage = "test message for exception"; + private String throwableMessage = "separate throwable that caused asdcDownloadException"; + + @Test + public void asdcParametersExceptionTest() { + ArtifactInstallerException asdcDownloadException = new ArtifactInstallerException(exceptionMessage); + + Exception expectedException = new Exception(exceptionMessage); + + assertThat(asdcDownloadException, sameBeanAs(expectedException)); + } + + @Test + public void asdcParametersExceptionThrowableTest() { + Throwable throwableCause = new Throwable(throwableMessage); + ArtifactInstallerException asdcDownloadException = new ArtifactInstallerException(exceptionMessage, throwableCause); + + Exception expectedException = new Exception(exceptionMessage, new Throwable(throwableMessage)); + + assertThat(asdcDownloadException, sameBeanAs(expectedException)); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/ArtifactInfoImplTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/ArtifactInfoImplTest.java new file mode 100644 index 0000000000..3dc323559d --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/ArtifactInfoImplTest.java @@ -0,0 +1,49 @@ +/*- + * ============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.asdc.client.test.emulators; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; +import org.mockito.Mock; +import org.onap.sdc.api.notification.IArtifactInfo; +import org.onap.so.asdc.BaseTest; + +public class ArtifactInfoImplTest extends BaseTest { + @Mock + private IArtifactInfo iArtifactInfo; + + @Test + public void convertToArtifactInfoImplTest() { + List<IArtifactInfo> list = new ArrayList<IArtifactInfo>(); + list.add(iArtifactInfo); + assertEquals(1, ArtifactInfoImpl.convertToArtifactInfoImpl(list).size()); + } + + @Test + public void convertToArtifactInfoImplNullListTest() { + assertTrue(ArtifactInfoImpl.convertToArtifactInfoImpl(null).isEmpty()); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/DistributionClientEmulatorTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/DistributionClientEmulatorTest.java new file mode 100644 index 0000000000..38c2564241 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/DistributionClientEmulatorTest.java @@ -0,0 +1,178 @@ +/*- + * ============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.asdc.client.test.emulators; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.LinkedList; +import java.util.List; + +import org.junit.Before; +import org.junit.Test; +import org.onap.sdc.api.consumer.IDistributionStatusMessage; +import org.onap.sdc.api.results.IDistributionClientDownloadResult; +import org.onap.sdc.api.results.IDistributionClientResult; +import org.onap.sdc.impl.DistributionClientDownloadResultImpl; +import org.onap.sdc.impl.DistributionClientResultImpl; +import org.onap.sdc.utils.DistributionActionResultEnum; +import org.onap.sdc.utils.DistributionStatusEnum; +import org.onap.so.asdc.client.ASDCConfiguration; +import org.onap.so.asdc.client.ASDCNotificationCallBack; +import org.onap.so.asdc.client.ASDCStatusCallBack; +import org.onap.so.asdc.client.DistributionStatusMessage; + +public class DistributionClientEmulatorTest { + + private DistributionClientEmulator distClientEmulator; + + @Before + public void before() { + distClientEmulator = new DistributionClientEmulator(); + } + + @Test + public void getDistributionMessageReceived() { + List<IDistributionStatusMessage> receivedMessages = distClientEmulator.getDistributionMessageReceived(); + assertEquals(new LinkedList<>(), receivedMessages); + + IDistributionStatusMessage message = new DistributionStatusMessage("testArtifactUrl", "testConsumerId", "testDistributionId", DistributionStatusEnum.DOWNLOAD_OK, 123456); + distClientEmulator.sendDeploymentStatus(message); + assertEquals(message, receivedMessages.get(0)); + + IDistributionStatusMessage message2 = new DistributionStatusMessage("testArtifactUrl2", "testConsumerId2", "testDistributionId2", DistributionStatusEnum.DOWNLOAD_OK, 1234567); + distClientEmulator.sendDeploymentStatus(message2); + assertEquals(message2, receivedMessages.get(1)); + } + + @Test + public void sendDeploymentStatusPrimary() { + IDistributionStatusMessage message = new DistributionStatusMessage("testArtifactUrl", "testConsumerId", "testDistributionId", DistributionStatusEnum.DOWNLOAD_OK, 123456); + IDistributionClientResult result = distClientEmulator.sendDeploymentStatus(message); + IDistributionClientResult expectedResult = new DistributionClientResultImpl(DistributionActionResultEnum.SUCCESS,DistributionActionResultEnum.SUCCESS.name()); + assertEquals(message, distClientEmulator.getDistributionMessageReceived().get(0)); + assertEquals(expectedResult.getDistributionActionResult(), result.getDistributionActionResult()); + assertEquals(expectedResult.getDistributionMessageResult(), result.getDistributionMessageResult()); + } + + @Test + public void sendDeploymentStatusSecondary() { + IDistributionStatusMessage message = new DistributionStatusMessage("testArtifactUrl", "testConsumerId", "testDistributionId", DistributionStatusEnum.DOWNLOAD_OK, 123456); + IDistributionClientResult result = distClientEmulator.sendDeploymentStatus(message, "test"); + IDistributionClientResult expectedResult = new DistributionClientResultImpl(DistributionActionResultEnum.SUCCESS,DistributionActionResultEnum.SUCCESS.name()); + assertEquals(message, distClientEmulator.getDistributionMessageReceived().get(0)); + assertEquals(expectedResult.getDistributionActionResult(), result.getDistributionActionResult()); + assertEquals(expectedResult.getDistributionMessageResult(), result.getDistributionMessageResult()); + } + + @Test + public void sendDownloadStatusPrimary() { + IDistributionStatusMessage message = new DistributionStatusMessage("testArtifactUrl", "testConsumerId", "testDistributionId", DistributionStatusEnum.DOWNLOAD_OK, 123456); + IDistributionClientResult result = distClientEmulator.sendDownloadStatus(message); + IDistributionClientResult expectedResult = new DistributionClientResultImpl(DistributionActionResultEnum.SUCCESS,DistributionActionResultEnum.SUCCESS.name()); + assertEquals(message, distClientEmulator.getDistributionMessageReceived().get(0)); + assertEquals(expectedResult.getDistributionActionResult(), result.getDistributionActionResult()); + assertEquals(expectedResult.getDistributionMessageResult(), result.getDistributionMessageResult()); + } + + @Test + public void sendDownloadStatusSecondary() { + IDistributionStatusMessage message = new DistributionStatusMessage("testArtifactUrl", "testConsumerId", "testDistributionId", DistributionStatusEnum.DOWNLOAD_OK, 123456); + IDistributionClientResult result = distClientEmulator.sendDownloadStatus(message, "test"); + IDistributionClientResult expectedResult = new DistributionClientResultImpl(DistributionActionResultEnum.SUCCESS,DistributionActionResultEnum.SUCCESS.name()); + assertEquals(message, distClientEmulator.getDistributionMessageReceived().get(0)); + assertEquals(expectedResult.getDistributionActionResult(), result.getDistributionActionResult()); + assertEquals(expectedResult.getDistributionMessageResult(), result.getDistributionMessageResult()); + } + + @Test + public void initPrimary() { + IDistributionClientResult result = distClientEmulator.init(new ASDCConfiguration(), new ASDCNotificationCallBack()); + IDistributionClientResult expectedResult = new DistributionClientResultImpl(DistributionActionResultEnum.SUCCESS,DistributionActionResultEnum.SUCCESS.name()); + assertEquals(expectedResult.getDistributionActionResult(), result.getDistributionActionResult()); + assertEquals(expectedResult.getDistributionMessageResult(), result.getDistributionMessageResult()); + } + + @Test + public void initSecondary() { + IDistributionClientResult result = distClientEmulator.init(new ASDCConfiguration(), new ASDCNotificationCallBack(), new ASDCStatusCallBack()); + IDistributionClientResult expectedResult = new DistributionClientResultImpl(DistributionActionResultEnum.SUCCESS,DistributionActionResultEnum.SUCCESS.name()); + assertEquals(expectedResult.getDistributionActionResult(), result.getDistributionActionResult()); + assertEquals(expectedResult.getDistributionMessageResult(), result.getDistributionMessageResult()); + } + + @Test + public void start() { + IDistributionClientResult result = distClientEmulator.start(); + IDistributionClientResult expectedResult = new DistributionClientResultImpl(DistributionActionResultEnum.SUCCESS,DistributionActionResultEnum.SUCCESS.name()); + assertEquals(expectedResult.getDistributionActionResult(), result.getDistributionActionResult()); + assertEquals(expectedResult.getDistributionMessageResult(), result.getDistributionMessageResult()); + } + + @Test + public void stop() { + IDistributionClientResult result = distClientEmulator.stop(); + IDistributionClientResult expectedResult = new DistributionClientResultImpl(DistributionActionResultEnum.SUCCESS,DistributionActionResultEnum.SUCCESS.name()); + assertEquals(expectedResult.getDistributionActionResult(), result.getDistributionActionResult()); + assertEquals(expectedResult.getDistributionMessageResult(), result.getDistributionMessageResult()); + } + + @Test + public void updateConfiguration() { + IDistributionClientResult result = distClientEmulator.updateConfiguration(new ASDCConfiguration()); + IDistributionClientResult expectedResult = new DistributionClientResultImpl(DistributionActionResultEnum.SUCCESS,DistributionActionResultEnum.SUCCESS.name()); + assertEquals(expectedResult.getDistributionActionResult(), result.getDistributionActionResult()); + assertEquals(expectedResult.getDistributionMessageResult(), result.getDistributionMessageResult()); + } + + @Test + public void getResourcePath() { + String testResourcePath = "testResourcePath"; + distClientEmulator = new DistributionClientEmulator(testResourcePath); + assertEquals(testResourcePath, distClientEmulator.getResourcePath()); + } + + @Test + public void setResourcePath() { + String testResourcePath = "testResourcePath"; + distClientEmulator.setResourcePath(testResourcePath); + assertEquals(testResourcePath, distClientEmulator.getResourcePath()); + } + + @Test + public void downloadSuccess() throws IOException { + ArtifactInfoImpl info = new ArtifactInfoImpl(); + info.setArtifactURL("mso.json"); + info.setArtifactName("testArtifactName"); + + distClientEmulator.setResourcePath("src/test/resources/"); + + IDistributionClientDownloadResult result = distClientEmulator.download(info); + + byte[] expectedInputStream = Files.readAllBytes(Paths.get(distClientEmulator.getResourcePath() + info.getArtifactURL())); + IDistributionClientDownloadResult expectedResult = new DistributionClientDownloadResultImpl(DistributionActionResultEnum.SUCCESS, DistributionActionResultEnum.SUCCESS.name(), info.getArtifactName(), expectedInputStream); + + assertEquals(expectedResult.getDistributionActionResult(), result.getDistributionActionResult()); + assertEquals(expectedResult.getDistributionMessageResult(), result.getDistributionMessageResult()); + } +} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonStatusDataTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/JsonStatusDataTest.java index 760783206c..5e2f1ad828 100644 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonStatusDataTest.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/JsonStatusDataTest.java @@ -7,9 +7,9 @@ * 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. @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.openecomp.mso.asdc.client.test.emulators; +package org.onap.so.asdc.client.test.emulators; import org.junit.Test; diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/JsonVfModuleMetaDataTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/JsonVfModuleMetaDataTest.java new file mode 100644 index 0000000000..6da3a2c18c --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/JsonVfModuleMetaDataTest.java @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei 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.asdc.client.test.emulators; + +import static org.junit.Assert.assertEquals; + +import java.util.HashMap; + +import org.junit.Test; + +public class JsonVfModuleMetaDataTest { + + @Test + public void attributesMapTest() { + JsonVfModuleMetaData vfModuleMetadata = new JsonVfModuleMetaData(); + vfModuleMetadata.setAttribute("vfModuleModelDescription", "vfModuleModelDescription"); + vfModuleMetadata.setAttribute("vfModuleModelInvariantUUID", "vfModuleModelInvariantUUID"); + vfModuleMetadata.setAttribute("vfModuleModelCustomizationUUID", "vfModuleModelCustomizationUUID"); + vfModuleMetadata.setAttribute("vfModuleModelName", "vfModuleModelName"); + vfModuleMetadata.setAttribute("vfModuleModelUUID", "vfModuleModelUUID"); + vfModuleMetadata.setAttribute("vfModuleModelVersion", "vfModuleModelVersion"); + vfModuleMetadata.setAttribute("isBase", true); + + assertEquals("vfModuleModelDescription", vfModuleMetadata.getVfModuleModelDescription()); + assertEquals("vfModuleModelInvariantUUID", vfModuleMetadata.getVfModuleModelInvariantUUID()); + assertEquals("vfModuleModelCustomizationUUID", vfModuleMetadata.getVfModuleModelCustomizationUUID()); + assertEquals("vfModuleModelName", vfModuleMetadata.getVfModuleModelName()); + assertEquals("vfModuleModelUUID", vfModuleMetadata.getVfModuleModelUUID()); + assertEquals("vfModuleModelVersion", vfModuleMetadata.getVfModuleModelVersion()); + assertEquals(true, vfModuleMetadata.isBase()); + assertEquals(null, vfModuleMetadata.getArtifacts()); + assertEquals(new HashMap<String, String>(), vfModuleMetadata.getProperties()); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/NotificationDataImplTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/NotificationDataImplTest.java new file mode 100644 index 0000000000..b1524e015f --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/NotificationDataImplTest.java @@ -0,0 +1,59 @@ +/*- + * ============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.asdc.client.test.emulators; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; +import org.mockito.Mock; +import org.onap.so.asdc.BaseTest; +import org.springframework.beans.factory.annotation.Autowired; + +public class NotificationDataImplTest extends BaseTest { + @Autowired + private NotificationDataImpl notificationDataImpl; + + @Mock + private ArtifactInfoImpl artifactInfoImpl; + + private static final String NOTIFICATION_DATA_IMPL_STRING = "NotificationDataImpl [distributionID=distributionID, serviceName=serviceName, " + + "serviceVersion=serviceVersion, serviceUUID=serviceUUID, serviceDescription=serviceDescription, " + + "serviceInvariantUUID=serviceInvariantUUID, resources=null, serviceArtifacts=[artifactInfoImpl], workloadContext=workloadContext]"; + + @Test + public void toStringTest() { + List<ArtifactInfoImpl> relevantServiceArtifacts = new ArrayList<ArtifactInfoImpl>(); + relevantServiceArtifacts.add(artifactInfoImpl); + notificationDataImpl.setDistributionID("distributionID"); + notificationDataImpl.setServiceName("serviceName"); + notificationDataImpl.setServiceVersion("serviceVersion"); + notificationDataImpl.setServiceDescription("serviceDescription"); + notificationDataImpl.setServiceUUID("serviceUUID"); + notificationDataImpl.setServiceInvariantUUID("serviceInvariantUUID"); + notificationDataImpl.setWorkloadContext("workloadContext"); + notificationDataImpl.setServiceArtifacts(relevantServiceArtifacts); + + assertEquals(NOTIFICATION_DATA_IMPL_STRING, notificationDataImpl.toString()); + } +} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/tenantIsolation/AaiClientPropertiesImplTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/ResourceInfoImplTest.java index f61488b5f2..423661770b 100644 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/tenantIsolation/AaiClientPropertiesImplTest.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/emulators/ResourceInfoImplTest.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP - SO * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * 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. @@ -18,31 +18,34 @@ * ============LICENSE_END========================================================= */ -package org.openecomp.mso.asdc.tenantIsolation; +package org.onap.so.asdc.client.test.emulators; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; import org.junit.Test; -import org.openecomp.mso.properties.MsoJavaProperties; -import org.openecomp.mso.properties.MsoPropertiesFactory; +import org.mockito.Mock; +import org.onap.sdc.api.notification.IResourceInstance; +import org.onap.so.asdc.BaseTest; -public class AaiClientPropertiesImplTest { +public class ResourceInfoImplTest extends BaseTest { + @Mock + private IResourceInstance iResourceInstance; - private static final String ASDC_CLIENTS_PROP = - MsoJavaProperties.class.getClassLoader().getResource("mso.asdc.clients.properties").toString().substring(5); - @Test - public void testGetEndpoint() throws Exception { - - MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory(); - msoPropertiesFactory.removeAllMsoProperties(); - msoPropertiesFactory.initializeMsoProperties(AsdcPropertiesUtils.MSO_ASDC_CLIENTS, this.ASDC_CLIENTS_PROP); - - AaiClientPropertiesImpl aaiPropertiesImpl = new AaiClientPropertiesImpl(); - String aaiEndpoint = aaiPropertiesImpl.getEndpoint().toString(); - - assertEquals("AAI endpoint", "http://localhost:28090", aaiEndpoint); + public void convertToJsonContainerTest() { + List<IResourceInstance> resources = new ArrayList<IResourceInstance>(); + resources.add(iResourceInstance); + ResourceInfoImpl.convertToJsonContainer(resources); + assertEquals(1, ResourceInfoImpl.convertToJsonContainer(resources).size()); } + @Test + public void convertToJsonContainerNullListTest() { + assertTrue(ResourceInfoImpl.convertToJsonContainer(null).isEmpty()); + } } diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/ASDCRestInterfaceTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/ASDCRestInterfaceTest.java new file mode 100644 index 0000000000..1944c3af73 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/ASDCRestInterfaceTest.java @@ -0,0 +1,183 @@ +/*- + * ============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.asdc.client.test.rest; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.post; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching; +import static com.shazam.shazamcrest.MatcherAssert.assertThat; +import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.transaction.Transactional; +import javax.ws.rs.core.Response; + +import org.junit.Ignore; +import org.junit.Test; +import org.mockito.Spy; +import org.onap.so.asdc.BaseTest; +import org.onap.so.asdc.client.test.emulators.DistributionClientEmulator; +import org.onap.so.asdc.client.test.emulators.NotificationDataImpl; +import org.onap.so.db.catalog.beans.AllottedResource; +import org.onap.so.db.catalog.beans.AllottedResourceCustomization; +import org.onap.so.db.catalog.beans.CollectionResource; +import org.onap.so.db.catalog.beans.CollectionResourceCustomization; +import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization; +import org.onap.so.db.catalog.beans.ConfigurationResource; +import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization; +import org.onap.so.db.catalog.beans.InstanceGroup; +import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization; +import org.onap.so.db.catalog.beans.NetworkResource; +import org.onap.so.db.catalog.beans.NetworkResourceCustomization; +import org.onap.so.db.catalog.beans.Service; +import org.onap.so.db.catalog.beans.ServiceProxyResource; +import org.onap.so.db.catalog.beans.ServiceProxyResourceCustomization; +import org.onap.so.db.catalog.beans.ServiceRecipe; +import org.onap.so.db.catalog.beans.ToscaCsar; +import org.onap.so.db.catalog.beans.VnfResourceCustomization; +import org.onap.so.db.catalog.beans.VnfcInstanceGroupCustomization; +import org.onap.so.db.catalog.data.repository.AllottedResourceCustomizationRepository; +import org.onap.so.db.catalog.data.repository.AllottedResourceRepository; +import org.onap.so.db.catalog.data.repository.CollectionResourceInstanceGroupCustomizationRepository; +import org.onap.so.db.catalog.data.repository.CollectionResourceRepository; +import org.onap.so.db.catalog.data.repository.ConfigurationResourceRepository; +import org.onap.so.db.catalog.data.repository.InstanceGroupRepository; +import org.onap.so.db.catalog.data.repository.NetworkResourceRepository; +import org.onap.so.db.catalog.data.repository.ServiceProxyResourceRepository; +import org.onap.so.db.catalog.data.repository.ServiceRepository; +import org.onap.so.db.catalog.data.repository.VnfcInstanceGroupCustomizationRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.embedded.LocalServerPort; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class ASDCRestInterfaceTest extends BaseTest { + //ASDC Controller writes to this path + static { + System.setProperty("mso.config.path", "src/test/resources/"); + } + + + @Autowired + private AllottedResourceRepository allottedRepo; + + @Autowired + private ServiceRepository serviceRepo; + + @Autowired + private NetworkResourceRepository networkRepo; + + @Autowired + private ASDCRestInterface asdcRestInterface; + + private TestRestTemplate restTemplate = new TestRestTemplate("test", "test"); + + private HttpHeaders headers = new HttpHeaders(); + + @Spy + DistributionClientEmulator spyClient = new DistributionClientEmulator(); + + @LocalServerPort + private int port; + + + @Test + @Transactional + public void testAllottedResourceService() throws Exception { + + stubFor(post(urlPathMatching("/aai/.*")) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-Type", "application/json"))); + + ObjectMapper mapper = new ObjectMapper(); + NotificationDataImpl request = mapper.readValue(new File("src/test/resources/resource-examples/allottedresource/notif-portm.json"), NotificationDataImpl.class); + headers.add("resource-location", "src/test/resources/resource-examples/allottedresource/"); + HttpEntity<NotificationDataImpl> entity = new HttpEntity<NotificationDataImpl>(request, headers); + + ResponseEntity<String> response = restTemplate.exchange(createURLWithPort("test/treatNotification/v1"), HttpMethod.POST, + entity, String.class); + + assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value()); + + AllottedResource expectedService = new AllottedResource(); + expectedService.setDescription("rege1802pnf"); + expectedService.setModelInvariantUUID("b8f83c3f-077c-4e2c-b489-c66382060436"); + expectedService.setModelName("rege1802pnf"); + expectedService.setModelUUID("5b18c75e-2d08-4bf2-ad58-4ea704ec648d"); + expectedService.setModelVersion("1.0"); + expectedService.setSubcategory("Contrail Route"); + expectedService.setToscaNodeType("org.openecomp.resource.pnf.Rege1802pnf"); + Set<AllottedResourceCustomization> arCustomizationSet = new HashSet<AllottedResourceCustomization>(); + AllottedResourceCustomization arCustomization = new AllottedResourceCustomization(); + arCustomization.setModelCustomizationUUID("f62bb612-c5d4-4406-865c-0abec30631ba"); + arCustomization.setModelInstanceName("rege1802pnf 0"); + arCustomizationSet.add(arCustomization); + + arCustomization.setAllottedResource(expectedService); + + + expectedService.setAllotedResourceCustomization(arCustomizationSet); + + AllottedResource actualResponse = allottedRepo.findResourceByModelUUID("5b18c75e-2d08-4bf2-ad58-4ea704ec648d"); + + + if(actualResponse == null) + throw new Exception("No Allotted Resource Written to database"); + + + assertThat(actualResponse, sameBeanAs(expectedService).ignoring("0x1.created").ignoring("0x1.allotedResourceCustomization.created")); + } + + @Test + public void invokeASDCStatusDataNullTest() { + String request = ""; + Response response = asdcRestInterface.invokeASDCStatusData(request); + assertNull(response); + + } + + + + + + protected String createURLWithPort(String uri) { + return "http://localhost:" + port + uri; + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/HealthCheckTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/HealthCheckTest.java new file mode 100644 index 0000000000..f5f7445771 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/test/rest/HealthCheckTest.java @@ -0,0 +1,65 @@ +/*- + * ============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.asdc.client.test.rest; + +import static org.junit.Assert.assertEquals; +import javax.ws.rs.core.Response; +import org.json.JSONException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.so.asdc.Application; +import org.onap.so.asdc.BaseTest; +import org.springframework.boot.context.embedded.LocalServerPort; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +public class HealthCheckTest extends BaseTest { + + @LocalServerPort + private int port; + + TestRestTemplate restTemplate = new TestRestTemplate(); + + HttpHeaders headers = new HttpHeaders(); + + @Test + public void testHealthcheck() throws JSONException { + + HttpEntity<String> entity = new HttpEntity<String>(null, headers); + + ResponseEntity<String> response = restTemplate.exchange( + createURLWithPort("/manage/health"), + HttpMethod.GET, entity, String.class); + + assertEquals(Response.Status.OK.getStatusCode(),response.getStatusCode().value()); + } + + private String createURLWithPort(String uri) { + return "http://localhost:" + port + uri; + } + +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/tests/ASDCConfigurationTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/tests/ASDCConfigurationTest.java new file mode 100644 index 0000000000..6f07f44e2b --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/tests/ASDCConfigurationTest.java @@ -0,0 +1,152 @@ +/*- + * ============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.asdc.client.tests; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import javax.transaction.Transactional; + +import org.junit.Test; +import org.onap.so.asdc.BaseTest; +import org.onap.so.asdc.client.ASDCConfiguration; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * This class tests the ASDC Controller by using the ASDC Mock CLient + * + * + */ +@Transactional +public class ASDCConfigurationTest extends BaseTest { + + @Autowired + private ASDCConfiguration config; + + private List<String> msgBusAddressList = new ArrayList<String>(); + + private static final String MSO_PRE_IST = "msopreist"; + private static final String MSO_ASDC_ID_LOCAL = "msoasdc-id-local"; + private static final String PRE_IST = "Pre-IST"; + private static final String ASDC_ADDRESS = "localhost:8443"; + + @Test + public void isUseHttpsWithDmaapTest() { + assertFalse(config.isUseHttpsWithDmaap()); + } + + @Test + public void isConsumeProduceStatusTopicTest() { + assertTrue(config.isConsumeProduceStatusTopic()); + } + + @Test + public void getUserTest() { + assertTrue(MSO_PRE_IST.equals(config.getUser())); + } + + @Test + public void getConsumerGroupTest() { + assertTrue(MSO_ASDC_ID_LOCAL.equals(config.getConsumerGroup())); + } + + @Test + public void getConsumerIDTest() { + assertTrue(MSO_ASDC_ID_LOCAL.equals(config.getConsumerID())); + } + + @Test + public void getEnvironmentNameTest() { + assertTrue(PRE_IST.equals(config.getEnvironmentName())); + } + + @Test + public void getAsdcAddress() { + assertTrue(ASDC_ADDRESS.equals(config.getAsdcAddress())); + } + + @Test + public void getPasswordTest() { + assertTrue(MSO_PRE_IST.equals(config.getPassword())); + } + + @Test + public void getPollingIntervalTest() { + assertTrue(config.getPollingInterval() == 30); + } + + @Test + public void getPollingTimeoutTest() { + assertTrue(config.getPollingTimeout() == 30); + } + + @Test + public void getRelevantArtifactTypesTest() { + assertTrue(config.getRelevantArtifactTypes().size() == ASDCConfiguration.SUPPORTED_ARTIFACT_TYPES_LIST.size()); + } + + @Test + public void getWatchDogTimeoutTest() { + assertTrue(config.getWatchDogTimeout() == 1); + } + + @Test + public void activateServerTLSAuthTest() { + assertFalse(config.activateServerTLSAuth()); + } + + @Test + public void getKeyStorePasswordTest() { + assertNull(config.getKeyStorePassword()); + } + + @Test + public void getKeyStorePathTest() { + assertNull(config.getKeyStorePath()); + } + + @Test + public void isFilterInEmptyResourcesTest() { + assertTrue(config.isFilterInEmptyResources()); + } + + @Test + public void setGetAsdcControllerNameTest() { + String asdcControllerName = "testAsdcControllerName"; + config.setAsdcControllerName(asdcControllerName); + String actualAsdcControllerName = config.getAsdcControllerName(); + assertEquals(asdcControllerName, actualAsdcControllerName); + } + + @Test + public void getMsgBusAddressTest() { + msgBusAddressList.add("localhost"); + msgBusAddressList.add("localhost"); + + List<String> actualMsgBusAddress = config.getMsgBusAddress(); + assertEquals(msgBusAddressList, actualMsgBusAddress); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/installer/ToscaResourceStructureTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/installer/ToscaResourceStructureTest.java new file mode 100644 index 0000000000..de0d2e08a1 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/installer/ToscaResourceStructureTest.java @@ -0,0 +1,135 @@ +/*- + * ============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.asdc.installer; + +import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.onap.sdc.tosca.parser.impl.SdcCsarHelperImpl; +import org.onap.sdc.toscaparser.api.NodeTemplate; +import org.onap.sdc.toscaparser.api.elements.Metadata; +import org.onap.so.asdc.client.exceptions.ASDCDownloadException; +import org.onap.so.asdc.client.test.emulators.ArtifactInfoImpl; +import org.onap.so.db.catalog.beans.AllottedResource; +import org.onap.so.db.catalog.beans.AllottedResourceCustomization; +import org.onap.so.db.catalog.beans.NetworkResource; +import org.onap.so.db.catalog.beans.NetworkResourceCustomization; +import org.onap.so.db.catalog.beans.Service; +import org.onap.so.db.catalog.beans.TempNetworkHeatTemplateLookup; +import org.onap.so.db.catalog.beans.ToscaCsar; +import org.onap.so.db.catalog.beans.VfModule; +import org.onap.so.db.catalog.beans.VfModuleCustomization; +import org.onap.so.db.catalog.beans.VnfResourceCustomization; + +public class ToscaResourceStructureTest { + private ArtifactInfoImpl artifactInfo; + private SdcCsarHelperImpl sdcCsarHelper; + + private ToscaResourceStructure toscaResourceStructure; + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Test + public void toscaResourceStructureBeanTest() { + artifactInfo = mock(ArtifactInfoImpl.class); + sdcCsarHelper = mock(SdcCsarHelperImpl.class); + + toscaResourceStructure = new ToscaResourceStructure(); + toscaResourceStructure.setHeatTemplateUUID("heatTemplateUUID"); + toscaResourceStructure.setAllottedList(new ArrayList<NodeTemplate>()); + toscaResourceStructure.setSdcCsarHelper(sdcCsarHelper); + toscaResourceStructure.setServiceMetadata(new Metadata(new HashMap<>())); + toscaResourceStructure.setCatalogService(new Service()); + toscaResourceStructure.setNetworkTypes(new ArrayList<>()); + toscaResourceStructure.setVfTypes(new ArrayList<>()); + toscaResourceStructure.setCatalogResourceCustomization(new AllottedResourceCustomization()); + toscaResourceStructure.setCatalogNetworkResourceCustomization(new NetworkResourceCustomization()); + toscaResourceStructure.setCatalogNetworkResource(new NetworkResource()); + toscaResourceStructure.setCatalogVfModule(new VfModule()); + toscaResourceStructure.setVnfResourceCustomization(new VnfResourceCustomization()); + toscaResourceStructure.setVfModuleCustomization(new VfModuleCustomization()); + toscaResourceStructure.setAllottedResource(new AllottedResource()); + toscaResourceStructure.setAllottedResourceCustomization(new AllottedResourceCustomization()); + toscaResourceStructure.setCatalogTempNetworkHeatTemplateLookup(new TempNetworkHeatTemplateLookup()); + toscaResourceStructure.setHeatFilesUUID("heatFilesUUID"); + toscaResourceStructure.setToscaArtifact(artifactInfo); + toscaResourceStructure.setToscaCsar(new ToscaCsar()); + toscaResourceStructure.setVnfAlreadyInstalled(true); + toscaResourceStructure.setVolHeatTemplateUUID("volHeatTemplateUUID"); + toscaResourceStructure.setEnvHeatTemplateUUID("envHeatTemplateUUID"); + toscaResourceStructure.setServiceVersion("serviceVersion"); + toscaResourceStructure.setWorkloadPerformance("workloadPerformance"); + toscaResourceStructure.setVfModule(new VfModule()); + toscaResourceStructure.setTempNetworkHeatTemplateLookup(new TempNetworkHeatTemplateLookup()); + toscaResourceStructure.setSuccessfulDeployment(); + + assertEquals("heatTemplateUUID", toscaResourceStructure.getHeatTemplateUUID()); + assertThat(toscaResourceStructure.getAllottedList(), sameBeanAs(new ArrayList<NodeTemplate>())); + assertEquals(sdcCsarHelper, toscaResourceStructure.getSdcCsarHelper()); + assertThat(toscaResourceStructure.getServiceMetadata(), sameBeanAs(new Metadata(new HashMap<>()))); + assertThat(toscaResourceStructure.getCatalogService(), sameBeanAs(new Service())); + assertThat(toscaResourceStructure.getNetworkTypes(), sameBeanAs(new ArrayList<>())); + assertThat(toscaResourceStructure.getVfTypes(), sameBeanAs(new ArrayList<>())); + assertThat(toscaResourceStructure.getCatalogResourceCustomization(), sameBeanAs(new AllottedResourceCustomization())); + assertThat(toscaResourceStructure.getCatalogNetworkResourceCustomization(), sameBeanAs(new NetworkResourceCustomization())); + assertThat(toscaResourceStructure.getCatalogNetworkResource(), sameBeanAs(new NetworkResource())); + assertThat(toscaResourceStructure.getCatalogVfModule(), sameBeanAs(new VfModule())); + assertThat(toscaResourceStructure.getVnfResourceCustomization(), sameBeanAs(new VnfResourceCustomization())); + assertThat(toscaResourceStructure.getVfModuleCustomization(), sameBeanAs(new VfModuleCustomization())); + assertThat(toscaResourceStructure.getAllottedResource(), sameBeanAs(new AllottedResource())); + assertThat(toscaResourceStructure.getAllottedResourceCustomization(), sameBeanAs(new AllottedResourceCustomization())); + assertThat(toscaResourceStructure.getCatalogTempNetworkHeatTemplateLookup(), sameBeanAs(new TempNetworkHeatTemplateLookup())); + assertEquals("heatFilesUUID", toscaResourceStructure.getHeatFilesUUID()); + assertEquals(artifactInfo, toscaResourceStructure.getToscaArtifact()); + assertThat(toscaResourceStructure.getToscaCsar(), sameBeanAs(new ToscaCsar())); + assertEquals(true, toscaResourceStructure.isVnfAlreadyInstalled()); + assertEquals("volHeatTemplateUUID", toscaResourceStructure.getVolHeatTemplateUUID()); + assertEquals("envHeatTemplateUUID", toscaResourceStructure.getEnvHeatTemplateUUID()); + assertEquals("serviceVersion", toscaResourceStructure.getServiceVersion()); + assertEquals("workloadPerformance", toscaResourceStructure.getWorkloadPerformance()); + assertThat(toscaResourceStructure.getVfModule(), sameBeanAs(new VfModule())); + assertThat(toscaResourceStructure.getTempNetworkHeatTemplateLookup(), sameBeanAs(new TempNetworkHeatTemplateLookup())); + assertEquals(true, toscaResourceStructure.isDeployedSuccessfully()); + } + + @Test + public void updateResourceStructureExceptionTest() throws Exception { + expectedException.expect(ASDCDownloadException.class); + + artifactInfo = mock(ArtifactInfoImpl.class); + toscaResourceStructure = new ToscaResourceStructure(); + + doReturn("artifactName").when(artifactInfo).getArtifactName(); + + toscaResourceStructure.updateResourceStructure(artifactInfo); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java new file mode 100644 index 0000000000..d96e480945 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java @@ -0,0 +1,479 @@ +/*- + * ============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.asdc.installer.heat; + +import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; +import static com.shazam.shazamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertEquals; + +import static org.junit.Assert.assertNull; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.io.File; +import java.io.FileInputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import javax.transaction.Transactional; + +import org.apache.commons.io.IOUtils; +import org.hibernate.exception.LockAcquisitionException; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.onap.sdc.api.notification.IResourceInstance; +import org.onap.sdc.api.results.IDistributionClientDownloadResult; +import org.onap.sdc.tosca.parser.impl.SdcCsarHelperImpl; +import org.onap.sdc.tosca.parser.impl.SdcPropertyNames; +import org.onap.sdc.toscaparser.api.CapabilityAssignment; +import org.onap.sdc.toscaparser.api.CapabilityAssignments; +import org.onap.sdc.toscaparser.api.Group; +import org.onap.sdc.toscaparser.api.NodeTemplate; +import org.onap.sdc.toscaparser.api.elements.Metadata; +import org.onap.sdc.utils.DistributionStatusEnum; +import org.onap.so.asdc.BaseTest; +import org.onap.so.asdc.client.ASDCConfiguration; +import org.onap.so.asdc.client.exceptions.ArtifactInstallerException; +import org.onap.so.asdc.client.test.emulators.ArtifactInfoImpl; +import org.onap.so.asdc.client.test.emulators.JsonStatusData; +import org.onap.so.asdc.client.test.emulators.NotificationDataImpl; +import org.onap.so.asdc.installer.VfModuleArtifact; +import org.onap.so.asdc.installer.VfResourceStructure; +import org.onap.so.db.catalog.beans.AllottedResource; +import org.onap.so.db.catalog.beans.AllottedResourceCustomization; +import org.onap.so.db.catalog.beans.ExternalServiceToInternalService; +import org.onap.so.db.catalog.beans.HeatTemplate; +import org.onap.so.db.catalog.beans.NetworkResource; +import org.onap.so.db.catalog.beans.NetworkResourceCustomization; +import org.onap.so.db.catalog.beans.Service; +import org.onap.so.db.catalog.beans.VnfResource; +import org.onap.so.db.catalog.beans.VnfResourceCustomization; +import org.onap.so.db.catalog.data.repository.AllottedResourceCustomizationRepository; +import org.onap.so.db.catalog.data.repository.AllottedResourceRepository; +import org.onap.so.db.catalog.data.repository.ExternalServiceToInternalServiceRepository; +import org.onap.so.db.catalog.data.repository.ServiceRepository; +import org.onap.so.db.request.beans.WatchdogComponentDistributionStatus; +import org.onap.so.db.request.beans.WatchdogDistributionStatus; +import org.onap.so.db.request.beans.WatchdogServiceModVerIdLookup; +import org.onap.so.db.request.data.repository.WatchdogComponentDistributionStatusRepository; +import org.springframework.beans.factory.annotation.Autowired; + +public class ToscaResourceInstallerTest extends BaseTest { + @Autowired + private ToscaResourceInstaller toscaInstaller; + @Autowired + private WatchdogComponentDistributionStatusRepository watchdogCDStatusRepository; + @Autowired + private AllottedResourceRepository allottedRepo; + @Autowired + private AllottedResourceCustomizationRepository allottedCustomizationRepo; + @Autowired + private ServiceRepository serviceRepo; + @Autowired + private ExternalServiceToInternalServiceRepository externalServiceToInternalServiceRepository; + @Mock + private SdcCsarHelperImpl sdcCsarHelper; + @Mock + private Metadata metadata; + @Mock + private ArtifactInfoImpl artifactInfo; + @Mock + private List<Group> vfGroups; + @Mock + private IResourceInstance resourceInstance; + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + private NotificationDataImpl notificationData; + private JsonStatusData statusData; + private static final String MSO = "SO"; + + private AllottedResource allottedResource; + private AllottedResourceCustomization allottedResourceCustomization; + private Service catalogService; + + @Before + public void before() { + MockitoAnnotations.initMocks(this); + + notificationData = new NotificationDataImpl(); + statusData = new JsonStatusData(); + } + + @Test + public void isResourceAlreadyDeployedTest() throws Exception { + notificationData.setServiceName("serviceName"); + notificationData.setServiceVersion("123456"); + notificationData.setServiceUUID("serviceUUID"); + notificationData.setDistributionID("testStatusSuccessTosca"); + + WatchdogComponentDistributionStatus expectedComponentDistributionStatus = + new WatchdogComponentDistributionStatus(notificationData.getDistributionID(), MSO); + expectedComponentDistributionStatus.setComponentDistributionStatus(DistributionStatusEnum.COMPONENT_DONE_OK.name()); + + doReturn(true).when(vfResourceStructure).isDeployedSuccessfully(); + doReturn(notificationData).when(vfResourceStructure).getNotification(); + doReturn(resourceInstance).when(vfResourceStructure).getResourceInstance(); + doReturn("resourceInstanceName").when(resourceInstance).getResourceInstanceName(); + doReturn("resourceCustomizationUUID").when(resourceInstance).getResourceCustomizationUUID(); + doReturn("resourceName").when(resourceInstance).getResourceName(); + + toscaInstaller.isResourceAlreadyDeployed(vfResourceStructure); + + WatchdogComponentDistributionStatus actualWatchdogComponentDistributionStatus = getWatchdogCDStatusWithName(watchdogCDStatusRepository.findByDistributionId(notificationData.getDistributionID()), MSO); + + verify(vfResourceStructure, times(3)).getResourceInstance(); + verify(vfResourceStructure, times(5)).getNotification(); + assertThat(actualWatchdogComponentDistributionStatus, sameBeanAs(expectedComponentDistributionStatus) + .ignoring("createTime") + .ignoring("modifyTime")); + } + + @Test + public void isResourceAlreadyDeployedFalseTest() throws Exception { + notificationData.setServiceName("serviceName"); + notificationData.setServiceVersion("123456"); + notificationData.setServiceUUID("serviceUUID"); + notificationData.setDistributionID("testStatusSuccess"); + + doThrow(RuntimeException.class).when(vfResourceStructure).isDeployedSuccessfully(); + doReturn(notificationData).when(vfResourceStructure).getNotification(); + doReturn(resourceInstance).when(vfResourceStructure).getResourceInstance(); + doReturn("resourceInstanceName").when(resourceInstance).getResourceInstanceName(); + doReturn("resourceCustomizationUUID").when(resourceInstance).getResourceCustomizationUUID(); + doReturn("resourceName").when(resourceInstance).getResourceName(); + + toscaInstaller.isResourceAlreadyDeployed(vfResourceStructure); + + verify(vfResourceStructure, times(3)).getResourceInstance(); + verify(vfResourceStructure, times(4)).getNotification(); + } + + @Test + public void isResourceAlreadyDeployedExceptionTest() throws ArtifactInstallerException { + expectedException.expect(ArtifactInstallerException.class); + + toscaInstaller.isResourceAlreadyDeployed(vfResourceStructure); + } + + @Test + public void installTheComponentStatusTest() throws Exception { + String distributionId = "testStatusSuccessTosca"; + String componentName = "testComponentName"; + + statusData = spy(JsonStatusData.class); + doReturn(distributionId).when(statusData).getDistributionID(); + doReturn(componentName).when(statusData).getComponentName(); + + WatchdogComponentDistributionStatus expectedWatchdogComponentDistributionStatus = + new WatchdogComponentDistributionStatus(distributionId, componentName); + expectedWatchdogComponentDistributionStatus.setComponentDistributionStatus(statusData.getStatus().toString()); + + WatchdogComponentDistributionStatus cdStatus = new WatchdogComponentDistributionStatus(statusData.getDistributionID(), + statusData.getComponentName()); + + toscaInstaller.installTheComponentStatus(statusData); + + WatchdogComponentDistributionStatus actualWatchdogComponentDistributionStatus = getWatchdogCDStatusWithName(watchdogCDStatusRepository.findByDistributionId("testStatusSuccessTosca"), statusData.getComponentName()); + + assertEquals(statusData.getDistributionID(), cdStatus.getDistributionId()); + assertEquals(statusData.getComponentName(), cdStatus.getComponentName()); + assertThat(actualWatchdogComponentDistributionStatus, sameBeanAs(expectedWatchdogComponentDistributionStatus) + .ignoring("createTime") + .ignoring("modifyTime")); + } + + @Test + public void installTheComponentStatusExceptionTest() throws ArtifactInstallerException { + expectedException.expect(ArtifactInstallerException.class); + + statusData = spy(JsonStatusData.class); + doReturn(null).when(statusData).getStatus(); + + toscaInstaller.installTheComponentStatus(statusData); + } + + @Test + @Ignore + @Transactional + public void installTheResourceTest() throws Exception { + notificationData.setDistributionID("testStatusSuccessTosca"); + notificationData.setServiceVersion("123456"); + notificationData.setServiceUUID("5df8b6de-2083-11e7-93ae-92361f002671"); + notificationData.setWorkloadContext("workloadContext"); + + HashMap<String, VfModuleArtifact> vfModuleArtifacts = mock(HashMap.class); + CapabilityAssignments capabilityAssignments = mock(CapabilityAssignments.class); + CapabilityAssignment capabilityAssignment = mock(CapabilityAssignment.class); + + vfResourceStructure = spy(new VfResourceStructure(notificationData, resourceInstance)); + + VnfResource vnfResource = new VnfResource(); + vnfResource.setModelName("modelName"); + vnfResource.setModelVersion("1.1"); + vnfResource.setModelUUID("modelUUID"); + vnfResource.setOrchestrationMode("orchestrationMode"); + + VnfResourceCustomization vnfResourceCustomization = new VnfResourceCustomization(); + vnfResourceCustomization.setVnfResources(vnfResource); + vnfResourceCustomization.setModelCustomizationUUID("vnfResCustModelCustomizationUUID"); + vnfResourceCustomization.setModelInstanceName("modelInstanceName"); + + AllottedResource allottedResource = new AllottedResource(); + allottedResource.setModelUUID("serviceMetadataValue"); + allottedResource.setModelInvariantUUID("modelInvariantUUID"); + allottedResource.setModelName("modelName"); + allottedResource.setModelVersion("1.1"); + + AllottedResourceCustomization allottedResourceCustomization = new AllottedResourceCustomization(); + allottedResourceCustomization.setAllottedResource(allottedResource); + allottedResourceCustomization.setModelCustomizationUUID("modelCustomizationUUID"); + allottedResourceCustomization.setModelInstanceName("modelInstanceName"); + + Service catalogService = new Service(); + catalogService.setServiceType("serviceType"); + catalogService.setModelUUID("5df8b6de-2083-11e7-93ae-92361f002672"); + catalogService.setModelInvariantUUID("modelInvariantUUID"); + catalogService.setModelName("modelName"); + catalogService.setModelVersion("modelVersion"); + catalogService.getVnfCustomizations().add(vnfResourceCustomization); + + Iterator artifactIterator = mock(Iterator.class); + Iterator nodeTemplateIterator = mock(Iterator.class); + IDistributionClientDownloadResult clientResult = mock(IDistributionClientDownloadResult.class); + doReturn(IOUtils.toByteArray( + new FileInputStream( + new File( + getClass().getClassLoader().getResource("resource-examples/simpleTest.yaml").getFile()) + ))).when(clientResult).getArtifactPayload(); + VfModuleArtifact vfModuleArtifact = new VfModuleArtifact(artifactInfo, clientResult); + Collection<VfModuleArtifact> vfModuleArtifactsValues = mock(Collection.class); + + NodeTemplate nodeTemplate = mock(NodeTemplate.class); + List<NodeTemplate> nodeTemplateList = new ArrayList<>(); + nodeTemplateList.add(nodeTemplate); + + HeatTemplate heatTemplate = new HeatTemplate(); + heatTemplate.setArtifactUuid("ff874603-4222-11e7-9252-005056850d2e"); + heatTemplate.setArtifactChecksum("MANUAL RECORD"); + heatTemplate.setTemplateBody("templateBody"); + heatTemplate.setTemplateName("module_mns_zrdm3frwl01exn_01_rgvm_1.yml"); + heatTemplate.setVersion("1"); + + NetworkResource networkResource = new NetworkResource(); + networkResource.setAicVersionMin("aicVersionMin"); + networkResource.setModelUUID("modelUUID"); + networkResource.setOrchestrationMode("orchestrationMode"); + networkResource.setModelVersion("modelVersion"); + networkResource.setNeutronNetworkType("neutronNetworkType"); + networkResource.setAicVersionMax("aicVersionMax"); + networkResource.setModelName("CONTRAIL30_GNDIRECT"); + networkResource.setModelInvariantUUID("modelInvariantUUID"); + networkResource.setHeatTemplate(heatTemplate); + + NetworkResourceCustomization networkResourceCustomization = new NetworkResourceCustomization(); + networkResourceCustomization.setModelCustomizationUUID("modelCustomizationUUID"); + networkResourceCustomization.setModelInstanceName("modelInstanceName"); + networkResourceCustomization.setNetworkResource(networkResource); + + WatchdogServiceModVerIdLookup expectedModVerIdLookup = new WatchdogServiceModVerIdLookup(notificationData.getDistributionID(), notificationData.getServiceUUID()); + WatchdogDistributionStatus expectedDistributionStatus = new WatchdogDistributionStatus(notificationData.getDistributionID()); + WatchdogComponentDistributionStatus expectedComponentDistributionStatus = new WatchdogComponentDistributionStatus(notificationData.getDistributionID(), MSO); + expectedComponentDistributionStatus.setComponentDistributionStatus(DistributionStatusEnum.COMPONENT_DONE_OK.name()); + + doReturn(sdcCsarHelper).when(toscaResourceStruct).getSdcCsarHelper(); + doReturn("metadataPropertyValue").when(sdcCsarHelper).getMetadataPropertyValue(any(Metadata.class), any(String.class)); + doReturn("ntPropertyLeafValue").when(sdcCsarHelper).getNodeTemplatePropertyLeafValue(any(NodeTemplate.class), any(String.class)); + doReturn("true").when(sdcCsarHelper).getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_PROVIDERNETWORK_ISPROVIDERNETWORK); + doReturn("1").when(sdcCsarHelper).getCapabilityPropertyLeafValue(any(CapabilityAssignment.class), any(String.class)); + doReturn(vfGroups).when(sdcCsarHelper).getVfModulesByVf(any(String.class)); + doReturn(capabilityAssignments).when(sdcCsarHelper).getCapabilitiesOf(any(NodeTemplate.class)); + doReturn(capabilityAssignment).when(capabilityAssignments).getCapabilityByName(any(String.class)); + + doReturn(catalogService).when(toscaResourceStruct).getCatalogService(); + + doReturn(artifactInfo).when(toscaResourceStruct).getToscaArtifact(); + doReturn("artifactChecksum").when(artifactInfo).getArtifactChecksum(); + doReturn("artifactUUID").when(artifactInfo).getArtifactUUID(); + doReturn("artifactName").when(artifactInfo).getArtifactName(); + doReturn("1.0").when(artifactInfo).getArtifactVersion(); + doReturn("artifactDescription").when(artifactInfo).getArtifactDescription(); + doReturn("artifactURL").when(artifactInfo).getArtifactURL(); + + doReturn(metadata).when(toscaResourceStruct).getServiceMetadata(); + doReturn("serviceMetadataValue").when(metadata).getValue(any(String.class)); + doReturn("CONTRAIL30_GNDIRECT").when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_NAME); + + doReturn("serviceVersion").when(toscaResourceStruct).getServiceVersion(); + doReturn(nodeTemplateList).when(sdcCsarHelper).getServiceVfList(); + doReturn(nodeTemplateList).when(sdcCsarHelper).getServiceVlList(); + doReturn(nodeTemplateList).when(sdcCsarHelper).getAllottedResources(); + doReturn(metadata).when(nodeTemplate).getMetaData(); + doReturn("model_instance_name").when(nodeTemplate).getName(); + doReturn(false).when(toscaResourceStruct).isVnfAlreadyInstalled(); + doReturn(vnfResourceCustomization).when(toscaResourceStruct).getCatalogVnfResourceCustomization(); + doReturn(allottedResource).when(toscaResourceStruct).getAllottedResource(); + doReturn(allottedResourceCustomization).when(toscaResourceStruct).getCatalogAllottedResourceCustomization(); + + doReturn(vfModuleArtifacts).when(vfResourceStructure).getArtifactsMapByUUID(); + when(vfModuleArtifacts.values()).thenReturn(vfModuleArtifactsValues); + when(vfModuleArtifactsValues.iterator()).thenReturn(artifactIterator); + when(artifactIterator.hasNext()).thenReturn(true, false); + when(artifactIterator.next()).thenReturn(vfModuleArtifact); + when(artifactInfo.getArtifactType()).thenReturn(ASDCConfiguration.OTHER); + when(nodeTemplateIterator.hasNext()).thenReturn(true, false); + + doReturn(networkResource).when(toscaResourceStruct).getCatalogNetworkResource(); + doReturn(networkResourceCustomization).when(toscaResourceStruct).getCatalogNetworkResourceCustomization(); + + doNothing().when(toscaResourceStruct).setSuccessfulDeployment(); + + toscaInstaller.installTheResource(toscaResourceStruct, vfResourceStructure); + + AllottedResource actualAllottedResource = allottedRepo.findResourceByModelUUID(allottedResource.getModelUUID()); + AllottedResourceCustomization actualAllottedResourceCustomization = allottedCustomizationRepo.findOne(allottedResourceCustomization.getModelCustomizationUUID()); + Service actualService = serviceRepo.findByServiceType(catalogService.getServiceType()); + WatchdogComponentDistributionStatus actualWatchdogComponentDistributionStatus = getWatchdogCDStatusWithName(watchdogCDStatusRepository.findByDistributionId(notificationData.getDistributionID()), MSO); + + verify(toscaResourceStruct, times(1)).setSuccessfulDeployment(); + assertThat(actualAllottedResource, + sameBeanAs(allottedResource)); + assertThat(actualAllottedResourceCustomization, sameBeanAs(allottedResourceCustomization) + .ignoring("created")); + assertThat(actualService, sameBeanAs(catalogService) + .ignoring("created") + .ignoring("networkCustomizations.0x1.created") + .ignoring("networkCustomizations.0x1.networkResource.created")); + assertThat(actualWatchdogComponentDistributionStatus, sameBeanAs(expectedComponentDistributionStatus) + .ignoring("createTime") + .ignoring("modifyTime")); + } + + + @Test + public void installTheResourceExceptionTest() throws Exception { + expectedException.expect(ArtifactInstallerException.class); + + notificationData.setDistributionID("testStatusFailureTosca"); + notificationData.setServiceVersion("123456"); + notificationData.setServiceUUID("serviceUUID"); + notificationData.setWorkloadContext("workloadContext"); + + doReturn(notificationData).when(vfResourceStructure).getNotification(); + doReturn(resourceInstance).when(vfResourceStructure).getResourceInstance(); + + toscaInstaller.installTheResource(toscaResourceStruct, vfResourceStructure); + } + + @Test + public void installTheResourceDBExceptionTest() throws Exception { + notificationData.setDistributionID("testStatusSuccessTosca"); + notificationData.setServiceVersion("123456"); + notificationData.setServiceUUID("serviceUUID"); + notificationData.setWorkloadContext("workloadContext"); + + doReturn(notificationData).when(vfResourceStructure).getNotification(); + doReturn(resourceInstance).when(vfResourceStructure).getResourceInstance(); + doThrow(LockAcquisitionException.class).when(toscaResourceStruct).getToscaArtifact(); + + toscaInstaller.installTheResource(toscaResourceStruct, vfResourceStructure); + } + + @Test + public void verifyTheFilePrefixInStringTest() { + String body = "abcabcabcfile:///testfile.txtabcbabacbcabc"; + String filenameToVerify = "testfile.txt"; + String expectedFileBody = "abcabcabctestfile.txtabcbabacbcabc"; + + String newFileBody = toscaInstaller.verifyTheFilePrefixInString(body, filenameToVerify); + + assertEquals(expectedFileBody, newFileBody); + } + + @Test + public void verifyTheFilePrefixInStringNullBodyTest() { + String body = null; + String filenameToVerify = "testfile.txt"; + + String newFileBody = toscaInstaller.verifyTheFilePrefixInString(body, filenameToVerify); + + assertEquals(body, newFileBody); + } + + @Test + public void verifyTheFilePrefixInStringEmptyBodyTest() { + String body = ""; + String filenameToVerify = "testfile.txt"; + + String newFileBody = toscaInstaller.verifyTheFilePrefixInString(body, filenameToVerify); + + assertEquals(body, newFileBody); + } + + @Test + public void verifyTheFilePrefixInStringNullFilenameTest() { + String body = "abcabcabcfile:///testfile.txtabcbabacbcabc"; + String filenameToVerify = null; + + String newFileBody = toscaInstaller.verifyTheFilePrefixInString(body, filenameToVerify); + + assertEquals(body, newFileBody); + } + + @Test + public void verifyTheFilePrefixInStringEmptyFilenameTest() { + String body = "abcabcabcfile:///testfile.txtabcbabacbcabc"; + String filenameToVerify = ""; + + String newFileBody = toscaInstaller.verifyTheFilePrefixInString(body, filenameToVerify); + + assertEquals(body, newFileBody); + } + + private WatchdogComponentDistributionStatus getWatchdogCDStatusWithName(List<WatchdogComponentDistributionStatus> watchdogComponentDistributionStatuses, String componentName) { + WatchdogComponentDistributionStatus actualWatchdogComponentDistributionStatus = new WatchdogComponentDistributionStatus(); + for(WatchdogComponentDistributionStatus watchdogComponentDistributionStatus : watchdogComponentDistributionStatuses) { + if(componentName.equals(watchdogComponentDistributionStatus.getComponentName())) { + actualWatchdogComponentDistributionStatus = watchdogComponentDistributionStatus; + break; + } + } + return actualWatchdogComponentDistributionStatus; + } + + + +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/tenantIsolation/AaiClientPropertiesImplTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/tenantIsolation/AaiClientPropertiesImplTest.java new file mode 100644 index 0000000000..a20f6de579 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/tenantIsolation/AaiClientPropertiesImplTest.java @@ -0,0 +1,58 @@ +/*- + * ============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.asdc.tenantIsolation; + +import static org.junit.Assert.assertEquals; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.so.asdc.BaseTest; +import org.onap.so.client.aai.AAIVersion; + +public class AaiClientPropertiesImplTest extends BaseTest { + + private static final String SYSTEM_NAME = "MSO"; + private static final String LOCAL_HOST = "http://localhost:"; + + @BeforeClass + public static void setup() throws Exception { + System.setProperty("mso.config.path", "src/test/resources"); + } + + @Test + public void getEndpointTest() throws Exception { + AaiClientPropertiesImpl aaiClientPropertiesImpl = new AaiClientPropertiesImpl(); + String aaiEndpoint = aaiClientPropertiesImpl.getEndpoint().toString(); + assertEquals(LOCAL_HOST + wireMockPort, aaiEndpoint); + } + + @Test + public void getSystemNameTest() { + AaiClientPropertiesImpl aaiClientPropertiesImpl = new AaiClientPropertiesImpl(); + assertEquals(SYSTEM_NAME, aaiClientPropertiesImpl.getSystemName()); + } + + @Test + public void getDefaultVersionTest() { + AaiClientPropertiesImpl aaiClientPropertiesImpl = new AaiClientPropertiesImpl(); + assertEquals(AAIVersion.LATEST, aaiClientPropertiesImpl.getDefaultVersion()); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/tenantIsolation/WatchdogDistributionTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/tenantIsolation/WatchdogDistributionTest.java new file mode 100644 index 0000000000..b72e079e9e --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/tenantIsolation/WatchdogDistributionTest.java @@ -0,0 +1,141 @@ +/*- + * ============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.asdc.tenantIsolation; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.isA; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import java.util.HashMap; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.onap.so.asdc.BaseTest; +import org.onap.so.client.aai.AAIResourcesClient; +import org.onap.so.client.aai.entities.uri.AAIResourceUri; +import org.onap.so.db.catalog.beans.Service; +import org.springframework.beans.factory.annotation.Autowired; + +public class WatchdogDistributionTest extends BaseTest { + @Autowired + private WatchdogDistribution watchdogDistribution; + + @Mock + private AAIResourcesClient aaiResourceClient; + + private static final String SUCCESS_TEST = "watchdogTestStatusSuccess"; + private static final String FAILURE_TEST = "watchdogTestStatusFailure"; + private static final String TIMEOUT_TEST = "watchdogTestStatusTimeout"; + private static final String INCOMPLETE_TEST = "watchdogTestStatusIncomplete"; + private static final String EXCEPTION_TEST = "watchdogTestStatusException"; + private static final String NULL_TEST = "watchdogTestStatusNull"; + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Before + public void before() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void getOverallDistributionStatusTimeoutTest() throws Exception { + String status = watchdogDistribution.getOverallDistributionStatus(TIMEOUT_TEST); + assertEquals(DistributionStatus.TIMEOUT.toString(), status); + } + + @Test + public void getOverallDistributionStatusSuccessTest() throws Exception { + String status = watchdogDistribution.getOverallDistributionStatus(SUCCESS_TEST); + assertEquals(DistributionStatus.SUCCESS.toString(), status); + } + + @Test + public void getOverallDistributionStatusFailureTest() throws Exception { + String status = watchdogDistribution.getOverallDistributionStatus(FAILURE_TEST); + assertEquals(DistributionStatus.FAILURE.toString(), status); + } + + @Test + public void getOverallDistributionStatusIncompleteTest() throws Exception { + String status = watchdogDistribution.getOverallDistributionStatus(INCOMPLETE_TEST); + assertEquals(DistributionStatus.INCOMPLETE.toString(), status); + } + + @Test + public void getOverallDistributionStatusInvalidComponentExceptionTest() throws Exception { + expectedException.expect(Exception.class); + watchdogDistribution.getOverallDistributionStatus(EXCEPTION_TEST); + } + + @Test + public void getOverallDistributionStatusNewStatusTest() throws Exception { + String status = watchdogDistribution.getOverallDistributionStatus("newDistrubutionStatus"); + assertEquals(DistributionStatus.INCOMPLETE.toString(), status); + } + + @Test + public void getOverallDistributionStatusExceptionTest() throws Exception { + expectedException.expect(Exception.class); + watchdogDistribution.getOverallDistributionStatus(null); + } + + @Test + public void executePatchAAITest() throws Exception { + Service service = new Service(); + service.setModelInvariantUUID("9647dfc4-2083-11e7-93ae-92361f002671"); + + doReturn(aaiResourceClient).when(watchdogDistributionSpy).getAaiClient(); + doNothing().when(aaiResourceClient).update(isA(AAIResourceUri.class), isA(HashMap.class)); + + watchdogDistribution.executePatchAAI(SUCCESS_TEST, service.getModelInvariantUUID(), DistributionStatus.SUCCESS.toString()); + + verify(aaiResourceClient, times(1)).update(any(AAIResourceUri.class), any(HashMap.class)); + } + + @Test + public void executePatchAAINullDistrubutionIdTest() throws Exception { + expectedException.expect(Exception.class); + watchdogDistribution.executePatchAAI(null, "", DistributionStatus.SUCCESS.toString()); + } + + @Test + public void executePatchAAINullServiceTest() throws Exception { + expectedException.expect(Exception.class); + watchdogDistribution.executePatchAAI(NULL_TEST, null, DistributionStatus.SUCCESS.toString()); + } + + @Test + public void getSetAaiClientTest() { + aaiResourceClient = watchdogDistribution.getAaiClient(); + watchdogDistribution.setAaiClient(aaiResourceClient); + AAIResourcesClient aaiResourceClient2 = watchdogDistribution.getAaiClient(); + assertEquals(aaiResourceClient, aaiResourceClient2); + } +} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/util/tests/ASDCNotificationLoggingTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/util/ASDCNotificationLoggingTest.java index 3351392202..3abc2e7a62 100644 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/util/tests/ASDCNotificationLoggingTest.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/util/ASDCNotificationLoggingTest.java @@ -1,186 +1,186 @@ -/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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.openecomp.mso.asdc.util.tests;
-
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Test;
-import org.openecomp.mso.asdc.installer.IVfModuleData;
-import org.openecomp.mso.asdc.installer.VfModuleMetaData;
-import org.openecomp.mso.asdc.util.ASDCNotificationLogging;
-import org.onap.sdc.api.notification.IArtifactInfo;
-import org.onap.sdc.api.notification.INotificationData;
-import org.onap.sdc.api.notification.IResourceInstance;
-
-public class ASDCNotificationLoggingTest {
- @Test
- public void dumpASDCNotificationTestForNull() throws Exception {
- INotificationData asdcNotification = iNotificationDataObject();
-
- String result = ASDCNotificationLogging.dumpASDCNotification(asdcNotification);
-
- assertTrue(!result.equalsIgnoreCase("NULL"));
- }
-
- private INotificationData iNotificationDataObject() {
- INotificationData iNotification = new INotificationData() {
-
- @Override
- public String getServiceVersion() {
- return "DistributionID";
- }
-
- @Override
- public String getServiceUUID() {
- return "12343254";
- }
-
- @Override
- public String getServiceName() {
- return "servername";
- }
-
- @Override
- public String getServiceInvariantUUID() {
- return "ServiceInvariantUUID";
- }
-
- @Override
- public String getServiceDescription() {
- return "Description";
- }
-
- @Override
- public List<IArtifactInfo> getServiceArtifacts() {
- return new ArrayList();
- }
-
- @Override
- public List<IResourceInstance> getResources() {
- return new ArrayList();
- }
-
- @Override
- public String getDistributionID() {
- return "23434";
- }
-
- @Override
- public IArtifactInfo getArtifactMetadataByUUID(String arg0) {
- return null;
- }
-
- @Override
- public String getWorkloadContext() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void setWorkloadContext(String arg0) {
- // TODO Auto-generated method stub
-
- }
- };
- return iNotification;
- }
-
- @Test
- public void dumpASDCNotificationTest() throws Exception {
- INotificationData asdcNotification = iNotificationDataObject();
- String result = ASDCNotificationLogging.dumpASDCNotification(asdcNotification);
-
- assertTrue(!result.equalsIgnoreCase("NULL"));
- }
-
- @Test
- public void dumpVfModuleMetaDataListTest() {
- INotificationData asdcNotification = iNotificationDataObject();
- List<IVfModuleData> list = new ArrayList<>();
- list.add(new VfModuleMetaData());
- String result = null;
- try {
- result = ASDCNotificationLogging.dumpVfModuleMetaDataList(list);
- } catch (Exception e) {
- }
-
- assertTrue(result == null);
-
- }
-
- public IArtifactInfo getIArtifactInfo() {
- return new IArtifactInfo() {
-
- @Override
- public List<IArtifactInfo> getRelatedArtifacts() {
- return null;
- }
-
- @Override
- public IArtifactInfo getGeneratedArtifact() {
- return null;
- }
-
- @Override
- public String getArtifactVersion() {
- return "version";
- }
-
- @Override
- public String getArtifactUUID() {
- return "123";
- }
-
- @Override
- public String getArtifactURL() {
- return "url";
- }
-
- @Override
- public String getArtifactType() {
- return "type";
- }
-
- @Override
- public Integer getArtifactTimeout() {
- return 12;
- }
-
- @Override
- public String getArtifactName() {
- return "name";
- }
-
- @Override
- public String getArtifactDescription() {
- return "desc";
- }
-
- @Override
- public String getArtifactChecksum() {
- return "true";
- }
- };
- }
-}
+/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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.asdc.util; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; +import org.onap.sdc.api.notification.IArtifactInfo; +import org.onap.sdc.api.notification.INotificationData; +import org.onap.sdc.api.notification.IResourceInstance; +import org.onap.so.asdc.installer.IVfModuleData; +import org.onap.so.asdc.installer.VfModuleMetaData; +import org.onap.so.asdc.util.ASDCNotificationLogging; + +public class ASDCNotificationLoggingTest { + @Test + public void dumpASDCNotificationTestForNull() throws Exception { + INotificationData asdcNotification = iNotificationDataObject(); + + String result = ASDCNotificationLogging.dumpASDCNotification(asdcNotification); + + assertTrue(!result.equalsIgnoreCase("NULL")); + } + + private INotificationData iNotificationDataObject() { + INotificationData iNotification = new INotificationData() { + + @Override + public String getServiceVersion() { + return "DistributionID"; + } + + @Override + public String getServiceUUID() { + return "12343254"; + } + + @Override + public String getServiceName() { + return "servername"; + } + + @Override + public String getServiceInvariantUUID() { + return "ServiceInvariantUUID"; + } + + @Override + public String getServiceDescription() { + return "Description"; + } + + @Override + public List<IArtifactInfo> getServiceArtifacts() { + return new ArrayList(); + } + + @Override + public List<IResourceInstance> getResources() { + return new ArrayList(); + } + + @Override + public String getDistributionID() { + return "23434"; + } + + @Override + public IArtifactInfo getArtifactMetadataByUUID(String arg0) { + return null; + } + + @Override + public String getWorkloadContext() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setWorkloadContext(String arg0) { + // TODO Auto-generated method stub + + } + }; + return iNotification; + } + + @Test + public void dumpASDCNotificationTest() throws Exception { + INotificationData asdcNotification = iNotificationDataObject(); + String result = ASDCNotificationLogging.dumpASDCNotification(asdcNotification); + + assertTrue(!result.equalsIgnoreCase("NULL")); + } + + @Test + public void dumpVfModuleMetaDataListTest() { + INotificationData asdcNotification = iNotificationDataObject(); + List<IVfModuleData> list = new ArrayList<>(); + list.add(new VfModuleMetaData()); + String result = null; + try { + result = ASDCNotificationLogging.dumpVfModuleMetaDataList(list); + } catch (Exception e) { + } + + assertTrue(result == null); + + } + + public IArtifactInfo getIArtifactInfo() { + return new IArtifactInfo() { + + @Override + public List<IArtifactInfo> getRelatedArtifacts() { + return null; + } + + @Override + public IArtifactInfo getGeneratedArtifact() { + return null; + } + + @Override + public String getArtifactVersion() { + return "version"; + } + + @Override + public String getArtifactUUID() { + return "123"; + } + + @Override + public String getArtifactURL() { + return "url"; + } + + @Override + public String getArtifactType() { + return "type"; + } + + @Override + public Integer getArtifactTimeout() { + return 12; + } + + @Override + public String getArtifactName() { + return "name"; + } + + @Override + public String getArtifactDescription() { + return "desc"; + } + + @Override + public String getArtifactChecksum() { + return "true"; + } + }; + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/util/NotificationLoggingTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/util/NotificationLoggingTest.java new file mode 100644 index 0000000000..8bd11d9f52 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/util/NotificationLoggingTest.java @@ -0,0 +1,67 @@ +/*- + * ============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.asdc.util; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.junit.Before; +import org.junit.Test; +import org.onap.so.asdc.client.test.emulators.NotificationDataImpl; + +public class NotificationLoggingTest { + private NotificationDataImpl notificationData; + + @Before + public void before() { + notificationData = new NotificationDataImpl(); + } + + @Test + public void logNotificationTest() { + notificationData.setDistributionID("distributionID"); + notificationData.setServiceVersion("123456"); + notificationData.setServiceUUID("serviceUUID"); + notificationData.setWorkloadContext("workloadContext"); + + String response = NotificationLogging.logNotification(notificationData); + + assertTrue(response.contains("ASDC Notification")); + assertTrue(response.contains("ResourcesType not recognized")); + assertTrue(response.contains("ServiceNameNULL")); + assertTrue(response.contains("ServiceUUIDserviceUUID")); + assertTrue(response.contains("ResourcesImplNULL")); + assertTrue(response.contains("ServiceArtifactsType not recognized")); + assertTrue(response.contains("ServiceDescriptionNULL")); + assertTrue(response.contains("DistributionIDdistributionID")); + assertTrue(response.contains("ServiceInvariantUUIDNULL")); + assertTrue(response.contains("WorkloadContextworkloadContext")); + } + + @Test + public void logNotificationNullTest() { + notificationData = null; + + String response = NotificationLogging.logNotification(notificationData); + + assertEquals("NULL", response); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/utils/ASDCLoggingRunner.java b/asdc-controller/src/test/java/org/onap/so/asdc/utils/ASDCLoggingRunner.java new file mode 100644 index 0000000000..2a77664714 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/utils/ASDCLoggingRunner.java @@ -0,0 +1,56 @@ +/*- + * ============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.asdc.utils; + +import java.nio.file.Files; +import java.nio.file.Paths; + +import org.antlr.v4.runtime.CharStreams; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.tree.ParseTree; + +import com.fasterxml.jackson.databind.JsonNode; + + +public class ASDCLoggingRunner +{ + public static void main( String[] args) throws Exception + { + String content = new String(Files.readAllBytes(Paths.get("src/test/resources/Heat_Nested_Notification.txt"))); + + ASDCLoggingLexer lexer = new ASDCLoggingLexer(CharStreams.fromString(content)); + + CommonTokenStream tokens = new CommonTokenStream(lexer); + + ASDCLoggingParser parser = new ASDCLoggingParser(tokens); + + ParseTree tree = parser.doc(); + + System.out.println(TreeUtils.printTree(tree, parser)); // print LISP-style tree + + ASDCLoggingVisitorImpl v = new ASDCLoggingVisitorImpl(); + + JsonNode node = v.visit(tree); + + System.out.println(node.toString()); + + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/utils/ASDCLoggingVisitorImpl.java b/asdc-controller/src/test/java/org/onap/so/asdc/utils/ASDCLoggingVisitorImpl.java new file mode 100644 index 0000000000..51036e2a18 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/utils/ASDCLoggingVisitorImpl.java @@ -0,0 +1,104 @@ +/*- + * ============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.asdc.utils; + +import java.util.ArrayDeque; +import java.util.Deque; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ContainerNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.google.common.base.CaseFormat; + + +public class ASDCLoggingVisitorImpl extends ASDCLoggingBaseVisitor<ContainerNode> { + + private final ObjectMapper mapper = new ObjectMapper(); + private ObjectNode doc; + private Deque<ContainerNode> nodeStore = new ArrayDeque<>(); + + @Override + public ContainerNode visitDoc(ASDCLoggingParser.DocContext ctx) { + doc = mapper.createObjectNode(); + nodeStore.addFirst(doc); + this.visitChildren(ctx); + return doc; + } + + @Override + public ContainerNode visitValue(ASDCLoggingParser.ValueContext ctx) { + + return this.visitChildren(ctx); + + } + @Override + public ContainerNode visitSimplePair(ASDCLoggingParser.SimplePairContext ctx) { + ObjectNode node = mapper.createObjectNode(); + ((ObjectNode)nodeStore.peekFirst()).put(this.toLowerCamel(ctx.key().getText()), ctx.keyValue().getText()); + + return node; + } + + @Override + public ContainerNode visitComplexPair(ASDCLoggingParser.ComplexPairContext ctx) { + ContainerNode container = nodeStore.peekFirst(); + if (container.isArray()) { + ArrayNode array = (ArrayNode) container; + ObjectNode node = mapper.createObjectNode(); + array.add(node); + nodeStore.addFirst(node); + } else { + nodeStore.addFirst(((ObjectNode)nodeStore.peekFirst()).putObject(this.toLowerCamel(ctx.key().getText()))); + } + this.visitChildren(ctx); + return nodeStore.removeFirst(); + + + } + + @Override + public ContainerNode visitList(ASDCLoggingParser.ListContext ctx) { + nodeStore.addFirst(((ObjectNode)nodeStore.peekFirst()).putArray(this.keyMapper(ctx.listName().getText()))); + this.visitChildren(ctx); + return nodeStore.removeFirst(); + } + + private String keyMapper(String key) { + if ("Service Artifacts List".equals(key)) { + return "serviceArtifacts"; + } else if ("Resource Instances List".equals(key)) { + return "resources"; + } else if ("Resource Artifacts List".equals(key)) { + return "artifacts"; + } else { + return key; + } + } + + private String toLowerCamel(String key) { + String result = key.replaceAll("\\s", ""); + if ("ServiceArtifactsInfo".equals(result)) { + return "artifactInfo"; + } + return CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, result); + } +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/utils/TreePrinterListener.java b/asdc-controller/src/test/java/org/onap/so/asdc/utils/TreePrinterListener.java new file mode 100644 index 0000000000..c4a84c0540 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/utils/TreePrinterListener.java @@ -0,0 +1,137 @@ +/*- + * ============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.asdc.utils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.antlr.v4.runtime.Parser; +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.RuleContext; +import org.antlr.v4.runtime.misc.Utils; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.ParseTreeListener; +import org.antlr.v4.runtime.tree.TerminalNode; +import org.antlr.v4.runtime.tree.Trees; + +public class TreePrinterListener implements ParseTreeListener { + private final List<String> ruleNames; + private final StringBuilder builder = new StringBuilder(); + Map<RuleContext,ArrayList<String>> stack = new HashMap<RuleContext,ArrayList<String>>(); + + public TreePrinterListener(Parser parser) { + this.ruleNames = Arrays.asList(parser.getRuleNames()); + } + + public TreePrinterListener(List<String> ruleNames) { + this.ruleNames = ruleNames; + } + + @Override + public void visitTerminal(TerminalNode node) { + String text = Utils.escapeWhitespace(Trees.getNodeText(node, ruleNames), false); + if(text.startsWith(" ") || text.endsWith(" ")){ + text = "'" + text + "'"; + } + stack.get(node.getParent()).add(text); + } + + @Override + public void visitErrorNode(ErrorNode node) { + stack.get(node.getParent()).add(Utils.escapeWhitespace(Trees.getNodeText(node, ruleNames), false)); + } + + @Override + public void enterEveryRule(ParserRuleContext ctx) { + if(!stack.containsKey(ctx.parent)){ + stack.put(ctx.parent, new ArrayList<String>()); + } + if(!stack.containsKey(ctx)){ + stack.put(ctx, new ArrayList<String>()); + } + + final StringBuilder sb = new StringBuilder(); + int ruleIndex = ctx.getRuleIndex(); + String ruleName; + if (ruleIndex >= 0 && ruleIndex < ruleNames.size()) { + ruleName = ruleNames.get(ruleIndex); + } + else { + ruleName = Integer.toString(ruleIndex); + } + sb.append(ruleName); + stack.get(ctx).add(sb.toString()); + } + + @Override + public void exitEveryRule(ParserRuleContext ctx) { + ArrayList<String> ruleStack = stack.remove(ctx); + StringBuilder sb = new StringBuilder(); + boolean brackit =ruleStack.size()>1; + if(brackit){ + sb.append("("); + } + sb.append(ruleStack.get(0)); + for(int i=1; i<ruleStack.size(); i++){ + sb.append(" "); + sb.append(ruleStack.get(i)); + } + if(brackit){ + sb.append(")"); + } + if(sb.length() < 80){ + stack.get(ctx.parent).add(sb.toString()); + }else{ + // Current line is too long, regenerate it using 1 line per item. + sb.setLength(0); + if(brackit){ + sb.append("("); + } + if(!ruleStack.isEmpty()){ + sb.append(ruleStack.remove(0)).append("\r\n"); + } + while(!ruleStack.isEmpty()){ + sb.append(indent(ruleStack.remove(0))).append("\r\n"); + } + if(brackit){ + sb.append(")"); + } + stack.get(ctx.parent).add(sb.toString()); + } + if(ctx.parent == null){ + builder.append(sb.toString()); + } + } + + static String indent(String input){ + return " " + input.replaceAll("\r\n(.)","\r\n $1"); + } + + @Override + public String toString() { + return builder.toString(); + } + + +} diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/utils/TreeUtils.java b/asdc-controller/src/test/java/org/onap/so/asdc/utils/TreeUtils.java new file mode 100644 index 0000000000..8de9f362b7 --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/utils/TreeUtils.java @@ -0,0 +1,47 @@ +/*- + * ============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.asdc.utils; + +import java.util.Arrays; + +import org.antlr.v4.runtime.Parser; +import org.antlr.v4.runtime.tree.ParseTree; +import org.antlr.v4.runtime.tree.ParseTreeWalker; + + +public class TreeUtils { + + /** + * Print the tree, splitting at appropriate points, instead of rendering a single long line. + * @param parseTree + * @param parser + * @return + */ + public static String printTree(final ParseTree parseTree, final Parser parser){ + final TreePrinterListener listener = new TreePrinterListener(Arrays.asList(parser.getRuleNames())); + ParseTreeWalker.DEFAULT.walk(listener, parseTree); + return listener.toString(); + } + + public static String normalizeWhiteSpace(String input){ + return input.replaceAll("\\s+", " ").replaceAll("([^\\w])\\s+", "$1"); + } +} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCConfigurationTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCConfigurationTest.java deleted file mode 100644 index 5e2184af83..0000000000 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCConfigurationTest.java +++ /dev/null @@ -1,360 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2018 Huawei 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.openecomp.mso.asdc.client; - - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.util.List; - -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Test; - -import org.openecomp.mso.asdc.client.ASDCConfiguration; -import org.openecomp.mso.asdc.client.exceptions.ASDCParametersException; -import org.openecomp.mso.properties.MsoPropertiesException; -import org.openecomp.mso.properties.MsoPropertiesFactory; - -/** - * THis class tests the ASDC Controller by using the ASDC Mock CLient - * - * - */ -public class ASDCConfigurationTest { - - public static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory(); - public final String ASDC_PROP = ASDCConfigurationTest.class.getClassLoader().getResource("mso.json").toString().substring(5); - public final String ASDC_PROP2 = ASDCConfigurationTest.class.getClassLoader().getResource("mso2.json").toString().substring(5); - public final String ASDC_PROP3 = ASDCConfigurationTest.class.getClassLoader().getResource("mso3.json").toString().substring(5); - public final String ASDC_PROP_BAD = ASDCConfigurationTest.class.getClassLoader().getResource("mso-bad.json").toString().substring(5); - public final String ASDC_PROP_WITH_NULL = ASDCConfigurationTest.class.getClassLoader().getResource("mso-with-NULL.json").toString().substring(5); - public final String ASDC_PROP_DOUBLE_CONFIG = ASDCConfigurationTest.class.getClassLoader().getResource("mso-two-configs.json").toString().substring(5); - public final String ASDC_PROP4_WITH_TLS = ASDCConfigurationTest.class.getClassLoader().getResource("mso4-with-TLS.json").toString().substring(5); - - @BeforeClass - public static final void prepareBeforeAllTests() { - msoPropertiesFactory.removeAllMsoProperties(); - } - - @Before - public final void prepareBeforeEachTest () throws MsoPropertiesException { - msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); - } - - @After - public final void cleanAfterEachTest () { - msoPropertiesFactory.removeAllMsoProperties(); - } - - @Test - public final void testTheInit() throws ASDCParametersException, IOException { - ASDCConfiguration asdcConfig = new ASDCConfiguration("asdc-controller1"); - assertNotNull(asdcConfig.getUser()); - assertTrue("User".equals(asdcConfig.getUser())); - - assertNotNull(asdcConfig.getPassword()); - assertTrue("ThePassword".equals(asdcConfig.getPassword())); - - assertNotNull(asdcConfig.getConsumerGroup()); - assertTrue("consumerGroup".equals(asdcConfig.getConsumerGroup())); - - assertNotNull(asdcConfig.getConsumerID()); - assertTrue("consumerId".equals(asdcConfig.getConsumerID())); - - assertNotNull(asdcConfig.getEnvironmentName()); - assertTrue("environmentName".equals(asdcConfig.getEnvironmentName())); - - assertNotNull(asdcConfig.getAsdcAddress()); - assertTrue("hostname".equals(asdcConfig.getAsdcAddress())); - - assertNotNull(asdcConfig.getPollingInterval()); - assertTrue(asdcConfig.getPollingInterval() == 10); - - assertNotNull(asdcConfig.getPollingTimeout()); - assertTrue(asdcConfig.getPollingTimeout() == 30); - - assertNotNull(asdcConfig.getRelevantArtifactTypes()); - assertTrue(asdcConfig.getRelevantArtifactTypes().size() == ASDCConfiguration.SUPPORTED_ARTIFACT_TYPES_LIST.size()); - - assertFalse(asdcConfig.activateServerTLSAuth()); - - } - - @Test - public final void testAllParametersMethod() throws ASDCParametersException, IOException { - ASDCConfiguration asdcConfig = new ASDCConfiguration("asdc-controller1"); - - // No exception should be raised - asdcConfig.testAllParameters(); - } - - @Test - public final void testTheRefreshConfigFalseCase() throws ASDCParametersException, IOException { - ASDCConfiguration asdcConfig = new ASDCConfiguration("asdc-controller1"); - - // No update should be done as we use the mso.properties located in the resource folder for testing - assertFalse(asdcConfig.hasASDCConfigChanged()); - assertFalse(asdcConfig.refreshASDCConfig()); - - assertNotNull(asdcConfig.getUser()); - assertTrue("User".equals(asdcConfig.getUser())); - - assertNotNull(asdcConfig.getPassword()); - assertTrue("ThePassword".equals(asdcConfig.getPassword())); - - assertNotNull(asdcConfig.getConsumerGroup()); - assertTrue("consumerGroup".equals(asdcConfig.getConsumerGroup())); - - assertNotNull(asdcConfig.getConsumerID()); - assertTrue("consumerId".equals(asdcConfig.getConsumerID())); - - assertNotNull(asdcConfig.getEnvironmentName()); - assertTrue("environmentName".equals(asdcConfig.getEnvironmentName())); - - assertNotNull(asdcConfig.getAsdcAddress()); - assertTrue("hostname".equals(asdcConfig.getAsdcAddress())); - - assertNotNull(asdcConfig.getPollingInterval()); - assertTrue(asdcConfig.getPollingInterval() == 10); - - assertNotNull(asdcConfig.getPollingTimeout()); - assertTrue(asdcConfig.getPollingTimeout() == 30); - - assertNotNull(asdcConfig.getRelevantArtifactTypes()); - assertTrue(asdcConfig.getRelevantArtifactTypes().size() == ASDCConfiguration.SUPPORTED_ARTIFACT_TYPES_LIST.size()); - - msoPropertiesFactory.removeAllMsoProperties(); - - try { - asdcConfig.refreshASDCConfig(); - fail("Should have thrown an ASDCParametersException because config does not exist anymore!"); - } catch (ASDCParametersException e) { - assertTrue(e.getMessage().contains(("mso.asdc.json not initialized properly, ASDC config cannot be reloaded"))); - } - - try { - asdcConfig.hasASDCConfigChanged(); - fail("Should have thrown an ASDCParametersException because config does not exist anymore!"); - } catch (ASDCParametersException e) { - assertTrue(e.getMessage().contains(("mso.asdc.json not initialized properly, ASDC config cannot be read"))); - } - - } - - - @Test - @Ignore // 1802 merge - public final void testToChangeTheFileAndRefresh () throws ASDCParametersException, IOException, MsoPropertiesException { - ASDCConfiguration asdcConfig = new ASDCConfiguration("asdc-controller1"); - - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP2); - msoPropertiesFactory.reloadMsoProperties(); - - // SHould be the same file untouched just a different file name, there should be no difference between them - // In a normal case a different Filename should force the system to reload the config but not here as we have changed the filename by reflection - assertFalse(asdcConfig.hasASDCConfigChanged()); - assertFalse(asdcConfig.refreshASDCConfig()); - - assertNotNull(asdcConfig.getUser()); - assertTrue("User".equals(asdcConfig.getUser())); - - assertNotNull(asdcConfig.getPassword()); - assertTrue("ThePassword".equals(asdcConfig.getPassword())); - - assertNotNull(asdcConfig.getConsumerGroup()); - assertTrue("consumerGroup".equals(asdcConfig.getConsumerGroup())); - - assertNotNull(asdcConfig.getConsumerID()); - assertTrue("consumerId".equals(asdcConfig.getConsumerID())); - - assertNotNull(asdcConfig.getEnvironmentName()); - assertTrue("environmentName".equals(asdcConfig.getEnvironmentName())); - - assertNotNull(asdcConfig.getAsdcAddress()); - assertTrue("hostname".equals(asdcConfig.getAsdcAddress())); - - assertNotNull(asdcConfig.getPollingInterval()); - assertTrue(asdcConfig.getPollingInterval() == 10); - - assertNotNull(asdcConfig.getPollingTimeout()); - assertTrue(asdcConfig.getPollingTimeout() == 30); - - assertNotNull(asdcConfig.getRelevantArtifactTypes()); - assertTrue(asdcConfig.getRelevantArtifactTypes().size() == ASDCConfiguration.SUPPORTED_ARTIFACT_TYPES_LIST.size()); - - // Set another file that has some attributes changed - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP3); - msoPropertiesFactory.reloadMsoProperties(); - - // SHould be the same file untouched just a different file name, so new config - assertTrue(asdcConfig.hasASDCConfigChanged()); - assertTrue(asdcConfig.refreshASDCConfig()); - - assertNotNull(asdcConfig.getUser()); - assertTrue("User".equals(asdcConfig.getUser())); - - assertNotNull(asdcConfig.getPassword()); - assertTrue("ThePassword".equals(asdcConfig.getPassword())); - - assertNotNull(asdcConfig.getConsumerGroup()); - assertTrue("consumerGroup".equals(asdcConfig.getConsumerGroup())); - - assertNotNull(asdcConfig.getConsumerID()); - assertTrue("consumerId".equals(asdcConfig.getConsumerID())); - - assertNotNull(asdcConfig.getEnvironmentName()); - assertTrue("environmentName".equals(asdcConfig.getEnvironmentName())); - - // only this field has been changed - assertNotNull(asdcConfig.getAsdcAddress()); - assertTrue("hostname1".equals(asdcConfig.getAsdcAddress())); - - assertNotNull(asdcConfig.getPollingInterval()); - assertTrue(asdcConfig.getPollingInterval() == 10); - - assertNotNull(asdcConfig.getPollingTimeout()); - assertTrue(asdcConfig.getPollingTimeout() == 30); - - assertNotNull(asdcConfig.getRelevantArtifactTypes()); - assertTrue(asdcConfig.getRelevantArtifactTypes().size() == ASDCConfiguration.SUPPORTED_ARTIFACT_TYPES_LIST.size()); - - - // reload the good property file for other test cases - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); - msoPropertiesFactory.reloadMsoProperties(); - - } - - @Test - @Ignore // 1802 merge - public final void testAllParametersCheck () throws ASDCParametersException, IOException, MsoPropertiesException { - ASDCConfiguration asdcConfig = new ASDCConfiguration("asdc-controller1"); - - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP_BAD); - msoPropertiesFactory.reloadMsoProperties(); - // SHould be a bad file, it should raise an exception - try { - asdcConfig.refreshASDCConfig(); - fail("Should have thrown an ASDCControllerException because one param is missing!"); - } catch (ASDCParametersException e) { - assertTrue(e.getMessage().contains(("consumerGroup parameter cannot be found in config mso.properties"))); - } - - - // reload the good property file for other test cases - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); - msoPropertiesFactory.reloadMsoProperties(); - - assertTrue(asdcConfig.refreshASDCConfig()); - - } - - @Test - public final void testConsumerGroupWithNULL () throws MsoPropertiesException, ASDCParametersException, IOException { - ASDCConfiguration asdcConfig = new ASDCConfiguration("asdc-controller1"); - - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP_WITH_NULL); - msoPropertiesFactory.reloadMsoProperties(); - - asdcConfig.refreshASDCConfig(); - assertTrue(asdcConfig.getConsumerGroup()==null); - - // reload the good property file for other test cases - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); - msoPropertiesFactory.reloadMsoProperties(); - - assertTrue(asdcConfig.refreshASDCConfig()); - - - } - - @Test - @Ignore // 1802 merge - public final void testGetAllDefinedControllers() throws MsoPropertiesException, ASDCParametersException, IOException { - List<String> listControllers = ASDCConfiguration.getAllDefinedControllers(); - - assertTrue(listControllers.size()==1); - assertTrue("asdc-controller1".equals(listControllers.get(0))); - - ASDCConfiguration asdcConfiguration = new ASDCConfiguration("asdc-controller1"); - assertTrue(asdcConfiguration.getAsdcControllerName().equals("asdc-controller1")); - - - // Try to reload a wrong Json file - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP_BAD); - msoPropertiesFactory.reloadMsoProperties(); - - listControllers = ASDCConfiguration.getAllDefinedControllers(); - assertTrue(listControllers.size()==0); - - } - - @Test - public final void testABadInit() throws MsoPropertiesException { - msoPropertiesFactory.removeAllMsoProperties(); - - try { - ASDCConfiguration asdcConfiguration = new ASDCConfiguration("asdc-controller1"); - fail("Should have thrown an ASDCParametersException because prop factory is empty!"); - } catch (ASDCParametersException e) { - assertTrue(e.getMessage().contains(("mso.asdc.json not initialized properly, ASDC config cannot be reloaded"))); - } catch (IOException e) { - fail("Should have thrown an ASDCParametersException, not IOException because file is corrupted!"); - } - } - - @Test - public final void testFileDoesNotExist() throws MsoPropertiesException, ASDCParametersException, IOException { - - ASDCConfiguration asdcConfiguration = new ASDCConfiguration("asdc-controller1"); - - msoPropertiesFactory.removeAllMsoProperties(); - - try { - asdcConfiguration.refreshASDCConfig(); - fail("Should have thrown an ASDCParametersException because factory is empty!"); - } catch (ASDCParametersException e) { - assertTrue(e.getMessage().contains(("mso.asdc.json not initialized properly, ASDC config cannot be reloaded"))); - } - } - - @Test - public final void testWithTLS () throws ASDCParametersException, IOException, MsoPropertiesException { - ASDCConfiguration asdcConfiguration = new ASDCConfiguration("asdc-controller1"); - - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP4_WITH_TLS); - msoPropertiesFactory.reloadMsoProperties(); - - asdcConfiguration.refreshASDCConfig(); - - assertTrue(asdcConfiguration.activateServerTLSAuth()); - assertTrue("/test".equals(asdcConfiguration.getKeyStorePath())); - assertTrue("ThePassword".equals(asdcConfiguration.getKeyStorePassword())); - } - -} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCControllerTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCControllerTest.java deleted file mode 100644 index f8f1816df3..0000000000 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCControllerTest.java +++ /dev/null @@ -1,418 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2018 Huawei 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.openecomp.mso.asdc.client; - - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.mockito.Matchers.any; -import java.io.IOException; -import java.lang.reflect.Field; -import java.net.URISyntaxException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.codec.binary.Base64; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Test; -import org.mockito.Mockito; - -import org.onap.sdc.api.IDistributionClient; -import org.onap.sdc.api.consumer.INotificationCallback; -import org.onap.sdc.api.notification.IArtifactInfo; -import org.onap.sdc.api.notification.INotificationData; -import org.onap.sdc.api.notification.IResourceInstance; -import org.onap.sdc.api.results.IDistributionClientDownloadResult; -import org.onap.sdc.api.results.IDistributionClientResult; -import org.onap.sdc.impl.mock.DistributionClientStubImpl; -import org.onap.sdc.utils.DistributionActionResultEnum; -import org.openecomp.mso.asdc.client.ASDCConfiguration; -import org.openecomp.mso.asdc.client.ASDCController; -import org.openecomp.mso.asdc.client.ASDCControllerStatus; -import org.openecomp.mso.asdc.client.exceptions.ASDCControllerException; -import org.openecomp.mso.asdc.client.exceptions.ASDCParametersException; -import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException; -import org.openecomp.mso.asdc.installer.heat.VfResourceInstaller; -import org.openecomp.mso.properties.MsoJavaProperties; -import org.openecomp.mso.properties.MsoPropertiesException; -import org.openecomp.mso.properties.MsoPropertiesFactory; - - - -/** - * THis class tests the ASDC Controller by using the ASDC Mock CLient - * - * - */ -public class ASDCControllerTest { - - private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory(); - - private static String heatExample; - private static String heatExampleMD5HashBase64; - - private static INotificationData iNotif; - - private static IDistributionClientDownloadResult downloadResult; - private static IDistributionClientDownloadResult downloadCorruptedResult; - - private static IDistributionClientResult successfulClientInitResult; - private static IDistributionClientResult unsuccessfulClientInitResult; - - private static IArtifactInfo artifactInfo1; - - private static IResourceInstance resource1; - - private static VfResourceInstaller vnfInstaller; - - public static final String ASDC_PROP = MsoJavaProperties.class.getClassLoader().getResource("mso.json").toString().substring(5); - public static final String ASDC_PROP2 = MsoJavaProperties.class.getClassLoader().getResource("mso2.json").toString().substring(5); - public static final String ASDC_PROP3 = MsoJavaProperties.class.getClassLoader().getResource("mso3.json").toString().substring(5); - public static final String ASDC_PROP_BAD = MsoJavaProperties.class.getClassLoader().getResource("mso-bad.json").toString().substring(5); - public static final String ASDC_PROP_WITH_NULL = MsoJavaProperties.class.getClassLoader().getResource("mso-with-NULL.json").toString().substring(5); - - @BeforeClass - public static final void prepareMockNotification() throws MsoPropertiesException, IOException, URISyntaxException, NoSuchAlgorithmException, ArtifactInstallerException { - - heatExample = new String(Files.readAllBytes(Paths.get(ASDCControllerTest.class.getClassLoader().getResource("resource-examples/autoscaling.yaml").toURI()))); - MessageDigest md = MessageDigest.getInstance("MD5"); - byte[] md5Hash = md.digest(heatExample.getBytes()); - heatExampleMD5HashBase64 = Base64.encodeBase64String(md5Hash); - - iNotif= Mockito.mock(INotificationData.class); - - // Create fake ArtifactInfo - artifactInfo1 = Mockito.mock(IArtifactInfo.class); - Mockito.when(artifactInfo1.getArtifactChecksum()).thenReturn(ASDCControllerTest.heatExampleMD5HashBase64); - - Mockito.when(artifactInfo1.getArtifactName()).thenReturn("artifact1"); - Mockito.when(artifactInfo1.getArtifactType()).thenReturn(ASDCConfiguration.HEAT); - Mockito.when(artifactInfo1.getArtifactURL()).thenReturn("https://localhost:8080/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml"); - Mockito.when(artifactInfo1.getArtifactUUID()).thenReturn("UUID1"); - Mockito.when(artifactInfo1.getArtifactDescription()).thenReturn("testos artifact1"); - - // Now provision the NotificationData mock - List<IArtifactInfo> listArtifact = new ArrayList<>(); - listArtifact.add(artifactInfo1); - - // Create fake resource Instance - resource1 = Mockito.mock (IResourceInstance.class); - Mockito.when (resource1.getResourceType ()).thenReturn ("VF"); - Mockito.when (resource1.getResourceName ()).thenReturn ("resourceName"); - Mockito.when (resource1.getArtifacts ()).thenReturn (listArtifact); - - List<IResourceInstance> resources = new ArrayList<> (); - resources.add (resource1); - - Mockito.when(iNotif.getResources()).thenReturn(resources); - Mockito.when(iNotif.getDistributionID()).thenReturn("distributionID1"); - Mockito.when(iNotif.getServiceName()).thenReturn("serviceName1"); - Mockito.when(iNotif.getServiceUUID()).thenReturn("serviceNameUUID1"); - Mockito.when(iNotif.getServiceVersion()).thenReturn("1.0"); - - downloadResult = Mockito.mock(IDistributionClientDownloadResult.class); - Mockito.when(downloadResult.getArtifactPayload()).thenReturn(heatExample.getBytes()); - Mockito.when(downloadResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS); - Mockito.when(downloadResult.getDistributionMessageResult()).thenReturn("Success"); - - downloadCorruptedResult = Mockito.mock(IDistributionClientDownloadResult.class); - Mockito.when(downloadCorruptedResult.getArtifactPayload()).thenReturn((heatExample+"badone").getBytes()); - Mockito.when(downloadCorruptedResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS); - Mockito.when(downloadCorruptedResult.getDistributionMessageResult()).thenReturn("Success"); - - vnfInstaller = Mockito.mock(VfResourceInstaller.class); - - // Mock now the ASDC distribution client behavior - successfulClientInitResult = Mockito.mock(IDistributionClientResult.class); - Mockito.when(successfulClientInitResult.getDistributionActionResult ()).thenReturn(DistributionActionResultEnum.SUCCESS); - - unsuccessfulClientInitResult = Mockito.mock(IDistributionClientResult.class); - Mockito.when(unsuccessfulClientInitResult.getDistributionActionResult ()).thenReturn(DistributionActionResultEnum.GENERAL_ERROR); - - } - - @Before - public final void initBeforeEachTest() throws MsoPropertiesException { - // load the config - msoPropertiesFactory.removeAllMsoProperties(); - msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); - } - - @AfterClass - public static final void kill () throws MsoPropertiesException { - - msoPropertiesFactory.removeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC); - - } - - @Test - public final void testTheInitWithASDCStub() throws ASDCControllerException, ASDCParametersException, IOException { - - ASDCController asdcController = new ASDCController("asdc-controller1",new DistributionClientStubImpl()); - asdcController.initASDC(); - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.IDLE); - assertTrue(asdcController.getNbOfNotificationsOngoing()== 0); - } - - @Test - public final void testTheNotificationWithASDCStub() throws ASDCControllerException, ASDCParametersException, IOException { - - ASDCController asdcController = new ASDCController("asdc-controller1",new DistributionClientStubImpl(),vnfInstaller); - asdcController.initASDC(); - // try to send a notif, this should fail internally, we just want to ensure that in case of crash, controller status goes to IDLE - asdcController.treatNotification(iNotif); - - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.IDLE); - assertTrue(asdcController.getNbOfNotificationsOngoing()== 0); - - } - - @Test - public final void testASecondInit() throws ASDCControllerException, ASDCParametersException, IOException { - ASDCController asdcController = new ASDCController("asdc-controller1",new DistributionClientStubImpl(),vnfInstaller); - asdcController.initASDC(); - // try to send a notif, this should fail internally, we just want to ensure that in case of crash, controller status goes to IDLE - - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.IDLE); - assertTrue(asdcController.getNbOfNotificationsOngoing()== 0); - - try { - asdcController.initASDC(); - fail("ASDCControllerException should have been raised for the init"); - } catch (ASDCControllerException e) { - assertTrue("The controller is already initialized, call the closeASDC method first".equals(e.getMessage())); - } - - // No changes expected on the controller state - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.IDLE); - assertTrue(asdcController.getNbOfNotificationsOngoing()== 0); - } - - @Test - @Ignore // 1802 merge - public final void testInitCrashWithMockitoClient() throws ASDCParametersException, IOException { - - IDistributionClient distributionClient; - // First case for init method - distributionClient = Mockito.mock(IDistributionClient.class); - Mockito.when(distributionClient.download(artifactInfo1)).thenThrow(new RuntimeException("ASDC Client not initialized")); - Mockito.when(distributionClient.init(any(ASDCConfiguration.class),any(INotificationCallback.class))).thenReturn(unsuccessfulClientInitResult); - Mockito.when(distributionClient.start()).thenReturn(unsuccessfulClientInitResult); - - ASDCController asdcController = new ASDCController("asdc-controller1",distributionClient,vnfInstaller); - - // This should return an exception - try { - asdcController.initASDC(); - fail("ASDCControllerException should have been raised for the init"); - } catch (ASDCControllerException e) { - assertTrue("Initialization of the ASDC Controller failed with reason: null".equals(e.getMessage())); - } - - assertTrue(asdcController.getControllerStatus() == ASDCControllerStatus.STOPPED); - assertTrue(asdcController.getNbOfNotificationsOngoing()== 0); - - // Second case for start method - - Mockito.when(distributionClient.init(any(ASDCConfiguration.class),any(INotificationCallback.class))).thenReturn(successfulClientInitResult); - Mockito.when(distributionClient.start()).thenReturn(unsuccessfulClientInitResult); - - // This should return an exception - try { - asdcController.initASDC(); - fail("ASDCControllerException should have been raised for the init"); - } catch (ASDCControllerException e) { - assertTrue("Startup of the ASDC Controller failed with reason: null".equals(e.getMessage())); - } - - assertTrue(asdcController.getControllerStatus() == ASDCControllerStatus.STOPPED); - assertTrue(asdcController.getNbOfNotificationsOngoing()== 0); - } - - @Test - public final void testTheStop() throws ASDCControllerException, ASDCParametersException, IOException { - - ASDCController asdcController = new ASDCController("asdc-controller1",new DistributionClientStubImpl(),vnfInstaller); - - asdcController.closeASDC(); - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.STOPPED); - - - asdcController = new ASDCController("asdc-controller1",new DistributionClientStubImpl(),vnfInstaller); - asdcController.initASDC(); - asdcController.closeASDC(); - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.STOPPED); - } - - @Test - @Ignore // 1802 merge - public final void testConfigRefresh () throws ASDCParametersException, ASDCControllerException, IOException, MsoPropertiesException { - IDistributionClient distributionClient; - distributionClient = Mockito.mock(IDistributionClient.class); - Mockito.when(distributionClient.download(artifactInfo1)).thenReturn(downloadResult); - Mockito.when(distributionClient.init(any(ASDCConfiguration.class),any(INotificationCallback.class))).thenReturn(successfulClientInitResult); - Mockito.when(distributionClient.start()).thenReturn(successfulClientInitResult); - - - ASDCController asdcController = new ASDCController("asdc-controller1",distributionClient,vnfInstaller); - - // it should not raise any exception even if controller is not yet initialized - asdcController.updateConfigIfNeeded(); - - asdcController.initASDC(); - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.IDLE); - assertFalse(asdcController.updateConfigIfNeeded()); - - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP3); - msoPropertiesFactory.reloadMsoProperties(); - // It should fail if it tries to refresh the config as the init will now fail - assertTrue(asdcController.updateConfigIfNeeded()); - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.IDLE); - - - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); - msoPropertiesFactory.reloadMsoProperties(); - } - - @Test - @Ignore // 1802 merge - public final void testConfigRefreshWhenBusy () throws IOException, MsoPropertiesException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, ASDCParametersException, ASDCControllerException { - IDistributionClient distributionClient; - distributionClient = Mockito.mock(IDistributionClient.class); - Mockito.when(distributionClient.download(artifactInfo1)).thenReturn(downloadResult); - Mockito.when(distributionClient.init(any(ASDCConfiguration.class),any(INotificationCallback.class))).thenReturn(successfulClientInitResult); - Mockito.when(distributionClient.start()).thenReturn(successfulClientInitResult); - - ASDCController asdcController = new ASDCController("asdc-controller1",distributionClient,vnfInstaller); - - // it should not raise any exception even if controller is not yet initialized - asdcController.updateConfigIfNeeded(); - - asdcController.initASDC(); - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.IDLE); - assertFalse(asdcController.updateConfigIfNeeded()); - - // Simulate a BUSY case by reflection - Field controllerStatus; - controllerStatus = ASDCController.class.getDeclaredField("controllerStatus"); - controllerStatus.setAccessible(true); - controllerStatus.set(asdcController,ASDCControllerStatus.BUSY); - - - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP3); - msoPropertiesFactory.reloadMsoProperties(); - // It should fail if it tries to refresh the config as the init will now fail - try { - asdcController.updateConfigIfNeeded(); - fail ("ASDCControllerException should have been raised"); - } catch (ASDCControllerException e) { - assertTrue("Cannot close the ASDC controller as it's currently in BUSY state".equals(e.getMessage())); - } - - // Try it a second time to see if we still see the changes - try { - asdcController.updateConfigIfNeeded(); - fail ("ASDCControllerException should have been raised"); - } catch (ASDCControllerException e) { - assertTrue("Cannot close the ASDC controller as it's currently in BUSY state".equals(e.getMessage())); - } - - // Revert to Idle by reflection - controllerStatus.set(asdcController,ASDCControllerStatus.IDLE); - controllerStatus.setAccessible(false); - - // This should work now, controller should be restarted - assertTrue(asdcController.updateConfigIfNeeded()); - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.IDLE); - - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); - msoPropertiesFactory.reloadMsoProperties(); - } - - - @Test - @Ignore // 1802 merge - public final void testBadConfigRefresh () throws ASDCParametersException, ASDCControllerException, IOException, MsoPropertiesException { - IDistributionClient distributionClient; - distributionClient = Mockito.mock(IDistributionClient.class); - Mockito.when(distributionClient.download(artifactInfo1)).thenReturn(downloadResult); - Mockito.when(distributionClient.init(any(ASDCConfiguration.class),any(INotificationCallback.class))).thenReturn(successfulClientInitResult); - Mockito.when(distributionClient.start()).thenReturn(successfulClientInitResult); - - - ASDCController asdcController = new ASDCController("asdc-controller1",distributionClient,vnfInstaller); - - // it should not raise any exception even if controller is not yet initialized - asdcController.updateConfigIfNeeded(); - - asdcController.initASDC(); - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.IDLE); - assertFalse(asdcController.updateConfigIfNeeded()); - - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP_BAD); - msoPropertiesFactory.reloadMsoProperties(); - // It should fail if it tries to refresh the config as the init will now fail - try { - asdcController.updateConfigIfNeeded(); - fail ("ASDCParametersException should have been raised"); - } catch (ASDCParametersException ep) { - assertTrue("consumerGroup parameter cannot be found in config mso.properties".equals(ep.getMessage())); - } - - // This should stop the controller, as it can't work with a bad config file - assertTrue(asdcController.getControllerStatus()== ASDCControllerStatus.STOPPED); - - - msoPropertiesFactory.changeMsoPropertiesFilePath(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); - msoPropertiesFactory.reloadMsoProperties(); - } - - @Test - @Ignore // 1802 merge - public final void testConfigAccess () throws ASDCControllerException, ASDCParametersException, IOException { - IDistributionClient distributionClient; - distributionClient = Mockito.mock(IDistributionClient.class); - Mockito.when(distributionClient.download(artifactInfo1)).thenReturn(downloadResult); - Mockito.when(distributionClient.init(any(ASDCConfiguration.class),any(INotificationCallback.class))).thenReturn(successfulClientInitResult); - Mockito.when(distributionClient.start()).thenReturn(successfulClientInitResult); - - - ASDCController asdcController = new ASDCController("asdc-controller1",distributionClient,vnfInstaller); - - assertTrue("Unknown".equals(asdcController.getAddress())); - assertTrue("Unknown".equals(asdcController.getEnvironment())); - - asdcController.initASDC(); - - assertTrue("hostname".equals(asdcController.getAddress())); - assertTrue("environmentName".equals(asdcController.getEnvironment())); - - } - -} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCGlobalControllerTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCGlobalControllerTest.java deleted file mode 100644 index c301b0575f..0000000000 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/ASDCGlobalControllerTest.java +++ /dev/null @@ -1,213 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2018 Huawei 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.openecomp.mso.asdc.client; - - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import java.io.IOException; -import java.net.URISyntaxException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.codec.binary.Base64; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.mockito.Mockito; - -import org.onap.sdc.api.notification.IArtifactInfo; -import org.onap.sdc.api.notification.INotificationData; -import org.onap.sdc.api.notification.IResourceInstance; -import org.onap.sdc.api.results.IDistributionClientDownloadResult; -import org.onap.sdc.api.results.IDistributionClientResult; -import org.onap.sdc.utils.DistributionActionResultEnum; -import org.openecomp.mso.asdc.client.ASDCConfiguration; -import org.openecomp.mso.asdc.client.ASDCGlobalController; -import org.openecomp.mso.asdc.client.exceptions.ASDCControllerException; -import org.openecomp.mso.asdc.client.exceptions.ASDCParametersException; -import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException; -import org.openecomp.mso.properties.MsoJavaProperties; -import org.openecomp.mso.properties.MsoPropertiesException; -import org.openecomp.mso.properties.MsoPropertiesFactory; - - - -/** - * THis class tests the ASDC Controller by using the ASDC Mock CLient - * - * - */ -public class ASDCGlobalControllerTest { - - private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory(); - - private static String heatExample; - private static String heatExampleMD5HashBase64; - - private static INotificationData iNotif; - - private static IDistributionClientDownloadResult downloadResult; - private static IDistributionClientDownloadResult downloadCorruptedResult; - - private static IDistributionClientResult successfulClientInitResult; - private static IDistributionClientResult unsuccessfulClientInitResult; - - private static IArtifactInfo artifactInfo1; - - private static IResourceInstance resource1; - - public static final String ASDC_PROP = MsoJavaProperties.class.getClassLoader().getResource("mso.json").toString().substring(5); - public static final String ASDC_PROP2 = MsoJavaProperties.class.getClassLoader().getResource("mso2.json").toString().substring(5); - public static final String ASDC_PROP3 = MsoJavaProperties.class.getClassLoader().getResource("mso3.json").toString().substring(5); - public static final String ASDC_PROP_BAD = MsoJavaProperties.class.getClassLoader().getResource("mso-bad.json").toString().substring(5); - public static final String ASDC_PROP_WITH_NULL = MsoJavaProperties.class.getClassLoader().getResource("mso-with-NULL.json").toString().substring(5); - public static final String ASDC_PROP_WITH_DOUBLE = MsoJavaProperties.class.getClassLoader().getResource("mso-two-configs.json").toString().substring(5); - public static final String ASDC_PROP_WITH_DOUBLE2 = MsoJavaProperties.class.getClassLoader().getResource("mso-two-configs2.json").toString().substring(5); - - @BeforeClass - public static final void prepareMockNotification() throws MsoPropertiesException, IOException, URISyntaxException, NoSuchAlgorithmException, ArtifactInstallerException { - - heatExample = new String(Files.readAllBytes(Paths.get(ASDCGlobalControllerTest.class.getClassLoader().getResource("resource-examples/autoscaling.yaml").toURI()))); - MessageDigest md = MessageDigest.getInstance("MD5"); - byte[] md5Hash = md.digest(heatExample.getBytes()); - heatExampleMD5HashBase64 = Base64.encodeBase64String(md5Hash); - - iNotif= Mockito.mock(INotificationData.class); - - // Create fake ArtifactInfo - artifactInfo1 = Mockito.mock(IArtifactInfo.class); - Mockito.when(artifactInfo1.getArtifactChecksum()).thenReturn(ASDCGlobalControllerTest.heatExampleMD5HashBase64); - - Mockito.when(artifactInfo1.getArtifactName()).thenReturn("artifact1"); - Mockito.when(artifactInfo1.getArtifactType()).thenReturn(ASDCConfiguration.HEAT); - Mockito.when(artifactInfo1.getArtifactURL()).thenReturn("https://localhost:8080/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml"); - Mockito.when(artifactInfo1.getArtifactUUID()).thenReturn("UUID1"); - Mockito.when(artifactInfo1.getArtifactDescription()).thenReturn("testos artifact1"); - - // Now provision the NotificationData mock - List<IArtifactInfo> listArtifact = new ArrayList<>(); - listArtifact.add(artifactInfo1); - - // Create fake resource Instance - resource1 = Mockito.mock (IResourceInstance.class); - Mockito.when (resource1.getResourceType ()).thenReturn ("VF"); - Mockito.when (resource1.getResourceName ()).thenReturn ("resourceName"); - Mockito.when (resource1.getArtifacts ()).thenReturn (listArtifact); - - List<IResourceInstance> resources = new ArrayList<> (); - resources.add (resource1); - - Mockito.when(iNotif.getResources()).thenReturn(resources); - Mockito.when(iNotif.getDistributionID()).thenReturn("distributionID1"); - Mockito.when(iNotif.getServiceName()).thenReturn("serviceName1"); - Mockito.when(iNotif.getServiceUUID()).thenReturn("serviceNameUUID1"); - Mockito.when(iNotif.getServiceVersion()).thenReturn("1.0"); - - downloadResult = Mockito.mock(IDistributionClientDownloadResult.class); - Mockito.when(downloadResult.getArtifactPayload()).thenReturn(heatExample.getBytes()); - Mockito.when(downloadResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS); - Mockito.when(downloadResult.getDistributionMessageResult()).thenReturn("Success"); - - downloadCorruptedResult = Mockito.mock(IDistributionClientDownloadResult.class); - Mockito.when(downloadCorruptedResult.getArtifactPayload()).thenReturn((heatExample+"badone").getBytes()); - Mockito.when(downloadCorruptedResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS); - Mockito.when(downloadCorruptedResult.getDistributionMessageResult()).thenReturn("Success"); - - - // Mock now the ASDC distribution client behavior - successfulClientInitResult = Mockito.mock(IDistributionClientResult.class); - Mockito.when(successfulClientInitResult.getDistributionActionResult ()).thenReturn(DistributionActionResultEnum.SUCCESS); - - unsuccessfulClientInitResult = Mockito.mock(IDistributionClientResult.class); - Mockito.when(unsuccessfulClientInitResult.getDistributionActionResult ()).thenReturn(DistributionActionResultEnum.GENERAL_ERROR); - - } - - @Before - public final void initBeforeEachTest() throws MsoPropertiesException { - // load the config - msoPropertiesFactory.removeAllMsoProperties(); - msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); - } - - @AfterClass - public static final void kill () throws MsoPropertiesException { - - msoPropertiesFactory.removeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC); - } - - @Test - public final void testUpdateControllersConfigIfNeeded() throws ASDCControllerException, ASDCParametersException, IOException, MsoPropertiesException { - - ASDCGlobalController asdcGlobalController = new ASDCGlobalController(); - assertTrue(asdcGlobalController.getControllers().size()==0); - - // first init - assertTrue(asdcGlobalController.updateControllersConfigIfNeeded()); - assertTrue(asdcGlobalController.getControllers().size()==1); - assertTrue(asdcGlobalController.getControllers().get("asdc-controller1") != null); - - // Add a second one - msoPropertiesFactory.removeAllMsoProperties(); - msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP_WITH_DOUBLE); - assertTrue(asdcGlobalController.updateControllersConfigIfNeeded()); - assertTrue(asdcGlobalController.getControllers().size()==2); - assertTrue(asdcGlobalController.getControllers().get("asdc-controller1") != null); - assertTrue(asdcGlobalController.getControllers().get("asdc-controller2") != null); - // Check that update does nothing - assertFalse(asdcGlobalController.updateControllersConfigIfNeeded()); - assertTrue(asdcGlobalController.getControllers().size()==2); - - // Change the second one name - msoPropertiesFactory.removeAllMsoProperties(); - msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP_WITH_DOUBLE2); - assertTrue(asdcGlobalController.updateControllersConfigIfNeeded()); - assertTrue(asdcGlobalController.getControllers().size()==2); - assertTrue(asdcGlobalController.getControllers().get("asdc-controller1") != null); - assertTrue(asdcGlobalController.getControllers().get("asdc-controller2B") != null); - - - } - - @Test - public final void testCloseASDC() { - - ASDCGlobalController asdcGlobalController = new ASDCGlobalController(); - assertTrue(asdcGlobalController.getControllers().size()==0); - - // first init - assertTrue(asdcGlobalController.updateControllersConfigIfNeeded()); - assertTrue(asdcGlobalController.getControllers().size()==1); - assertTrue(asdcGlobalController.getControllers().get("asdc-controller1") != null); - - asdcGlobalController.closeASDC(); - assertTrue(asdcGlobalController.getControllers().size()==0); - - - } - -} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonArtifactInfoTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonArtifactInfoTest.java deleted file mode 100644 index 22d5471cd3..0000000000 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonArtifactInfoTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2018 Huawei 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.openecomp.mso.asdc.client.test.emulators; - -import org.junit.Test; - -import java.util.ArrayList; -import java.util.List; - -public class JsonArtifactInfoTest { - JsonArtifactInfo jsonArtifactInfo = new JsonArtifactInfo(); - - List<JsonArtifactInfo> artifactList = new ArrayList<>(); - - @Test - public final void addArtifactToUUIDMap() - { - jsonArtifactInfo.addArtifactToUUIDMap(artifactList); - } - - @Test - public final void setAttribute() - { - jsonArtifactInfo.setAttribute("artifactName", "test"); - } - - - @Test - public final void getArtifactDescription() - { - final String artifactDescription = jsonArtifactInfo.getArtifactDescription(); - final String artifactName = jsonArtifactInfo.getArtifactName(); - final String artifactChecksumfinal = jsonArtifactInfo.getArtifactChecksum(); - final String artifactChecksum = jsonArtifactInfo.getArtifactChecksum(); - final Integer artifactTimeout = jsonArtifactInfo.getArtifactTimeout(); - final String artifactType = jsonArtifactInfo.getArtifactType(); - final String artifactURL = jsonArtifactInfo.getArtifactURL(); - final String artifactUUID = jsonArtifactInfo.getArtifactUUID(); - final String artifactVersion = jsonArtifactInfo.getArtifactVersion(); - jsonArtifactInfo.getGeneratedArtifact(); - jsonArtifactInfo.getRelatedArtifacts(); - - } -} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonNotificationDataTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonNotificationDataTest.java deleted file mode 100644 index 596b2b2b54..0000000000 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonNotificationDataTest.java +++ /dev/null @@ -1,56 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2018 Huawei 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.openecomp.mso.asdc.client.test.emulators; - -import org.junit.Test; -import static org.junit.Assert.assertEquals; - -public class JsonNotificationDataTest { - - @Test - public void setAttributeTest() - { - JsonNotificationData jsonNotificationData = new JsonNotificationData(); - jsonNotificationData.setWorkloadContext("test"); - jsonNotificationData.setAttribute("distributionID","test"); - jsonNotificationData.setAttribute("workloadContext","test"); - String getWorkloadContextVal = jsonNotificationData.getWorkloadContext(); - assertEquals("test",getWorkloadContextVal); - } - - @Test - public void getAttributeTest() - { - JsonNotificationData jsonNotificationData = new JsonNotificationData(); - jsonNotificationData.setAttribute("workloadContext","test");; - jsonNotificationData.getArtifactMetadataByUUID("test"); - jsonNotificationData.getDistributionID(); - jsonNotificationData.getResources(); - jsonNotificationData.getServiceArtifacts(); - jsonNotificationData.getServiceDescription(); - jsonNotificationData.getServiceInvariantUUID(); - jsonNotificationData.getServiceName(); - jsonNotificationData.getServiceUUID(); - jsonNotificationData.getServiceVersion(); - String getWorkloadContextVal = jsonNotificationData.getWorkloadContext(); - assertEquals("test",getWorkloadContextVal); - } -} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonResourceInfoTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonResourceInfoTest.java deleted file mode 100644 index ab884fed3e..0000000000 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonResourceInfoTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2018 Huawei 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.openecomp.mso.asdc.client.test.emulators; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class JsonResourceInfoTest { - - - @Test - public void setAttributeTest() - { - JsonResourceInfo jsonResourceInfo = new JsonResourceInfo(); - jsonResourceInfo.setAttribute("resourceInstanceName","resourceInstanceName"); - String resourceInstanceName = jsonResourceInfo.getResourceInstanceName(); - assertEquals(resourceInstanceName,"resourceInstanceName"); - } - - @Test - public void getAttributeTest() - { - JsonResourceInfo jsonResourceInfo = new JsonResourceInfo(); - String resourceInstanceName = jsonResourceInfo.getResourceInstanceName(); - assertEquals(resourceInstanceName,null); - } - - @Test - public void getAttributeTestOthers() - { - JsonResourceInfo jsonResourceInfo = new JsonResourceInfo(); - String resourceInvariantUUID = jsonResourceInfo.getResourceInvariantUUID(); - jsonResourceInfo.getResourceName(); - jsonResourceInfo.getResourceType(); - jsonResourceInfo.getResourceUUID(); - jsonResourceInfo.getResourceVersion(); - jsonResourceInfo.getSubcategory(); - jsonResourceInfo.getCategory(); - jsonResourceInfo.getResourceCustomizationUUID(); - jsonResourceInfo.getArtifacts(); - assertEquals(resourceInvariantUUID,null); - } - -} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonVfModuleMetaDataTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonVfModuleMetaDataTest.java deleted file mode 100644 index 02dc843843..0000000000 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/client/test/emulators/JsonVfModuleMetaDataTest.java +++ /dev/null @@ -1,46 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2018 Huawei 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.openecomp.mso.asdc.client.test.emulators; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class JsonVfModuleMetaDataTest { - - @Test - public void setGetAttributeTest() - { - JsonVfModuleMetaData jsonVfModuleMetaDataTest = new JsonVfModuleMetaData(); - jsonVfModuleMetaDataTest.setAttribute("vfModuleModelVersion",new String("test")); - jsonVfModuleMetaDataTest.setAttribute("isBase",new Boolean(true)); - jsonVfModuleMetaDataTest.getArtifacts(); - jsonVfModuleMetaDataTest.getProperties(); - jsonVfModuleMetaDataTest.getVfModuleModelDescription(); - jsonVfModuleMetaDataTest.getVfModuleModelInvariantUUID(); - jsonVfModuleMetaDataTest.getVfModuleModelCustomizationUUID(); - jsonVfModuleMetaDataTest.getVfModuleModelName(); - jsonVfModuleMetaDataTest.getVfModuleModelUUID(); - jsonVfModuleMetaDataTest.getVfModuleModelVersion(); - Boolean baseVal = jsonVfModuleMetaDataTest.isBase(); - assertEquals(baseVal, true); - } -} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/ToscaResourceInstallerTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/ToscaResourceInstallerTest.java deleted file mode 100644 index ebcae50ad9..0000000000 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/ToscaResourceInstallerTest.java +++ /dev/null @@ -1,674 +0,0 @@ -/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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.openecomp.mso.asdc.installer.heat.tests;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.lang3.tuple.Pair;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.openecomp.mso.asdc.client.ASDCConfiguration;
-import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException;
-import org.openecomp.mso.asdc.client.ASDCControllerTest;
-import org.openecomp.mso.asdc.installer.ToscaResourceStructure;
-import org.openecomp.mso.asdc.installer.VfResourceStructure;
-import org.openecomp.mso.asdc.installer.heat.ToscaResourceInstaller;
-import org.openecomp.mso.db.catalog.CatalogDatabase;
-import org.openecomp.mso.db.catalog.beans.AllottedResource;
-import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization;
-import org.openecomp.mso.db.catalog.beans.NetworkResource;
-import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization;
-import org.openecomp.mso.db.catalog.beans.Service;
-import org.openecomp.mso.db.catalog.beans.ServiceToAllottedResources;
-import org.openecomp.mso.db.catalog.beans.ServiceToNetworks;
-import org.openecomp.mso.db.catalog.beans.ServiceToResourceCustomization;
-import org.openecomp.mso.db.catalog.beans.TempNetworkHeatTemplateLookup;
-import org.openecomp.mso.db.catalog.beans.ToscaCsar;
-import org.openecomp.mso.db.catalog.beans.VfModule;
-import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;
-import org.openecomp.mso.db.catalog.beans.VfModuleToHeatFiles;
-import org.openecomp.mso.db.catalog.beans.VnfResCustomToVfModuleCustom;
-import org.openecomp.mso.db.catalog.beans.VnfResource;
-import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;
-import org.openecomp.mso.properties.MsoJavaProperties;
-import org.openecomp.mso.properties.MsoPropertiesException;
-import org.openecomp.mso.properties.MsoPropertiesFactory;
-import org.onap.sdc.api.IDistributionClient;
-import org.onap.sdc.api.notification.IArtifactInfo;
-import org.onap.sdc.api.notification.INotificationData;
-import org.onap.sdc.api.notification.IResourceInstance;
-import org.onap.sdc.api.results.IDistributionClientDownloadResult;
-import org.onap.sdc.api.results.IDistributionClientResult;
-import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
-import org.onap.sdc.tosca.parser.impl.FilterType;
-import org.onap.sdc.tosca.parser.impl.SdcTypes;
-import org.onap.sdc.toscaparser.api.CapabilityAssignment;
-import org.onap.sdc.toscaparser.api.CapabilityAssignments;
-import org.onap.sdc.toscaparser.api.Group;
-import org.onap.sdc.toscaparser.api.NodeTemplate;
-import org.onap.sdc.toscaparser.api.RequirementAssignments;
-import org.onap.sdc.toscaparser.api.elements.Metadata;
-import org.onap.sdc.toscaparser.api.parameters.Input;
-import org.onap.sdc.utils.DistributionActionResultEnum;
-
-import mockit.Mock;
-import mockit.MockUp;
-
-public class ToscaResourceInstallerTest {
-
- private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory();
-
- private static String heatExample;
- private static String heatExampleMD5HashBase64;
-
- private static INotificationData iNotif;
-
- private static IDistributionClientDownloadResult downloadResult;
- private static IDistributionClientDownloadResult downloadCorruptedResult;
-
- private static IDistributionClientResult successfulClientInitResult;
- private static IDistributionClientResult unsuccessfulClientInitResult;
-
- private static IDistributionClient distributionClient;
-
- private static IArtifactInfo artifactInfo1;
-
- private static IResourceInstance resource1;
-
- private static VfResourceStructure vrs;
-
- public static final String ASDC_PROP = MsoJavaProperties.class.getClassLoader().getResource("mso.json").toString()
- .substring(5);
- public static final String ASDC_PROP2 = MsoJavaProperties.class.getClassLoader().getResource("mso2.json").toString()
- .substring(5);
- public static final String ASDC_PROP3 = MsoJavaProperties.class.getClassLoader().getResource("mso3.json").toString()
- .substring(5);
- public static final String ASDC_PROP_BAD = MsoJavaProperties.class.getClassLoader().getResource("mso-bad.json")
- .toString().substring(5);
- public static final String ASDC_PROP_WITH_NULL = MsoJavaProperties.class.getClassLoader()
- .getResource("mso-with-NULL.json").toString().substring(5);
-
- @BeforeClass
- public static final void prepareMockNotification() throws MsoPropertiesException, IOException, URISyntaxException,
- NoSuchAlgorithmException, ArtifactInstallerException {
-
- heatExample = new String(Files.readAllBytes(Paths.get(
- ASDCControllerTest.class.getClassLoader().getResource("resource-examples/autoscaling.yaml").toURI())));
- MessageDigest md = MessageDigest.getInstance("MD5");
- byte[] md5Hash = md.digest(heatExample.getBytes());
- heatExampleMD5HashBase64 = Base64.encodeBase64String(md5Hash);
-
- iNotif = Mockito.mock(INotificationData.class);
-
- // Create fake ArtifactInfo
- artifactInfo1 = Mockito.mock(IArtifactInfo.class);
- Mockito.when(artifactInfo1.getArtifactChecksum())
- .thenReturn(ToscaResourceInstallerTest.heatExampleMD5HashBase64);
-
- Mockito.when(artifactInfo1.getArtifactName()).thenReturn("artifact1");
- Mockito.when(artifactInfo1.getArtifactType()).thenReturn(ASDCConfiguration.HEAT);
- Mockito.when(artifactInfo1.getArtifactURL())
- .thenReturn("https://localhost:8080/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml");
- Mockito.when(artifactInfo1.getArtifactUUID()).thenReturn("UUID1");
- Mockito.when(artifactInfo1.getArtifactDescription()).thenReturn("testos artifact1");
-
- distributionClient = Mockito.mock(IDistributionClient.class);
-
- // Now provision the NotificationData mock
- List<IArtifactInfo> listArtifact = new ArrayList<>();
- listArtifact.add(artifactInfo1);
-
- // Create fake resource Instance
- resource1 = Mockito.mock(IResourceInstance.class);
- // Mockito.when(resource1.getResourceType()).thenReturn("VF");
- Mockito.when(resource1.getResourceName()).thenReturn("resourceName");
- Mockito.when(resource1.getArtifacts()).thenReturn(listArtifact);
-
- List<IResourceInstance> resources = new ArrayList<>();
- resources.add(resource1);
-
- Mockito.when(iNotif.getResources()).thenReturn(resources);
- Mockito.when(iNotif.getDistributionID()).thenReturn("distributionID1");
- Mockito.when(iNotif.getServiceName()).thenReturn("serviceName1");
- Mockito.when(iNotif.getServiceUUID()).thenReturn("serviceNameUUID1");
- Mockito.when(iNotif.getServiceVersion()).thenReturn("1.0");
-
- downloadResult = Mockito.mock(IDistributionClientDownloadResult.class);
- Mockito.when(downloadResult.getArtifactPayload()).thenReturn(heatExample.getBytes());
- Mockito.when(downloadResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS);
- Mockito.when(downloadResult.getDistributionMessageResult()).thenReturn("Success");
-
- downloadCorruptedResult = Mockito.mock(IDistributionClientDownloadResult.class);
- Mockito.when(downloadCorruptedResult.getArtifactPayload()).thenReturn((heatExample + "badone").getBytes());
- Mockito.when(downloadCorruptedResult.getDistributionActionResult())
- .thenReturn(DistributionActionResultEnum.SUCCESS);
- Mockito.when(downloadCorruptedResult.getDistributionMessageResult()).thenReturn("Success");
-
- vrs = new VfResourceStructure(iNotif, resource1);
- try {
- vrs.addArtifactToStructure(distributionClient, artifactInfo1, downloadResult);
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- try {
- vrs.createVfModuleStructures();
- } catch (ArtifactInstallerException e) {
- e.printStackTrace();
- }
- vrs.getNotification();
- vrs.getArtifactsMapByUUID();
- vrs.getCatalogNetworkResourceCustomization();
- vrs.getCatalogResourceCustomization();
- vrs.getCatalogService();
- vrs.getCatalogServiceToAllottedResources();
- vrs.getCatalogServiceToNetworks();
- vrs.getCatalogVnfResource();
- vrs.getResourceInstance();
- vrs.getVfModulesStructureList();
- vrs.getVfModuleStructure();
- vrs.setCatalogNetworkResourceCustomization(new NetworkResourceCustomization());
- vrs.setCatalogResourceCustomization(new AllottedResourceCustomization());
- vrs.setCatalogService(new Service());
- vrs.setCatalogServiceToAllottedResources(new ServiceToAllottedResources());
- vrs.setCatalogServiceToNetworks(new ServiceToNetworks());
- vrs.setCatalogVnfResource(new VnfResource());
- vrs.setSuccessfulDeployment();
-
- AllottedResourceCustomization arc = new AllottedResourceCustomization();
- arc.setModelCustomizationUuid("modelCustomizationUuid");
- List<AllottedResourceCustomization> allottedResources = new ArrayList<>();
- allottedResources.add(arc);
-
- NetworkResourceCustomization nrc = new NetworkResourceCustomization();
- nrc.setModelCustomizationUuid("modelCustomizationUuid");
- List<NetworkResourceCustomization> networkResources = new ArrayList<>();
- networkResources.add(nrc);
-
- new MockUp<CatalogDatabase>() {
- @Mock
- public List<AllottedResourceCustomization> getAllAllottedResourcesByServiceModelUuid(
- String serviceModelUuid) {
- return allottedResources;
- }
- };
- new MockUp<CatalogDatabase>() {
- @Mock
- public List<NetworkResourceCustomization> getAllNetworksByServiceModelUuid(String serviceModelUuid) {
- return networkResources;
- }
- };
-
- // Mock now the ASDC distribution client behavior
- successfulClientInitResult = Mockito.mock(IDistributionClientResult.class);
- Mockito.when(successfulClientInitResult.getDistributionActionResult())
- .thenReturn(DistributionActionResultEnum.SUCCESS);
-
- unsuccessfulClientInitResult = Mockito.mock(IDistributionClientResult.class);
- Mockito.when(unsuccessfulClientInitResult.getDistributionActionResult())
- .thenReturn(DistributionActionResultEnum.GENERAL_ERROR);
-
- }
-
- @Before
- public final void initBeforeEachTest() throws MsoPropertiesException {
- // load the config
- msoPropertiesFactory.removeAllMsoProperties();
- msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP);
- }
-
- @AfterClass
- public static final void kill() throws MsoPropertiesException {
-
- msoPropertiesFactory.removeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC);
-
- }
-
- @Test
- public void isResourceAlreadyDeployedAllotedResourceTest() {
- Mockito.when(resource1.getResourceType()).thenReturn("VF");
- Mockito.when(resource1.getCategory()).thenReturn("Allotted Resource");
- ToscaResourceInstaller tri = new ToscaResourceInstaller();
-
- try {
- tri.isResourceAlreadyDeployed(vrs);
- } catch (ArtifactInstallerException e) {
- }
- }
-
- @Test(expected=Exception.class)
- @Ignore // 1802 merge
- public void installTheResourceTest() {
-
- /*
- * COMMENTED OUT BECAUSE IT DOES NOT COMPILE IN ONAP JENKINS BUILD
- *
- ToscaResourceStructure trs = new ToscaResourceStructure();
- trs.getAllottedResource();
- trs.getAllottedList();
- trs.getCatalogAllottedResourceCustomization();
- trs.getCatalogAllottedServiceToResourceCustomization();
- trs.getCatalogNetworkResource();
- trs.getCatalogNetworkResourceCustomization();
- trs.getCatalogResourceCustomization();
- trs.getCatalogService();
- trs.getCatalogTempNetworkHeatTemplateLookup();
- trs.getCatalogToscaCsar();
- trs.getCatalogVfModule();
- trs.getCatalogVfModuleCustomization();
- trs.getCatalogVfModuleToHeatFiles();
- trs.getCatalogVfServiceToResourceCustomization();
- trs.getCatalogVlServiceToResourceCustomization();
- trs.getCatalogVnfResCustomToVfModuleCustom();
- trs.getCatalogVnfResource();
- trs.getCatalogVnfResourceCustomization();
- trs.getEnvHeatTemplateUUID();
- trs.getHeatFilesUUID();
- trs.getHeatTemplateUUID();
- trs.getNetworkTypes();
- trs.getSdcCsarHelper();
- trs.getServiceMetadata();
- trs.getServiceToResourceCustomization();
- trs.getServiceVersion();
- trs.getToscaArtifact();
- trs.getVfTypes();
- trs.getVolHeatEnvTemplateUUID();
- trs.getVolHeatTemplateUUID();
-
- NodeTemplate nodeTemplate = Mockito.mock(NodeTemplate.class);
- List<NodeTemplate> alnt = new ArrayList<>();
- trs.setAllottedList(alnt);
- trs.setAllottedResource(new AllottedResource());
- trs.setCatalogAllottedResourceCustomization(new AllottedResourceCustomization());
- trs.setCatalogAllottedServiceToResourceCustomization(new ServiceToResourceCustomization());
- trs.setCatalogNetworkResource(new NetworkResource());
- trs.setCatalogNetworkResourceCustomization(new NetworkResourceCustomization());
- trs.setCatalogResourceCustomization(new AllottedResourceCustomization());
- trs.setCatalogService(new Service());
- trs.setCatalogTempNetworkHeatTemplateLookup(new TempNetworkHeatTemplateLookup());
- trs.setCatalogToscaCsar(new ToscaCsar());
- trs.setCatalogVfModule(new VfModule());
- trs.setCatalogVfModuleCustomization(new VfModuleCustomization());
- trs.setCatalogVfModuleToHeatFiles(new VfModuleToHeatFiles());
- trs.setCatalogVfServiceToResourceCustomization(new ServiceToResourceCustomization());
- trs.setCatalogVlServiceToResourceCustomization(new ServiceToResourceCustomization());
- trs.setCatalogVnfResCustomToVfModuleCustom(new VnfResCustomToVfModuleCustom());
- trs.setCatalogVnfResource(new VnfResource());
- trs.setCatalogVnfResourceCustomization(new VnfResourceCustomization());
- trs.setEnvHeatTemplateUUID("envHeatTemplateUUID");
- trs.setHeatFilesUUID("heatFilesUUID");
- trs.setHeatTemplateUUID("heatTemplateUUID");
- trs.setNetworkTypes(alnt);
- trs.setVolHeatTemplateUUID("volHeatTemplateUUID");
- trs.setSdcCsarHelper(new ISdcCsarHelper() {
-
- @Override
- public List<NodeTemplate> getGroupMembersFromTopologyTemplate(String arg0) {
- return null;
- }
-
- @Override
- public List<Map<String, Object>> getGroupsOfOriginOfNodeTemplate(NodeTemplate arg0) {
- return null;
- }
-
- @Override
- public List<Map<String,Map<String,Object>>> getGroupsOfTopologyTemplateByToscaGroupType(String arg0) {
- return null;
- }
-
- @Override
- public List<Map<String,Map<String,Object>>> getGroupsOfTopologyTemplate() {
- return null;
- }
-
- @Override
- public List<Map<String,Map<String,Object>>> getPoliciesOfTargetByToscaPolicyType(NodeTemplate arg0, String arg1) {
- return null;
- }
-
- @Override
- public List<Map<String,Map<String,Object>>> getPoliciesOfTarget(NodeTemplate arg0) {
- return null;
- }
-
- @Override
- public NodeTemplate getNodeTemplateByName(String arg0) {
- return null;
- }
-
- @Override
- public List<Map<String,Object>> getPolicyTargetsFromOrigin(NodeTemplate arg0, String arg1) {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getPolicyTargetsFromTopologyTemplate(String arg0) {
- return null;
- }
-
- @Override
- public List<Map<String,Object>> getPoliciesOfOriginOfNodeTemplateByToscaPolicyType(NodeTemplate arg0, String arg1) {
- return null;
- }
-
- @Override
- public List<Map<String,Object>> getPoliciesOfOriginOfNodeTemplate(NodeTemplate arg0) {
- return null;
- }
-
- @Override
- public List<Map<String,Map<String,Object>>> getPoliciesOfTopologyTemplateByToscaPolicyType(String arg0) {
- return null;
- }
-
- @Override
- public List<Map<String,Map<String,Object>>> getPoliciesOfTopologyTemplate() {
- return null;
- }
-
- ////////////////////////////////
-
- @Override
- public boolean hasTopology(NodeTemplate arg0) {
- return false;
- }
-
- @Override
- public NodeTemplate getVnfConfig(String arg0) {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getVfcListByVf(String arg0) {
- return null;
- }
-
- @Override
- public List<Group> getVfModulesByVf(String arg0) {
- return null;
- }
-
- @Override
- public String getTypeOfNodeTemplate(NodeTemplate arg0) {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getServiceVlList() {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getServiceVfList() {
- return null;
- }
-
- @Override
- public String getServiceSubstitutionMappingsTypeName() {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getServiceNodeTemplatesByType(String arg0) {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getServiceNodeTemplates() {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getServiceNodeTemplateBySdcType(SdcTypes arg0) {
- return null;
- }
-
- @Override
- public Map<String, Object> getServiceMetadataProperties() {
- return null;
- }
-
- @Override
- public Metadata getServiceMetadata() {
- return null;
- }
-
- @Override
- public List<Input> getServiceInputs() {
- return null;
- }
-
- @Override
- public Object getServiceInputLeafValueOfDefaultAsObject(String arg0) {
- return null;
- }
-
- @Override
- public String getServiceInputLeafValueOfDefault(String arg0) {
- return null;
- }
-
- @Override
- public String getNodeTemplatePropertyLeafValue(NodeTemplate arg0, String arg1) {
- return null;
- }
-
- @Override
- public Object getNodeTemplatePropertyAsObject(NodeTemplate arg0, String arg1) {
- return null;
- }
-
- @Override
- public List<Pair<NodeTemplate, NodeTemplate>> getNodeTemplatePairsByReqName(List<NodeTemplate> arg0,
- List<NodeTemplate> arg1, String arg2) {
- return null;
- }
-
- @Override
- public String getNodeTemplateCustomizationUuid(NodeTemplate arg0) {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getNodeTemplateChildren(NodeTemplate arg0) {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getNodeTemplateBySdcType(NodeTemplate arg0, SdcTypes arg1) {
- return null;
- }
-
- @Override
- public String getMetadataPropertyValue(Metadata arg0, String arg1) {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getMembersOfVfModule(NodeTemplate arg0, Group arg1) {
- return null;
- }
-
- @Override
- public String getGroupPropertyLeafValue(Group arg0, String arg1) {
- return null;
- }
-
- @Override
- public Object getGroupPropertyAsObject(Group arg0, String arg1) {
- return null;
- }
-
- @Override
- public Map<String, Map<String, Object>> getCpPropertiesFromVfcAsObject(NodeTemplate arg0) {
- return null;
- }
-
- @Override
- public Map<String, Map<String, Object>> getCpPropertiesFromVfc(NodeTemplate arg0) {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getCpListByVf(String arg0) {
- return null;
- }
-
- @Override
- public String getConformanceLevel() {
- return null;
- }
-
- @Override
- public List<NodeTemplate> getAllottedResources() {
- return null;
- }
-
- @Override
- public Map<String, String> filterNodeTemplatePropertiesByValue(NodeTemplate arg0, FilterType arg1,
- String arg2) {
- return null;
- }
-
- @Override
- public CapabilityAssignments getCapabilitiesOf(NodeTemplate arg0) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String getCapabilityPropertyLeafValue(CapabilityAssignment arg0, String arg1) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Metadata getNodeTemplateMetadata(NodeTemplate arg0) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public RequirementAssignments getRequirementsOf(NodeTemplate arg0) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Map<String, String> getServiceMetadataAllProperties() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public NodeTemplate getServiceNodeTemplateByNodeName(String arg0) {
- // TODO Auto-generated method stub
- return null;
- }
- });
- // trs.setServiceMetadata(new Metadata(new HashMap<>()));
- trs.setServiceToResourceCustomization(new ServiceToResourceCustomization());
- trs.setServiceVersion("1.0");
- trs.setToscaArtifact(new IArtifactInfo() {
-
- @Override
- public List<IArtifactInfo> getRelatedArtifacts() {
- return null;
- }
-
- @Override
- public IArtifactInfo getGeneratedArtifact() {
- return null;
- }
-
- @Override
- public String getArtifactVersion() {
- return null;
- }
-
- @Override
- public String getArtifactUUID() {
- return null;
- }
-
- @Override
- public String getArtifactURL() {
- return null;
- }
-
- @Override
- public String getArtifactType() {
- return null;
- }
-
- @Override
- public Integer getArtifactTimeout() {
- return null;
- }
-
- @Override
- public String getArtifactName() {
- return null;
- }
-
- @Override
- public String getArtifactDescription() {
- return null;
- }
-
- @Override
- public String getArtifactChecksum() {
- return null;
- }
- });
- trs.setVfTypes(alnt);
- trs.setVnfAlreadyInstalled(true);
- trs.setVolHeatEnvTemplateUUID("volHeatEnvTemplateUUID");
- trs.isVnfAlreadyInstalled();
-
- try{
- trs.updateResourceStructure(artifactInfo1);
-
- }catch(Exception e){}
-
- ToscaResourceInstaller tri = new ToscaResourceInstaller();
-
- try {
- tri.installTheResource(trs, vrs);
- } catch (ArtifactInstallerException e) {
- }
- */
- }
-}
diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/VfResourceInstallerTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/VfResourceInstallerTest.java deleted file mode 100644 index 82c2e82948..0000000000 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/VfResourceInstallerTest.java +++ /dev/null @@ -1,280 +0,0 @@ -/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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.openecomp.mso.asdc.installer.heat.tests;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.codec.binary.Base64;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.openecomp.mso.asdc.client.ASDCConfiguration;
-import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException;
-import org.openecomp.mso.asdc.client.ASDCControllerTest;
-import org.openecomp.mso.asdc.installer.VfResourceStructure;
-import org.openecomp.mso.asdc.installer.heat.VfResourceInstaller;
-import org.openecomp.mso.db.catalog.CatalogDatabase;
-import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization;
-import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization;
-import org.openecomp.mso.db.catalog.beans.Service;
-import org.openecomp.mso.db.catalog.beans.ServiceToAllottedResources;
-import org.openecomp.mso.db.catalog.beans.ServiceToNetworks;
-import org.openecomp.mso.db.catalog.beans.VnfResource;
-import org.openecomp.mso.properties.MsoJavaProperties;
-import org.openecomp.mso.properties.MsoPropertiesException;
-import org.openecomp.mso.properties.MsoPropertiesFactory;
-import org.onap.sdc.api.IDistributionClient;
-import org.onap.sdc.api.notification.IArtifactInfo;
-import org.onap.sdc.api.notification.INotificationData;
-import org.onap.sdc.api.notification.IResourceInstance;
-import org.onap.sdc.api.results.IDistributionClientDownloadResult;
-import org.onap.sdc.api.results.IDistributionClientResult;
-import org.onap.sdc.utils.DistributionActionResultEnum;
-
-import mockit.Mock;
-import mockit.MockUp;
-
-public class VfResourceInstallerTest {
- private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory();
-
- private static String heatExample;
- private static String heatExampleMD5HashBase64;
-
- private static INotificationData iNotif;
-
- private static IDistributionClientDownloadResult downloadResult;
- private static IDistributionClientDownloadResult downloadCorruptedResult;
-
- private static IDistributionClientResult successfulClientInitResult;
- private static IDistributionClientResult unsuccessfulClientInitResult;
-
- private static IDistributionClient distributionClient;
-
- private static IArtifactInfo artifactInfo1;
-
- private static IResourceInstance resource1;
-
- private static VfResourceStructure vrs;
-
- public static final String ASDC_PROP = MsoJavaProperties.class.getClassLoader().getResource("mso.json").toString()
- .substring(5);
- public static final String ASDC_PROP2 = MsoJavaProperties.class.getClassLoader().getResource("mso2.json").toString()
- .substring(5);
- public static final String ASDC_PROP3 = MsoJavaProperties.class.getClassLoader().getResource("mso3.json").toString()
- .substring(5);
- public static final String ASDC_PROP_BAD = MsoJavaProperties.class.getClassLoader().getResource("mso-bad.json")
- .toString().substring(5);
- public static final String ASDC_PROP_WITH_NULL = MsoJavaProperties.class.getClassLoader()
- .getResource("mso-with-NULL.json").toString().substring(5);
-
- @BeforeClass
- public static final void prepareMockNotification() throws MsoPropertiesException, IOException, URISyntaxException,
- NoSuchAlgorithmException, ArtifactInstallerException {
-
- heatExample = new String(Files.readAllBytes(Paths.get(
- ASDCControllerTest.class.getClassLoader().getResource("resource-examples/autoscaling.yaml").toURI())));
- MessageDigest md = MessageDigest.getInstance("MD5");
- byte[] md5Hash = md.digest(heatExample.getBytes());
- heatExampleMD5HashBase64 = Base64.encodeBase64String(md5Hash);
-
- iNotif = Mockito.mock(INotificationData.class);
-
- // Create fake ArtifactInfo
- artifactInfo1 = Mockito.mock(IArtifactInfo.class);
- Mockito.when(artifactInfo1.getArtifactChecksum()).thenReturn(VfResourceInstallerTest.heatExampleMD5HashBase64);
-
- Mockito.when(artifactInfo1.getArtifactName()).thenReturn("artifact1");
- Mockito.when(artifactInfo1.getArtifactType()).thenReturn(ASDCConfiguration.HEAT);
- Mockito.when(artifactInfo1.getArtifactURL())
- .thenReturn("https://localhost:8080/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml");
- Mockito.when(artifactInfo1.getArtifactUUID()).thenReturn("UUID1");
- Mockito.when(artifactInfo1.getArtifactDescription()).thenReturn("testos artifact1");
-
- distributionClient = Mockito.mock(IDistributionClient.class);
-
- // Now provision the NotificationData mock
- List<IArtifactInfo> listArtifact = new ArrayList<>();
- listArtifact.add(artifactInfo1);
-
- // Create fake resource Instance
- resource1 = Mockito.mock(IResourceInstance.class);
-// Mockito.when(resource1.getResourceType()).thenReturn("VF");
- Mockito.when(resource1.getResourceName()).thenReturn("resourceName");
- Mockito.when(resource1.getArtifacts()).thenReturn(listArtifact);
-
- List<IResourceInstance> resources = new ArrayList<>();
- resources.add(resource1);
-
- Mockito.when(iNotif.getResources()).thenReturn(resources);
- Mockito.when(iNotif.getDistributionID()).thenReturn("distributionID1");
- Mockito.when(iNotif.getServiceName()).thenReturn("serviceName1");
- Mockito.when(iNotif.getServiceUUID()).thenReturn("serviceNameUUID1");
- Mockito.when(iNotif.getServiceVersion()).thenReturn("1.0");
-
- downloadResult = Mockito.mock(IDistributionClientDownloadResult.class);
- Mockito.when(downloadResult.getArtifactPayload()).thenReturn(heatExample.getBytes());
- Mockito.when(downloadResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS);
- Mockito.when(downloadResult.getDistributionMessageResult()).thenReturn("Success");
-
- downloadCorruptedResult = Mockito.mock(IDistributionClientDownloadResult.class);
- Mockito.when(downloadCorruptedResult.getArtifactPayload()).thenReturn((heatExample + "badone").getBytes());
- Mockito.when(downloadCorruptedResult.getDistributionActionResult())
- .thenReturn(DistributionActionResultEnum.SUCCESS);
- Mockito.when(downloadCorruptedResult.getDistributionMessageResult()).thenReturn("Success");
-
- vrs = new VfResourceStructure(iNotif, resource1);
- try {
- vrs.addArtifactToStructure(distributionClient, artifactInfo1, downloadResult);
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- try {
- vrs.createVfModuleStructures();
- } catch (ArtifactInstallerException e) {
- e.printStackTrace();
- }
- vrs.getNotification();
- vrs.getArtifactsMapByUUID();
- vrs.getCatalogNetworkResourceCustomization();
- vrs.getCatalogResourceCustomization();
- vrs.getCatalogService();
- vrs.getCatalogServiceToAllottedResources();
- vrs.getCatalogServiceToNetworks();
- vrs.getCatalogVnfResource();
- vrs.getResourceInstance();
- vrs.getVfModulesStructureList();
- vrs.getVfModuleStructure();
- vrs.setCatalogNetworkResourceCustomization(new NetworkResourceCustomization());
- vrs.setCatalogResourceCustomization(new AllottedResourceCustomization());
- vrs.setCatalogService(new Service());
- vrs.setCatalogServiceToAllottedResources(new ServiceToAllottedResources());
- vrs.setCatalogServiceToNetworks(new ServiceToNetworks());
- vrs.setCatalogVnfResource(new VnfResource());
- vrs.setSuccessfulDeployment();
-
- AllottedResourceCustomization arc= new AllottedResourceCustomization();
- arc.setModelCustomizationUuid("modelCustomizationUuid");
- List<AllottedResourceCustomization> allottedResources = new ArrayList<>();
- allottedResources.add(arc);
-
- NetworkResourceCustomization nrc = new NetworkResourceCustomization();
- nrc.setModelCustomizationUuid("modelCustomizationUuid");
- List<NetworkResourceCustomization> networkResources = new ArrayList<>();
- networkResources.add(nrc);
-
- new MockUp<CatalogDatabase>() {
- @Mock
- public List<AllottedResourceCustomization> getAllAllottedResourcesByServiceModelUuid(String serviceModelUuid) {
- return allottedResources;
- }
- };
- new MockUp<CatalogDatabase>() {
- @Mock
- public List<NetworkResourceCustomization> getAllNetworksByServiceModelUuid(String serviceModelUuid) {
- return networkResources;
- }
- };
-
- // Mock now the ASDC distribution client behavior
- successfulClientInitResult = Mockito.mock(IDistributionClientResult.class);
- Mockito.when(successfulClientInitResult.getDistributionActionResult())
- .thenReturn(DistributionActionResultEnum.SUCCESS);
-
- unsuccessfulClientInitResult = Mockito.mock(IDistributionClientResult.class);
- Mockito.when(unsuccessfulClientInitResult.getDistributionActionResult())
- .thenReturn(DistributionActionResultEnum.GENERAL_ERROR);
-
- }
-
- @Before
- public final void initBeforeEachTest() throws MsoPropertiesException {
- // load the config
- msoPropertiesFactory.removeAllMsoProperties();
- msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP);
- }
-
- @AfterClass
- public static final void kill() throws MsoPropertiesException {
-
- msoPropertiesFactory.removeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC);
-
- }
-
- @Test
- public void isResourceAlreadyDeployedAllotedResourceTest() {
-
- Mockito.when(resource1.getResourceType()).thenReturn("VF");
- Mockito.when(resource1.getCategory()).thenReturn("Allotted Resource");
- VfResourceInstaller vfri = new VfResourceInstaller();
-
- try {
- vfri.isResourceAlreadyDeployed(vrs);
- } catch (ArtifactInstallerException e) {
- }
-
- }
-
- @Test
- public void isResourceAlreadyDeployedTest() {
-
- Mockito.when(resource1.getResourceType()).thenReturn("VF");
- Mockito.when(resource1.getCategory()).thenReturn("Not Allotted Resource");
- VfResourceInstaller vfri = new VfResourceInstaller();
-
- try {
- vfri.isResourceAlreadyDeployed(vrs);
- } catch (ArtifactInstallerException e) {
- }
-
- }
- @Test
- public void isResourceAlreadyDeployedDuplicateNtwrkTest() {
-
- Mockito.when(resource1.getResourceType()).thenReturn("VL");
- Mockito.when(resource1.getCategory()).thenReturn("Not Allotted Resource");
- VfResourceInstaller vfri = new VfResourceInstaller();
-
- try {
- vfri.isResourceAlreadyDeployed(vrs);
- } catch (ArtifactInstallerException e) {
- }
-
- }
-
- @Test(expected=Exception.class)
- public void installTheResourceTest() {
- VfResourceInstaller vfri = new VfResourceInstaller();
- try {
- vfri.installTheResource(vrs);
- } catch (ArtifactInstallerException e) {
- }
- }
-}
diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/tenantIsolation/WatchdogDistributionTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/tenantIsolation/WatchdogDistributionTest.java deleted file mode 100644 index 2e5c4c8152..0000000000 --- a/asdc-controller/src/test/java/org/openecomp/mso/asdc/tenantIsolation/WatchdogDistributionTest.java +++ /dev/null @@ -1,259 +0,0 @@ -/*- - * ============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.openecomp.mso.asdc.tenantIsolation; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.openecomp.mso.asdc.client.ASDCConfiguration; -import org.openecomp.mso.client.aai.AAIResourcesClient; -import org.openecomp.mso.client.aai.entities.uri.AAIResourceUri; -import org.openecomp.mso.db.catalog.CatalogDatabase; -import org.openecomp.mso.db.catalog.beans.Service; -import org.openecomp.mso.properties.MsoJavaProperties; -import org.openecomp.mso.properties.MsoPropertiesException; -import org.openecomp.mso.properties.MsoPropertiesFactory; -import org.openecomp.mso.requestsdb.WatchdogComponentDistributionStatus; -import org.openecomp.mso.requestsdb.WatchdogComponentDistributionStatusDb; -import org.openecomp.mso.requestsdb.WatchdogDistributionStatusDb; -import org.openecomp.mso.requestsdb.WatchdogServiceModVerIdLookupDb; - -public class WatchdogDistributionTest { - - public static final String ASDC_PROP = MsoJavaProperties.class.getClassLoader().getResource("mso.asdc.json").toString().substring(5); - - private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory(); - - @Before - public final void initBeforeEachTest() throws MsoPropertiesException { - // load the config - msoPropertiesFactory.removeAllMsoProperties(); - msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); - } - - @AfterClass - public static final void kill () throws MsoPropertiesException { - - msoPropertiesFactory.removeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC); - } - - @Test - @Ignore // 1802 merge - public void testGetOverallDistributionStatusSuccess() { - WatchdogDistribution distribution = new WatchdogDistribution(); - WatchdogDistributionStatusDb watchdogDisdb = mock(WatchdogDistributionStatusDb.class); - WatchdogComponentDistributionStatusDb watchdogComp = mock(WatchdogComponentDistributionStatusDb.class); - - distribution.setWatchdogDistDb(watchdogDisdb); - distribution.setWatchdogCompDistDb(watchdogComp); - try { - WatchdogComponentDistributionStatus watchDogDisStatus1 = new WatchdogComponentDistributionStatus(); - watchDogDisStatus1.setComponentDistributionStatus("SUCCESS"); - watchDogDisStatus1.setComponentName("AAI"); - - WatchdogComponentDistributionStatus watchDogDisStatus2 = new WatchdogComponentDistributionStatus(); - watchDogDisStatus2.setComponentDistributionStatus("SUCCESS"); - watchDogDisStatus2.setComponentName("APP"); - - List<WatchdogComponentDistributionStatus> results = new ArrayList<>(); - results.add(watchDogDisStatus1); - results.add(watchDogDisStatus2); - - when(watchdogDisdb.getWatchdogDistributionIdStatus(any(String.class))).thenReturn(null); - when(watchdogComp.getWatchdogComponentDistributionStatus(any(String.class))).thenReturn(results); - doNothing().when(watchdogDisdb).updateWatchdogDistributionIdStatus(any(String.class), any(String.class)); - - String result = distribution.getOverallDistributionStatus("ff3514e3-5a33-55df-13ab-12abad84e7fe"); - - assertEquals("SUCCESS", result); - } catch (Exception e) { - fail("Unexpected result"); - } - } - - @Test - @Ignore // 1802 merge - public void testGetOverallDistributionStatusFailure() { - WatchdogDistribution distribution = new WatchdogDistribution(); - WatchdogDistributionStatusDb watchdogDisdb = mock(WatchdogDistributionStatusDb.class); - WatchdogComponentDistributionStatusDb watchdogComp = mock(WatchdogComponentDistributionStatusDb.class); - - distribution.setWatchdogDistDb(watchdogDisdb); - distribution.setWatchdogCompDistDb(watchdogComp); - - try { - WatchdogComponentDistributionStatus watchDogDisStatus1 = new WatchdogComponentDistributionStatus(); - watchDogDisStatus1.setComponentDistributionStatus("SUCCESS"); - watchDogDisStatus1.setComponentName("AAI"); - - WatchdogComponentDistributionStatus watchDogDisStatus2 = new WatchdogComponentDistributionStatus(); - watchDogDisStatus2.setComponentDistributionStatus("FAILURE"); - watchDogDisStatus2.setComponentName("APP"); - - List<WatchdogComponentDistributionStatus> results = new ArrayList<>(); - results.add(watchDogDisStatus1); - results.add(watchDogDisStatus2); - - when(watchdogDisdb.getWatchdogDistributionIdStatus(any(String.class))).thenReturn(null); - when(watchdogComp.getWatchdogComponentDistributionStatus(any(String.class))).thenReturn(results); - doNothing().when(watchdogDisdb).updateWatchdogDistributionIdStatus(any(String.class), any(String.class)); - - String result = distribution.getOverallDistributionStatus("ff3514e3-5a33-55df-13ab-12abad84e7fe"); - - assertEquals("FAILURE", result); - } catch (Exception e) { - fail("Unexpected result"); - } - } - - @Test - public void testGetOverallDistributionStatusException() { - WatchdogDistribution distribution = new WatchdogDistribution(); - WatchdogDistributionStatusDb watchdogDisdb = mock(WatchdogDistributionStatusDb.class); - WatchdogComponentDistributionStatusDb watchdogComp = mock(WatchdogComponentDistributionStatusDb.class); - - distribution.setWatchdogDistDb(watchdogDisdb); - distribution.setWatchdogCompDistDb(watchdogComp); - try { - WatchdogComponentDistributionStatus watchDogDisStatus1 = new WatchdogComponentDistributionStatus(); - watchDogDisStatus1.setComponentDistributionStatus("SUCCESS"); - watchDogDisStatus1.setComponentName("AAI"); - - WatchdogComponentDistributionStatus watchDogDisStatus2 = new WatchdogComponentDistributionStatus(); - watchDogDisStatus2.setComponentDistributionStatus("TESTING"); - watchDogDisStatus2.setComponentName("APP"); - - List<WatchdogComponentDistributionStatus> results = new ArrayList<>(); - results.add(watchDogDisStatus1); - results.add(watchDogDisStatus2); - - when(watchdogDisdb.getWatchdogDistributionIdStatus(any(String.class))).thenReturn(null); - when(watchdogComp.getWatchdogComponentDistributionStatus(any(String.class))).thenReturn(results); - doNothing().when(watchdogDisdb).updateWatchdogDistributionIdStatus(any(String.class), any(String.class)); - - distribution.getOverallDistributionStatus("ff3514e3-5a33-55df-13ab-12abad84e7fe"); - - } catch (Exception e) { - assertTrue(e.getMessage().contains("Invalid Component distribution status:")); - } - } - - @Test - @Ignore // 1802 merge - public void testGetOverallDistributionStatusIncomplete() { - WatchdogDistribution distribution = new WatchdogDistribution(); - WatchdogDistributionStatusDb watchdogDisdb = mock(WatchdogDistributionStatusDb.class); - WatchdogComponentDistributionStatusDb watchdogComp = mock(WatchdogComponentDistributionStatusDb.class); - - distribution.setWatchdogDistDb(watchdogDisdb); - distribution.setWatchdogCompDistDb(watchdogComp); - try { - WatchdogComponentDistributionStatus watchDogDisStatus1 = new WatchdogComponentDistributionStatus(); - watchDogDisStatus1.setComponentDistributionStatus("SUCCESS"); - watchDogDisStatus1.setComponentName("AAI"); - - List<WatchdogComponentDistributionStatus> results = new ArrayList<>(); - results.add(watchDogDisStatus1); - - when(watchdogDisdb.getWatchdogDistributionIdStatus(any(String.class))).thenReturn(null); - when(watchdogComp.getWatchdogComponentDistributionStatus(any(String.class))).thenReturn(results); - - String result = distribution.getOverallDistributionStatus("ff3514e3-5a33-55df-13ab-12abad84e7fe"); - - assertEquals("INCOMPLETE", result); - } catch (Exception e) { - fail("Unexpected result"); - } - } - - @Test - public void testGetOverallDistributionStatusTimeout() { - WatchdogDistribution distribution = new WatchdogDistribution(); - WatchdogDistributionStatusDb watchdogDisdb = mock(WatchdogDistributionStatusDb.class); - - distribution.setWatchdogDistDb(watchdogDisdb); - try { - when(watchdogDisdb.getWatchdogDistributionIdStatus(any(String.class))).thenReturn("timeout"); - - String result = distribution.getOverallDistributionStatus("ff3514e3-5a33-55df-13ab-12abad84e7fe"); - - assertEquals("TIMEOUT", result); - } catch (Exception e) { - fail("Unexpected result"); - } - } - - @Test - @Ignore // 1802 merge - public void testExecutePatchAAI() throws Exception { - WatchdogDistribution distribution = new WatchdogDistribution(); - WatchdogServiceModVerIdLookupDb serviceLookupDb = mock(WatchdogServiceModVerIdLookupDb.class); - CatalogDatabase catalogDb = mock(CatalogDatabase.class); - AAIResourcesClient aaiClient = mock(AAIResourcesClient.class); - - Service service = new Service(); - service.setModelInvariantUUID("modelInvariantUUID"); - - when(serviceLookupDb.getWatchdogServiceModVerId(any(String.class))).thenReturn("ff3514e3-5a33-55df"); - when(catalogDb.getServiceByModelUUID(any(String.class))).thenReturn(service); - doNothing().when(aaiClient).update(any(AAIResourceUri.class), any(Object.class)); - - distribution.setAaiClient(aaiClient); - distribution.setCatalogDb(catalogDb); - distribution.setWatchdogSerlookupDb(serviceLookupDb); - distribution.executePatchAAI("ff3514e3-5a33-55df-13ab-12abad84e7fe", "model-id", "SUCCESS"); - - verify(aaiClient, times(1)).update(any(AAIResourceUri.class), any(Object.class)); - } - - @Test - @Ignore // 1802 merge - public void testExecutePatchAAIException() throws Exception { - WatchdogDistribution distribution = new WatchdogDistribution(); - CatalogDatabase catalogDb = mock(CatalogDatabase.class); - WatchdogServiceModVerIdLookupDb serviceLookupDb = mock(WatchdogServiceModVerIdLookupDb.class); - - when(serviceLookupDb.getWatchdogServiceModVerId(any(String.class))).thenReturn("ff3514e3-5a33-55df"); - when(catalogDb.getServiceByModelUUID(any(String.class))).thenReturn(null); - - try { - distribution.setCatalogDb(catalogDb); - distribution.setWatchdogSerlookupDb(serviceLookupDb); - distribution.executePatchAAI("ff3514e3-5a33-55df-13ab-12abad84e7fe", "model-id", "SUCCESS"); - } catch(Exception e) { - assertTrue(e.getMessage().contains("No Service found with serviceModelVersionId:")); - } - } -} diff --git a/asdc-controller/src/test/resources/ASDC/.gitignore b/asdc-controller/src/test/resources/ASDC/.gitignore new file mode 100644 index 0000000000..e54786bc77 --- /dev/null +++ b/asdc-controller/src/test/resources/ASDC/.gitignore @@ -0,0 +1 @@ +/*.csar diff --git a/asdc-controller/src/test/resources/application-test.yaml b/asdc-controller/src/test/resources/application-test.yaml new file mode 100644 index 0000000000..99ca630695 --- /dev/null +++ b/asdc-controller/src/test/resources/application-test.yaml @@ -0,0 +1,88 @@ +# will be used as entry in DB to say SITE OFF/ON for healthcheck + +server-port: 8080 +ssl-enable: false + + + +spring: + datasource: + url: jdbc:mariadb://localhost:3307/catalogdb + username: root + password: password + driver-class-name: org.mariadb.jdbc.Driver + initialize: true + initialization-mode: never + jpa: + generate-ddl: false + show-sql: false + hibernate: + ddl-auto: none + naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy + enable-lazy-load-no-trans: true + database-platform: org.hibernate.dialect.MySQL5InnoDBDialect + security: + usercredentials: + - + username: test + password: '$2a$12$Zi3AuYcZoZO/gBQyUtST2.F5N6HqcTtaNci2Et.ufsQhski56srIu' + role: Asdc-Client + +mariaDB4j: + dataDir: + port: 3307 + databaseName: catalogdb + databaseName2: requestdb + +request: + datasource: + url: jdbc:mariadb://localhost:3307/requestdb + username: root + password: password + driver-class-name: org.mariadb.jdbc.Driver + + +#Actuator +management: + endpoints: + enabled-by-default: false + endpoint: + info: + enabled: true + +mso: + logPath: logs + catalog: + db: + spring: + endpoint: "http://localhost:" + db: + auth: Basic YnBlbDptc28tZGItMTUwNyE= + site-name: siteName + asdc-connections: + asdc-controller1: + user: msopreist + consumerGroup: msoasdc-id-local + consumerId: msoasdc-id-local + environmentName: Pre-IST + asdcAddress: localhost:8443 + password: 658D6E9E0C087547284339181615C358 + pollingInterval: 30 + pollingTimeout: 30 + relevantArtifactTypes: HEAT,HEAT_ENV,HEAT_VOL + activateServerTLSAuth: false + keyStorePassword: + keyStorePath: + watchDogTimeout: 1 + isFilterInEmptyResources: true + messageBusAddress: localhost,localhost + asdc: + config: + key: 566B754875657232314F5548556D3665 + components: + count: 3, + componentNames: SO,AAI,SDNC + scheduling: + enabled: false + aai: + endpoint: http://localhost:${wiremock.server.port} diff --git a/asdc-controller/src/test/resources/data.sql b/asdc-controller/src/test/resources/data.sql new file mode 100644 index 0000000000..681ee3bda7 --- /dev/null +++ b/asdc-controller/src/test/resources/data.sql @@ -0,0 +1,64 @@ +use catalogdb; + +insert into heat_template(artifact_uuid, name, version, description, body, timeout_minutes, artifact_checksum, creation_timestamp) values ('ff874603-4222-11e7-9252-005056850d2e', 'module_mns_zrdm3frwl01exn_01_rgvm_1.yml', '1', 'created from csar', 'heat_template_version: 2013-05-23 description: heat template that creates TEST VNF parameters: TEST_server_name: type: string label: TEST server name description: TEST server name TEST_image_name: type: string label: image name description: TEST image name TEST_flavor_name: type: string label: TEST flavor name description: flavor name of TEST instance TEST_Role_net_name: type: string label: TEST network name description: TEST network name TEST_vnf_id: type: string label: TEST VNF Id description: TEST VNF Id resources:TEST: type: OS::Nova::Server properties: name: { get_param: TEST_server_name } image: { get_param: TEST_image_name } flavor: { get_param: TEST_flavor_name } networks: - port: { get_resource: TEST_port_0} metadata: vnf_id: {get_param: TEST_vnf_id} TEST_port_0: type: OS::Neutron::Port properties: network: { get_param: TEST_Role_net_name }', '60', 'MANUAL RECORD', '2017-01-21 23:26:56'); + +insert into temp_network_heat_template_lookup(network_resource_model_name, heat_template_artifact_uuid, aic_version_min, aic_version_max) values +('CONTRAIL30_GNDIRECT', 'ff874603-4222-11e7-9252-005056850d2e', '3', '3'), +('MSO_Example', 'ff874603-4222-11e7-9252-005056850d2e', '3', '3'), +('ExtVL', 'ff874603-4222-11e7-9252-005056850d2e', '3', '3'), +('AIC30_CONTRAIL_BASIC', 'ff874603-4222-11e7-9252-005056850d2e', '3', '3'), +('CONTRAIL30_BASIC', 'ff874603-4222-11e7-9252-005056850d2e', '3', '3'); + +insert into network_resource(model_uuid, model_name, model_invariant_uuid, description, heat_template_artifact_uuid, neutron_network_type, model_version, tosca_node_type, aic_version_min, aic_version_max, orchestration_mode, creation_timestamp) values +('10b36f65-f4e6-4be6-ae49-9596dc1c47fc', 'CONTRAIL30_GNDIRECT', 'ce4ff476-9641-4e60-b4d5-b4abbec1271d', 'Contrail 30 GNDIRECT NW', 'ff874603-4222-11e7-9252-005056850d2e', 'BASIC', '1.0', '', '3.0', '', 'HEAT', '2017-01-17 20:35:05'); + +insert into network_resource_customization(model_customization_uuid, model_instance_name, network_technology, network_type, network_role, network_scope, creation_timestamp, network_resource_model_uuid) values +('3bdbb104-476c-483e-9f8b-c095b3d308ac', 'CONTRAIL30_GNDIRECT 9', '', '', '', '', '2017-04-19 14:28:32', '10b36f65-f4e6-4be6-ae49-9596dc1c47fc'); + + + +INSERT INTO temp_network_heat_template_lookup(NETWORK_RESOURCE_MODEL_NAME, HEAT_TEMPLATE_ARTIFACT_UUID, AIC_VERSION_MIN, AIC_VERSION_MAX) VALUES +('TENANT_OAM_NETWORK', 'ff874603-4222-11e7-9252-005056850d2e', '3.0', NULL); +INSERT INTO temp_network_heat_template_lookup(NETWORK_RESOURCE_MODEL_NAME, HEAT_TEMPLATE_ARTIFACT_UUID, AIC_VERSION_MIN, AIC_VERSION_MAX) VALUES +('SRIOV_PROVIDER_NETWORK', 'ff874603-4222-11e7-9252-005056850d2e', '3.0', NULL); + + +--------START Request DB INSERTS -------- +insert into requestdb.watchdog_distributionid_status(DISTRIBUTION_ID, DISTRIBUTION_ID_STATUS) values +('watchdogTestStatusSuccess', 'SUCCESS'), +('watchdogTestStatusFailure', 'FAILURE'), +('watchdogTestStatusTimeout', 'TIMEOUT'), +('watchdogTestStatusIncomplete', 'INCOMPLETE'), +('watchdogTestStatusException', 'EXCEPTION'), +('watchdogTestStatusNull', 'NULL'), +('testStatusSuccessTosca', 'SUCCESS'), +('testStatusFailureTosca', 'FAILURE'), +('testStatusTimeoutTosca', 'TIMEOUT'), +('testStatusIncompleteTosca', 'INCOMPLETE'), +('testStatusExceptionTosca', 'EXCEPTION'), +('testStatusNullTosca', 'NULL'); + +--WatchdogDistrubutionTest +insert into requestdb.watchdog_per_component_distribution_status(DISTRIBUTION_ID, COMPONENT_NAME, COMPONENT_DISTRIBUTION_STATUS) values +('watchdogTestStatusSuccess', 'SO', 'COMPONENT_DONE_OK'), +('watchdogTestStatusSuccess', 'AAI', 'COMPONENT_DONE_OK'), +('watchdogTestStatusSuccess', 'SDNC', 'COMPONENT_DONE_OK'), +('watchdogTestStatusFailure', 'SO', 'COMPONENT_DONE_ERROR'), +('watchdogTestStatusFailure', 'AAI', 'COMPONENT_DONE_ERROR'), +('watchdogTestStatusFailure', 'SDNC', 'COMPONENT_DONE_ERROR'), +('watchdogTestStatusException', 'SO', 'COMPONENT_MALFORMED'), +('watchdogTestStatusException', 'AAI', 'COMPONENT_MALFORMED'), +('watchdogTestStatusException', 'SDNC', 'COMPONENT_MALFORMED'), +('testStatusSuccessTosca', 'SO', 'COMPONENT_DONE_OK'), +('testStatusSuccessTosca', 'AAI', 'COMPONENT_DONE_OK'), +('testStatusSuccessTosca', 'SDNC', 'COMPONENT_DONE_OK'), +('testStatusFailureTosca', 'SO', 'COMPONENT_DONE_ERROR'), +('testStatusFailureTosca', 'AAI', 'COMPONENT_DONE_ERROR'), +('testStatusFailureTosca', 'SDNC', 'COMPONENT_DONE_ERROR'), +('testStatusExceptionTosca', 'SO', 'COMPONENT_MALFORMED'), +('testStatusExceptionTosca', 'AAI', 'COMPONENT_MALFORMED'), +('testStatusExceptionTosca', 'SDNC', 'COMPONENT_MALFORMED'); + +insert into requestdb.watchdog_service_mod_ver_id_lookup(DISTRIBUTION_ID, SERVICE_MODEL_VERSION_ID) values +('watchdogTestStatusSuccess', '5df8b6de-2083-11e7-93ae-92361f002671'), +('watchdogTestStatusNull', '00000000-0000-0000-0000-000000000000'); diff --git a/asdc-controller/src/test/resources/logback-test.xml b/asdc-controller/src/test/resources/logback-test.xml index a23395fe1b..d74de50d60 100644 --- a/asdc-controller/src/test/resources/logback-test.xml +++ b/asdc-controller/src/test/resources/logback-test.xml @@ -1,47 +1,39 @@ -<!-- - ============LICENSE_START======================================================= - ECOMP MSO - ================================================================================ - 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========================================================= - --> - -<configuration > - - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> - <encoder> - <pattern>%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}||%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}||%X{Timer}|%msg%n</pattern> - </encoder> - </appender> - - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="STDOUT" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> +<configuration> + + + + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] |%X{RequestId}| %-5level + %logger{1024} - %msg%n + </pattern> + </encoder> + </appender> + + <logger name="com.att.ecomp.audit" level="info" additivity="false"> + <appender-ref ref="STDOUT" /> + </logger> + + <logger name="com.att.eelf.metrics" level="info" additivity="false"> <appender-ref ref="STDOUT" /> - </logger> + </logger> - <logger name="com.att.eelf.error" level="trace" additivity="false"> - <appender-ref ref="STDOUT" /> - </logger> + <logger name="com.att.eelf.error" level="WARN" additivity="false"> + <appender-ref ref="STDOUT" /> + </logger> + + <logger name="org.onap" level="${so.log.level:-DEBUG}" additivity="false"> + <appender-ref ref="STDOUT" /> + </logger> + + + <logger name="ch.vorburger" level="WARN" additivity="false"> + <appender-ref ref="STDOUT" /> + </logger> + + <root level="WARN"> + <appender-ref ref="STDOUT" /> + </root> - <root level="info"> - <appender-ref ref="STDOUT" /> - </root> - -</configuration> +</configuration>
\ No newline at end of file diff --git a/asdc-controller/src/test/resources/mso-with-NULL.json b/asdc-controller/src/test/resources/mso-with-NULL.json index df215e691e..aeb740f31c 100644 --- a/asdc-controller/src/test/resources/mso-with-NULL.json +++ b/asdc-controller/src/test/resources/mso-with-NULL.json @@ -9,9 +9,9 @@ "password": "1c551b8b5ab91fcd5a0907b11c304199", "watchDogTimeout": "300", "messageBusAddress": [ - "uebsb91sfdc.it.att.com", - "uebsb92sfdc.it.att.com", - "uebsb93sfdc.it.att.com" + "localhost", + "localhost", + "localhost" ], "pollingInterval":10, "pollingTimeout":30 diff --git a/asdc-controller/src/test/resources/mso.asdc.clients.properties b/asdc-controller/src/test/resources/mso.asdc.clients.properties index e434dca366..05c4c0d8da 100644 --- a/asdc-controller/src/test/resources/mso.asdc.clients.properties +++ b/asdc-controller/src/test/resources/mso.asdc.clients.properties @@ -1,3 +1,3 @@ # This is a chef generated properties file! Manual updates will be overridden next chef-client run, ensure desired changes are in mso-config chef cookbook or chef env file. # tenant isolation -aai.endpoint=http://localhost:28090 +aai.endpoint=http://localhost:8089 diff --git a/asdc-controller/src/test/resources/mso.asdc.json b/asdc-controller/src/test/resources/mso.asdc.json index cbc18e8f31..2112f8e890 100644 --- a/asdc-controller/src/test/resources/mso.asdc.json +++ b/asdc-controller/src/test/resources/mso.asdc.json @@ -1,5 +1,5 @@ -
-{
- "components.count": 2
-}
-
+ +{ + "components.count": 2 +} + diff --git a/asdc-controller/src/test/resources/mso.json b/asdc-controller/src/test/resources/mso.json index 6b6b98c7da..6d3f7a3233 100644 --- a/asdc-controller/src/test/resources/mso.json +++ b/asdc-controller/src/test/resources/mso.json @@ -9,9 +9,9 @@ "password": "1c551b8b5ab91fcd5a0907b11c304199", "watchDogTimeout": "300", "messageBusAddress": [ - "uebsb91sfdc.it.att.com", - "uebsb92sfdc.it.att.com", - "uebsb93sfdc.it.att.com" + "localhost", + "localhost", + "localhost" ], "pollingInterval":10, "pollingTimeout":30 diff --git a/asdc-controller/src/test/resources/mso4-with-TLS.json b/asdc-controller/src/test/resources/mso4-with-TLS.json index 825ad5b42a..e1b32b7d4a 100644 --- a/asdc-controller/src/test/resources/mso4-with-TLS.json +++ b/asdc-controller/src/test/resources/mso4-with-TLS.json @@ -12,9 +12,9 @@ "activateServerTLSAuth": true, "watchDogTimeout": "300", "messageBusAddress": [ - "uebsb91sfdc.it.att.com", - "uebsb92sfdc.it.att.com", - "uebsb93sfdc.it.att.com" + "localhost", + "localhost", + "localhost" ], "keyStorePassword":"1c551b8b5ab91fcd5a0907b11c304199", "keyStorePath": "/test" diff --git a/asdc-controller/src/test/resources/resource-examples/TempNetworkHeat/notification.json b/asdc-controller/src/test/resources/resource-examples/TempNetworkHeat/notification.json new file mode 100644 index 0000000000..68bdd25f67 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/TempNetworkHeat/notification.json @@ -0,0 +1,21 @@ +{ + "distributionID": "e0d3c4b3-bae6-42cd-808c-385bb2ccf6de", + "resources": [], + "serviceArtifacts": [ + { + "artifactChecksum": "MjI4ZmU3MGM1ZWM5MGQ4YjJkZDczMGUzZDMxN2M4NjY=", + "artifactDescription": "TOSCA definition package of the asset", + "artifactName": "service-AdigVpeTenantOamNetworkIst-csar.csar", + "artifactTimeout": "0", + "artifactType": "TOSCA_CSAR", + "artifactURL": "service-AdigVpeTenantOamNetworkIst-csar.csar", + "artifactUUID": "a218128c-4751-49d0-a74b-f502860033e5", + "artifactVersion": "2" + } + ], + "serviceDescription": "ADIG vPE Tenant OAM Network_IST", + "serviceInvariantUUID": "f905cea1-3a41-4233-b2d2-be453751b871", + "serviceName": "ADIG vPE Tenant OAM Network_IST", + "serviceUUID": "0bfd24c7-de9d-4297-8cb5-6f9d4a6c20d8", + "serviceVersion": "2.0" +}
\ No newline at end of file diff --git a/asdc-controller/src/test/resources/resource-examples/TempNetworkHeat/service-AdigVpeTenantOamNetworkIst-csar.csar b/asdc-controller/src/test/resources/resource-examples/TempNetworkHeat/service-AdigVpeTenantOamNetworkIst-csar.csar Binary files differnew file mode 100644 index 0000000000..2828043a91 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/TempNetworkHeat/service-AdigVpeTenantOamNetworkIst-csar.csar diff --git a/asdc-controller/src/test/resources/resource-examples/allottedresource/notif-portm.json b/asdc-controller/src/test/resources/resource-examples/allottedresource/notif-portm.json new file mode 100644 index 0000000000..fd8ac7be02 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/allottedresource/notif-portm.json @@ -0,0 +1,36 @@ +{ + "serviceName": "service1104", + "serviceInvariantUUID": "ebcef23d-2ca3-474f-9381-3a15709538f5", + "serviceUUID": "9825d984-dfb0-4d2a-b5bd-3abcf477c4dc", + "serviceVersion": "1.0", + "serviceArtifacts": + [{ + "artifactName": "service-Service1104-csar.csar", + "artifactType": "TOSCA_CSAR", + "artifactURL": "service-Service1104-csar.csar", + "artifactChecksum": "ZDc1MTcxMzk4ODk4N2U5MzMxOTgwMzYzZTI0MTg5Y2U\u003d", + "artifactDescription": "TOSCA representation of the asset", + "artifactTimeout": 0, + "artifactUUID": "123456-35a8-467f-b440-d0f6226b3516", + "artifactVersion": "5.0" + }], + "resources": + [ + { + "resourceInstanceName": "testALTS 0", + "resourceInvariantUUID": "51c7fb99-642a-4c02-8d8d-e206fc170b6d", + "resourceCustomizationUUID": "364a5635-f63b-45f3-9c3d-14993d996e35", + "resourceName": "resourceName-1", + "resourceType": "VF", + "resourceUUID": "a81db5a3-7c23-4376-8c42-ec610aaea135", + "resourceVersion": "2.0", + "category": "Allotted Resource", + "subcategory": "Common Network Resources", + "artifacts": + [] + } + + ], + "serviceDescription": "sdfsf", + "distributionID": "35120a87-1f82-4276-9735-f6de5a244d65" +}
\ No newline at end of file diff --git a/asdc-controller/src/test/resources/resource-examples/allottedresource/service-Service1104-csar.csar b/asdc-controller/src/test/resources/resource-examples/allottedresource/service-Service1104-csar.csar Binary files differnew file mode 100644 index 0000000000..c8a447644c --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/allottedresource/service-Service1104-csar.csar diff --git a/asdc-controller/src/test/resources/resource-examples/moduleTest/base_TEST.env b/asdc-controller/src/test/resources/resource-examples/moduleTest/base_TEST.env new file mode 100644 index 0000000000..c72f90646e --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/moduleTest/base_TEST.env @@ -0,0 +1,6 @@ +parameters: + TEST_Role_net_name: + TEST_flavor_name: + TEST_image_name: + TEST_server_name: + TEST_vnf_id: diff --git a/asdc-controller/src/test/resources/resource-examples/moduleTest/base_TEST.yaml b/asdc-controller/src/test/resources/resource-examples/moduleTest/base_TEST.yaml new file mode 100644 index 0000000000..84f757ccba --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/moduleTest/base_TEST.yaml @@ -0,0 +1,44 @@ +heat_template_version: 2013-05-23 + +description: heat template that creates TEST VNF + +parameters: + TEST_server_name: + type: string + label: TEST server name + description: TEST server name + TEST_image_name: + type: string + label: image name + description: TEST image name + TEST_flavor_name: + type: string + label: TEST flavor name + description: flavor name of TEST instance + + TEST_Role_net_name: + type: string + label: TEST network name + description: TEST network name + TEST_vnf_id: + type: string + label: TEST VNF Id + description: TEST VNF Id + +resources: + + TEST: + type: OS::Nova::Server + properties: + name: { get_param: TEST_server_name } + image: { get_param: TEST_image_name } + flavor: { get_param: TEST_flavor_name } + networks: + - port: { get_resource: TEST_port_0} + metadata: + vnf_id: {get_param: TEST_vnf_id} + + TEST_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: TEST_Role_net_name } diff --git a/asdc-controller/src/test/resources/resource-examples/moduleTest/notif-structure.json b/asdc-controller/src/test/resources/resource-examples/moduleTest/notif-structure.json new file mode 100644 index 0000000000..b2f11c43eb --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/moduleTest/notif-structure.json @@ -0,0 +1,67 @@ +{ + "serviceName": "testALTS1", + "serviceInvariantUUID": "155006dc-f0b4-4d6d-b217-72c75e819cdb", + "serviceUUID": "3e56620a-1566-4268-8629-58aae07df9e5", + "serviceVersion": "2.0", + "serviceArtifacts": + [{ + "artifactName": "service-Testalts1-csar.csar", + "artifactType": "TOSCA_CSAR", + "artifactURL": "service-Testalts1-csar.csar", + "artifactChecksum": "NTdjNDdiMTU5YjVkNzQxYjNkZWQ2N2M5YTdiYjQ3MGI=", + "artifactDescription": "TOSCA representation of the asset", + "artifactTimeout": 0, + "artifactUUID": "9e2c10dc-a3a6-4799-b0a9-a128fbf7a9b1", + "artifactVersion": "2.0" + }], + "resources": + [ + { + "resourceInstanceName": "testALTS 0", + "resourceInvariantUUID": "51c7fb99-642a-4c02-8d8d-e206fc170b6d", + "resourceCustomizationUUID": "364a5635-f63b-45f3-9c3d-14993d996e35", + "resourceName": "resourceName-1", + "resourceType": "VF", + "resourceUUID": "a81db5a3-7c23-4376-8c42-ec610aaea135", + "resourceVersion": "2.0", + "category": "Network L4+", + "subcategory": "Common Network Resources", + "artifacts": + [ + { + "artifactChecksum": "ZGY5NzliMTI4NDA4NGYyOWIyYTA4N2NmYzZiYWU5MmM=", + "artifactDescription": "Auto-generated VF Modules information artifact", + "artifactName": "testalts0_modules.json", + "artifactType": "VF_MODULES_METADATA", + "artifactURL": "testalts0_modules.json", + "artifactUUID": "68be0190-fb74-408e-81db-d90a5e3aecb5", + "artifactTimeout": 0, + "artifactVersion": "2.0" + }, + { + "artifactChecksum": "MDJlOTUwMDY0YzU3YjRjZTM0ZmZmYTM5NTE5ZThkNDI=", + "artifactDescription": "created from csar", + "artifactName": "base_TEST.yaml", + "artifactTimeout": 120, + "artifactType": "HEAT", + "artifactURL": "base_TEST.yaml", + "artifactUUID": "d7c1d4ca-3fdc-4880-86dc-90ca724fbcd7", + "artifactVersion": "2.0", + "generatedArtifact": "57f6520b-fa65-4544-90de-95c8190c2e6c" + }, + { + "artifactChecksum": "YWQ2MmE0Y2NjNGE4YmJlOTk0YmZhYmIxYTc1YWZkY2M=", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactName": "base_TEST.env", + "artifactTimeout": 0, + "artifactType": "HEAT_ENV", + "artifactURL": "base_TEST.env", + "artifactUUID": "57f6520b-fa65-4544-90de-95c8190c2e6c", + "artifactVersion": "1.0" + } + ] + } + ], + "serviceDescription": "ALTS service", + "distributionID": "03f016c8-7d8e-412b-901d-e96c7c66459b" +}
\ No newline at end of file diff --git a/asdc-controller/src/test/resources/resource-examples/moduleTest/service-Testalts1-csar.csar b/asdc-controller/src/test/resources/resource-examples/moduleTest/service-Testalts1-csar.csar Binary files differnew file mode 100644 index 0000000000..3d29ab8cec --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/moduleTest/service-Testalts1-csar.csar diff --git a/asdc-controller/src/test/resources/resource-examples/moduleTest/testalts0_modules.json b/asdc-controller/src/test/resources/resource-examples/moduleTest/testalts0_modules.json new file mode 100644 index 0000000000..4dfb97dbc8 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/moduleTest/testalts0_modules.json @@ -0,0 +1,25 @@ +[ + { + "vfModuleModelName": "Testalts..base_TEST..module-0", + "vfModuleModelInvariantUUID": "2cec5cc9-9b83-46ff-948e-1c0bd726d1ce", + "vfModuleModelVersion": "2", + "vfModuleModelUUID": "a3253fe9-2877-489d-9a41-dd3f38d4b4c1", + "vfModuleModelCustomizationUUID": "2d1c5862-7555-48d9-8aa9-1a34b5b70f6a", + "isBase": true, + "artifacts": [ + "d7c1d4ca-3fdc-4880-86dc-90ca724fbcd7", + "57f6520b-fa65-4544-90de-95c8190c2e6c" + ], + "properties": { + "min_vf_module_instances": "1", + "vf_module_label": "base_TEST", + "max_vf_module_instances": "1", + "vfc_list": "", + "vf_module_description": "", + "vf_module_type": "Base", + "availability_zone_count": "", + "volume_group": "false", + "initial_count": "1" + } + } +] diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/Notification_MultipleModules.txt b/asdc-controller/src/test/resources/resource-examples/multipleModules/Notification_MultipleModules.txt new file mode 100644 index 0000000000..5b6d9e4eaf --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/Notification_MultipleModules.txt @@ -0,0 +1,302 @@ +DistributionID:a2872f55-8628-4486-8548-7b132c9a47db +ServiceName:Vf zrdm5bpxmc02092017-Service +ServiceVersion:1.0 +ServiceUUID:bad955c3-29b2-4a27-932e-28e942cc6480 +ServiceInvariantUUID:b16a9398-ffa3-4041-b78c-2956b8ad9c7b +ServiceDescription:Demo + + + +Service Artifacts List: +{ +Service Artifacts Info: +ArtifactName:service-VfZrdm5bpxmc02092017Service-csar.csar +ArtifactVersion:1 +ArtifactType:TOSCA_CSAR +ArtifactDescription:TOSCA definition package of the asset +ArtifactTimeout:0 +ArtifactURL:service-VfZrdm5bpxmc02092017Service-csar.csar +ArtifactUUID:396cfd49-0f4b-4fec-9f33-0fd7e90d5a22 +ArtifactChecksum:MWQ3Y2FmMWExNDQyYWI2N2YwNjEwZGUzN2IzMzI3NjE= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} + + + +} + +Resource Instances List: +{ +Resource Instance Info: +ResourceInstanceName:Vf zrdm5bpxmc02092017-VF 0 +ResourceCustomizationUUID:96c23a4a-6887-4b2c-9cce-1e4ea35eaade +ResourceInvariantUUID:23122c9b-dd7f-483f-bf0a-e069303db2f7 +ResourceName:Vf zrdm5bpxmc02092017-VF +ResourceType:VF +ResourceUUID:14ba5d1e-3862-407c-a236-1cbaebccce77 +ResourceVersion:1.0 +Category:Generic +SubCategory:Network Elements +Resource Artifacts List: +{ +Service Artifacts Info: +ArtifactName:pxmc_mmn_volume.env +ArtifactVersion:2 +ArtifactType:HEAT_ENV +ArtifactDescription:Auto-generated HEAT Environment deployment artifact +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_mmn_volume.env +ArtifactUUID:c1ae6284-48d9-4437-a195-b2cf2ba23070 +ArtifactChecksum:NmEyZjc1Y2UwZDMwYjFhNGRlMTMzN2JhNzdiMThjMGU= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} +, +Service Artifacts Info: +ArtifactName:pxmc_base.env +ArtifactVersion:2 +ArtifactType:HEAT_ENV +ArtifactDescription:Auto-generated HEAT Environment deployment artifact +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_base.env +ArtifactUUID:6dd99c31-c52e-4c45-b99b-d223c877a296 +ArtifactChecksum:OGM2MWIzZTA2OTc5YjQwNTM1NGVhODA0YTFkNzM4ZTg= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} + + +, +Service Artifacts Info: +ArtifactName:vfzrdm5bpxmc02092017vf0_modules.json +ArtifactVersion:1 +ArtifactType:VF_MODULES_METADATA +ArtifactDescription:Auto-generated VF Modules information artifact +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/vfzrdm5bpxmc02092017vf0_modules.json +ArtifactUUID:e3b82cd6-485e-4d56-8d2c-17ccf6a59533 +ArtifactChecksum:MjY0NzcxMjJkZGI4YzQ1MDU2NjhkNWYyM2IwNmYzYmU= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} + + +, +Service Artifacts Info: +ArtifactName:pxmc_vmt.yaml +ArtifactVersion:1 +ArtifactType:HEAT +ArtifactDescription:created from csar +ArtifactTimeout:120 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_vmt.yaml +ArtifactUUID:ad12ab80-5419-4346-a5d7-dac2fc15575f +ArtifactChecksum:ODE0YTRiYzc2YzkxOTliZjJhNjc0M2RhMWU4M2VlZmE= +GeneratedArtifact:{Service Artifacts Info: +ArtifactName:pxmc_vmt.env +ArtifactVersion:2 +ArtifactType:HEAT_ENV +ArtifactDescription:Auto-generated HEAT Environment deployment artifact +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_vmt.env +ArtifactUUID:bc1640f1-69f0-4760-8fc3-3318ec2ff129 +ArtifactChecksum:MjdkYzY5ZGU0ZTlkZDlhNzI2ZGVhMjk1ODVhZTg1NTY= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} +} +RelatedArtifacts:{ +Service Artifacts Info: +ArtifactName:user_data_zrdm5bpxmc02vmt001.txt +ArtifactVersion:1 +ArtifactType:HEAT_ARTIFACT +ArtifactDescription:created from csar +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/user_data_zrdm5bpxmc02vmt001.txt +ArtifactUUID:53acdabe-689f-45e5-8578-f1514d3529da +ArtifactChecksum:MzJmZjgyZWYwOTBjMTg5M2ExNWZhMmMwNzc1NWY1YjQ= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} + + + +} + + +, +Service Artifacts Info: +ArtifactName:pxmc_mmn.yaml +ArtifactVersion:1 +ArtifactType:HEAT +ArtifactDescription:created from csar +ArtifactTimeout:120 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_mmn.yaml +ArtifactUUID:b8bca13b-811f-44ab-9d27-45b842c664d8 +ArtifactChecksum:YmNiYTU5YTM4ODVhYTlhODc5NGMwNWZkZjI5MTRmNTE= +GeneratedArtifact:{Service Artifacts Info: +ArtifactName:pxmc_mmn.env +ArtifactVersion:2 +ArtifactType:HEAT_ENV +ArtifactDescription:Auto-generated HEAT Environment deployment artifact +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_mmn.env +ArtifactUUID:e88ce0b9-1496-4d03-ab1d-6d8d79bfc737 +ArtifactChecksum:ZGI1NzI2Y2FmYjFhOTM2ZDYwNzg1YWRhZjBmMTk2OTQ= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} +} +RelatedArtifacts:{ +Service Artifacts Info: +ArtifactName:user_data_zrdm5bpxmc02mmn001.txt +ArtifactVersion:1 +ArtifactType:HEAT_ARTIFACT +ArtifactDescription:created from csar +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/user_data_zrdm5bpxmc02mmn001.txt +ArtifactUUID:5bc62c72-5f7a-40bc-a167-1a4fed9afdef +ArtifactChecksum:OTMxMjk5Mzc1YmIxMzRlYmRlZWJhMjg0MWQ4YTI1NWU= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} + + + +} + + +, +Service Artifacts Info: +ArtifactName:pxmc_mmn.env +ArtifactVersion:2 +ArtifactType:HEAT_ENV +ArtifactDescription:Auto-generated HEAT Environment deployment artifact +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_mmn.env +ArtifactUUID:e88ce0b9-1496-4d03-ab1d-6d8d79bfc737 +ArtifactChecksum:ZGI1NzI2Y2FmYjFhOTM2ZDYwNzg1YWRhZjBmMTk2OTQ= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} + + +, +Service Artifacts Info: +ArtifactName:pxmc_vmt.env +ArtifactVersion:2 +ArtifactType:HEAT_ENV +ArtifactDescription:Auto-generated HEAT Environment deployment artifact +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_vmt.env +ArtifactUUID:bc1640f1-69f0-4760-8fc3-3318ec2ff129 +ArtifactChecksum:MjdkYzY5ZGU0ZTlkZDlhNzI2ZGVhMjk1ODVhZTg1NTY= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} +, +Service Artifacts Info: +ArtifactName:user_data_zrdm5bpxmc02mmn001.txt +ArtifactVersion:1 +ArtifactType:HEAT_ARTIFACT +ArtifactDescription:created from csar +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/user_data_zrdm5bpxmc02mmn001.txt +ArtifactUUID:5bc62c72-5f7a-40bc-a167-1a4fed9afdef +ArtifactChecksum:OTMxMjk5Mzc1YmIxMzRlYmRlZWJhMjg0MWQ4YTI1NWU= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} + + +, +Service Artifacts Info: +ArtifactName:pxmc_base.yaml +ArtifactVersion:1 +ArtifactType:HEAT +ArtifactDescription:created from csar +ArtifactTimeout:120 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_base.yaml +ArtifactUUID:7e7f7356-11bd-4f2f-bbbc-5c10954e3189 +ArtifactChecksum:YThkNGFhZjAwNmM4NzMzODc0YzNhYTUxOTljNGQwNmM= +GeneratedArtifact:{Service Artifacts Info: +ArtifactName:pxmc_base.env +ArtifactVersion:2 +ArtifactType:HEAT_ENV +ArtifactDescription:Auto-generated HEAT Environment deployment artifact +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_base.env +ArtifactUUID:6dd99c31-c52e-4c45-b99b-d223c877a296 +ArtifactChecksum:OGM2MWIzZTA2OTc5YjQwNTM1NGVhODA0YTFkNzM4ZTg= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} + + +} +RelatedArtifacts:{ +} +, +Service Artifacts Info: +ArtifactName:user_data_zrdm5bpxmc02vmt001.txt +ArtifactVersion:1 +ArtifactType:HEAT_ARTIFACT +ArtifactDescription:created from csar +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/user_data_zrdm5bpxmc02vmt001.txt +ArtifactUUID:53acdabe-689f-45e5-8578-f1514d3529da +ArtifactChecksum:MzJmZjgyZWYwOTBjMTg5M2ExNWZhMmMwNzc1NWY1YjQ= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} + + +, +Service Artifacts Info: +ArtifactName:pxmc_mmn_volume.yaml +ArtifactVersion:2 +ArtifactType:HEAT_VOL +ArtifactDescription:created from csar +ArtifactTimeout:120 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_mmn_volume.yaml +ArtifactUUID:2f372a02-df1b-46ca-b81e-822e3f406965 +ArtifactChecksum:MzA5MGY5ODQ0NDY5MDhiMDM3YjFlNGIwNzJkNjFhOTI= +GeneratedArtifact:{Service Artifacts Info: +ArtifactName:pxmc_mmn_volume.env +ArtifactVersion:2 +ArtifactType:HEAT_ENV +ArtifactDescription:Auto-generated HEAT Environment deployment artifact +ArtifactTimeout:0 +ArtifactURL:/sdc/v1/catalog/services/VfZrdm5bpxmc02092017Service/1.0/resourceInstances/vfzrdm5bpxmc02092017vf0/artifacts/pxmc_mmn_volume.env +ArtifactUUID:c1ae6284-48d9-4437-a195-b2cf2ba23070 +ArtifactChecksum:NmEyZjc1Y2UwZDMwYjFhNGRlMTMzN2JhNzdiMThjMGU= +GeneratedArtifact:{NULL +} +RelatedArtifacts:{ +} + + +} +RelatedArtifacts:{ +} + + + +} + + + +} diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/ServiceResponse.json b/asdc-controller/src/test/resources/resource-examples/multipleModules/ServiceResponse.json new file mode 100644 index 0000000000..37b7987f46 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/ServiceResponse.json @@ -0,0 +1,458 @@ +{ + "modelName": "Vf zrdm5bpxmc02092017-Service", + "description": "Demo", + "modelUUID": "bad955c3-29b2-4a27-932e-28e942cc6480", + "modelInvariantUUID": "b16a9398-ffa3-4041-b78c-2956b8ad9c7b", + "serviceType": "", + "serviceRole": "", + "environmentContext": "General_Revenue-Bearing", + "networkCustomizations": [], + "vnfCustomizations": [ + { + "modelCustomizationUuid": "96c23a4a-6887-4b2c-9cce-1e4ea35eaade", + "modelInstanceName": "Vf zrdm5bpxmc02092017-VF 0", + "multiStageDesign": "false", + "vnfResources": { + "modelUuid": "d326f424-2312-4dd6-b7fe-364fadbd1ef5", + "modelInvariantUuid": "23122c9b-dd7f-483f-bf0a-e069303db2f7", + "modelName": "Vf zrdm5bpxmc02092017-VF", + "toscaNodeType": "org.openecomp.resource.vf.VfZrdm5bpxmc02092017Vf", + "description": "Demo", + "orchestrationMode": "HEAT", + "modelVersion": "1.0", + "modelInvariantId": "23122c9b-dd7f-483f-bf0a-e069303db2f7" + }, + "vfModuleCustomizations": [ + { + "modelCustomizationUuid": "074c64d0-7e13-4bcc-8bdb-ea922331102d", + "label": "pxmc_base", + "minInstances": 1, + "maxInstances": 1, + "initialCount": 1, + "heatEnvironment": { + "artifactUuid": "6dd99c31-c52e-4c45-b99b-d223c877a296", + "name": "pxmc_base.env", + "description": "Auto-generated HEAT Environment deployment artifact", + "environment": "parameters:\n vnf_name: \n", + "artifactChecksum": "OGM2MWIzZTA2OTc5YjQwNTM1NGVhODA0YTFkNzM4ZTg=", + "version": "2" + }, + "vfModule": { + "modelUUID": "eb5de6fb-9ecf-4009-b922-fae3a9ae7d46", + "modelInvariantUUID": "f7a867f2-596b-4f4a-a128-421e825a6190", + "modelName": "VfZrdm5bpxmc02092017Vf..pxmc_base..module-0", + "modelVersion": "1", + "isBase": 1, + "moduleHeatTemplate": { + "artifactUuid": "7e7f7356-11bd-4f2f-bbbc-5c10954e3189", + "templateName": "pxmc_base.yaml", + "templateBody": "heat_template_version: 2015-04-30\n\nparameters:\n\n## GLOBAL//Basic Parameters\n vnf_name:\n type: string\n description: Unique name for this VF instance\n# For manual spinups, value must be in the ENV file. Must be removed from ENV before uploading to ASDC\n\nresources:\n\n## MSP RSG//Resource:SecurityGroup\n sec_grp_msp_0:\n type: OS::Neutron::SecurityGroup\n properties:\n description: Security Group for PXMC\n name:\n str_replace:\n template: VF_NAME_sec_grp_msp\n params:\n VF_NAME: { get_param: vnf_name }\n rules:\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"tcp\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"udp\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"132\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"icmp\", \"ethertype\": \"IPv4\"}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"tcp\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"udp\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"132\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"58\", \"ethertype\": \"IPv6\"}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"tcp\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"udp\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"132\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"icmp\", \"ethertype\": \"IPv4\"}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"tcp\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"udp\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"132\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"58\", \"ethertype\": \"IPv6\"}\n\noutputs:\n\n sec_grp_msp_id:\n description: uuid of the security group\n value: {get_resource: sec_grp_msp_0 }\n", + "timeoutMinutes": 120, + "version": "1", + "description": "created from csar", + "artifactChecksum": "YThkNGFhZjAwNmM4NzMzODc0YzNhYTUxOTljNGQwNmM=", + "parameters": [ + { + "heatTemplateArtifactUuid": "7e7f7356-11bd-4f2f-bbbc-5c10954e3189", + "paramName": "vnf_name", + "required": true, + "paramType": "string" + } + ], + "childTemplates": [], + "heatTemplate": "heat_template_version: 2015-04-30\n\nparameters:\n\n## GLOBAL//Basic Parameters\n vnf_name:\n type: string\n description: Unique name for this VF instance\n# For manual spinups, value must be in the ENV file. Must be removed from ENV before uploading to ASDC\n\nresources:\n\n## MSP RSG//Resource:SecurityGroup\n sec_grp_msp_0:\n type: OS::Neutron::SecurityGroup\n properties:\n description: Security Group for PXMC\n name:\n str_replace:\n template: VF_NAME_sec_grp_msp\n params:\n VF_NAME: { get_param: vnf_name }\n rules:\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"tcp\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"udp\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"132\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"icmp\", \"ethertype\": \"IPv4\"}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"tcp\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"udp\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"132\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"egress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"58\", \"ethertype\": \"IPv6\"}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"tcp\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"udp\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"132\", \"ethertype\": \"IPv4\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"0.0.0.0/0\", \"protocol\": \"icmp\", \"ethertype\": \"IPv4\"}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"tcp\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"udp\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"132\", \"ethertype\": \"IPv6\", \"port_range_max\": 65535, \"port_range_min\": 0}\n - {\"direction\": \"ingress\", \"remote_ip_prefix\": \"::/0\", \"protocol\": \"58\", \"ethertype\": \"IPv6\"}\n\noutputs:\n\n sec_grp_msp_id:\n description: uuid of the security group\n value: {get_resource: sec_grp_msp_0 }\n" + }, + "heatFiles": [], + "vnfResources": { + "modelUuid": "d326f424-2312-4dd6-b7fe-364fadbd1ef5", + "modelInvariantUuid": "23122c9b-dd7f-483f-bf0a-e069303db2f7", + "modelName": "Vf zrdm5bpxmc02092017-VF", + "toscaNodeType": "org.openecomp.resource.vf.VfZrdm5bpxmc02092017Vf", + "description": "Demo", + "orchestrationMode": "HEAT", + "modelVersion": "1.0", + "modelInvariantId": "23122c9b-dd7f-483f-bf0a-e069303db2f7" + }, + "modelInvariantUuid": "f7a867f2-596b-4f4a-a128-421e825a6190", + "base": true + } + }, + { + "modelCustomizationUuid": "5336a98e-0966-4e59-b6e6-c8162804a024", + "label": "pxmc_vmt", + "minInstances": 0, + "initialCount": 0, + "heatEnvironment": { + "artifactUuid": "bc1640f1-69f0-4760-8fc3-3318ec2ff129", + "name": "pxmc_vmt.env", + "description": "Auto-generated HEAT Environment deployment artifact", + "environment": "parameters:\n cinder_delete_on_termination_false: \n cinder_delete_on_termination_true: \n oam_protected_net_name: \n sec_grp_msp_id: \n vf_module_id: \n vmt_block_device_names: \n vmt_flavor_name: \n vmt_name_0: \n vmt_oam_protected_ip_0: \n vmt_volume_image_name_0: \n vmt_volume_image_name_1: \n vmt_volume_name_0: \n vmt_volume_name_1: \n vmt_volume_size_0: \n vmt_volume_size_1: \n vnf_id: \n", + "artifactChecksum": "MjdkYzY5ZGU0ZTlkZDlhNzI2ZGVhMjk1ODVhZTg1NTY=", + "version": "2" + }, + "vfModule": { + "modelUUID": "4d4423e2-17e8-455a-b9ae-7e4ab71b9cdc", + "modelInvariantUUID": "1e099992-6222-41a9-acde-5a8abb690775", + "modelName": "VfZrdm5bpxmc02092017Vf..pxmc_vmt..module-1", + "modelVersion": "1", + "isBase": 0, + "moduleHeatTemplate": { + "artifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "templateName": "pxmc_vmt.yaml", + "templateBody": "heat_template_version: 2015-04-30\n\ndescription: HOT creates Nimbus MSP VMT stack under MobiSupport Tenant\n\nparameters:\n vmt_name_0:\n type: string\n label: MSP VMT server names\n description: name of the MSP VMT instances\n# vmt_image_name:\n# type: string\n# label: MSP VMT image name\n# description: MSP VMT image name\n vmt_flavor_name:\n type: string\n label: MSP VMT flavor name\n description: MSP VMT flavor name\n# availability_zone_0:\n# type: string\n# label: MSP VMT availability zones\n# description: MSP VMT availability zones\n sec_grp_msp_id:\n type: string\n label: security group id\n description: the id of security group\n vmt_oam_protected_ip_0:\n type: string\n label: MSP VMT OAM IP Addresses\n description: MSP VMT OAM IP Addresses\n oam_protected_net_name:\n type: string\n label: MSP VMT OAM net name\n description: MSP VMT OAM net name\n vmt_block_device_names:\n type: comma_delimited_list\n label: MSP VMT Block Device Names\n description: MSP VMT Block Device Names\n vmt_volume_name_0:\n type: string\n label: Mobisupport MSP VMT Cinder Volume names\n description: Mobisupport MSP VMT Cinder Volume names\n vmt_volume_name_1:\n type: string\n label: Mobisupport MSP VMT Cinder Volume names\n description: Mobisupport MSP VMT Cinder Volume names\n vmt_volume_size_0:\n type: number\n label: Mobisupport MSP VMT Cinder Volume sizes\n description: Mobisupport MSP VMT Cinder Volume sizes\n vmt_volume_size_1:\n type: number\n label: Mobisupport MSP VMT Cinder Volume sizes\n description: Mobisupport MSP VMT Cinder Volume sizes\n vmt_volume_image_name_0:\n type: string\n label: Mobisupport MSP VMT VDA Cinder Volume image name\n description: Mobisupport MSP VMT VDA Cinder Volume image name\n vmt_volume_image_name_1:\n type: string\n label: Mobisupport MSP VMT VDB Cinder Volume image name\n description: Mobisupport MSP VMT VDB Cinder Volume image name\n cinder_delete_on_termination_true:\n type: boolean\n description: delete cinder volume upon instances termination\n cinder_delete_on_termination_false:\n type: boolean\n description: keep cinder volume upon instances termination\n vnf_id:\n type: string\n label: MSP VMT VNF ID\n description: MSP VMT VNF ID\n vf_module_id:\n type: string\n description: Unique ID for this VF Module instance\n\nresources:\n################ Cinder Volumes ##############################\n vmt_volume_0:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: vmt_volume_name_0}\n size: {get_param: vmt_volume_size_0}\n image: {get_param: vmt_volume_image_name_0}\n\n vmt_volume_1:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: vmt_volume_name_1}\n size: {get_param: vmt_volume_size_1}\n image: {get_param: vmt_volume_image_name_1}\n\n################ Ports ##############################\n vmt_oam_protected_0_port:\n type: OS::Neutron::Port\n properties:\n network: {get_param: oam_protected_net_name}\n fixed_ips: [{\"ip_address\": {get_param: vmt_oam_protected_ip_0}}]\n security_groups: [{get_param: sec_grp_msp_id}]\n replacement_policy: AUTO\n\n################### Servers #########################\n vmt_zrdm5bpxmc02vmt_0:\n type: OS::Nova::Server\n properties:\n name: {get_param: vmt_name_0}\n# image: {get_param: vmt_image_name}\n flavor: {get_param: vmt_flavor_name}\n# availability_zone: {get_param: availability_zone_0}\n block_device_mapping_v2: \n - device_name: {get_param: [vmt_block_device_names, 0]}\n volume_id: {get_resource: vmt_volume_0}\n delete_on_termination: {get_param: cinder_delete_on_termination_true}\n boot_index: 0\n - device_name: {get_param: [vmt_block_device_names, 1]}\n volume_id: {get_resource: vmt_volume_1}\n delete_on_termination: {get_param: cinder_delete_on_termination_true}\n boot_index: -1\n networks:\n - port: {get_resource: vmt_oam_protected_0_port}\n config_drive: \"True\"\n user_data_format: RAW\n user_data:\n get_file: user_data_zrdm5bpxmc02vmt001.txt\n\n metadata:\n vnf_id: {get_param: vnf_id}\n vf_module_id {get_param: vf_module_id}\n \"evacuation_policy\": \"Evacuation\"\n", + "timeoutMinutes": 120, + "version": "1", + "description": "created from csar", + "artifactChecksum": "ODE0YTRiYzc2YzkxOTliZjJhNjc0M2RhMWU4M2VlZmE=", + "parameters": [ + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vmt_name_0", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vf_module_id", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "sec_grp_msp_id", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vmt_volume_name_1", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vmt_volume_name_0", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vmt_block_device_names", + "required": true, + "paramType": "comma_delimited_list" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vmt_flavor_name", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vnf_id", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "oam_protected_net_name", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vmt_volume_image_name_1", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vmt_volume_image_name_0", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vmt_oam_protected_ip_0", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vmt_volume_size_0", + "required": true, + "paramType": "number" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "cinder_delete_on_termination_false", + "required": true, + "paramType": "boolean" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "vmt_volume_size_1", + "required": true, + "paramType": "number" + }, + { + "heatTemplateArtifactUuid": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "paramName": "cinder_delete_on_termination_true", + "required": true, + "paramType": "boolean" + } + ], + "childTemplates": [], + "heatTemplate": "heat_template_version: 2015-04-30\n\ndescription: HOT creates Nimbus MSP VMT stack under MobiSupport Tenant\n\nparameters:\n vmt_name_0:\n type: string\n label: MSP VMT server names\n description: name of the MSP VMT instances\n# vmt_image_name:\n# type: string\n# label: MSP VMT image name\n# description: MSP VMT image name\n vmt_flavor_name:\n type: string\n label: MSP VMT flavor name\n description: MSP VMT flavor name\n# availability_zone_0:\n# type: string\n# label: MSP VMT availability zones\n# description: MSP VMT availability zones\n sec_grp_msp_id:\n type: string\n label: security group id\n description: the id of security group\n vmt_oam_protected_ip_0:\n type: string\n label: MSP VMT OAM IP Addresses\n description: MSP VMT OAM IP Addresses\n oam_protected_net_name:\n type: string\n label: MSP VMT OAM net name\n description: MSP VMT OAM net name\n vmt_block_device_names:\n type: comma_delimited_list\n label: MSP VMT Block Device Names\n description: MSP VMT Block Device Names\n vmt_volume_name_0:\n type: string\n label: Mobisupport MSP VMT Cinder Volume names\n description: Mobisupport MSP VMT Cinder Volume names\n vmt_volume_name_1:\n type: string\n label: Mobisupport MSP VMT Cinder Volume names\n description: Mobisupport MSP VMT Cinder Volume names\n vmt_volume_size_0:\n type: number\n label: Mobisupport MSP VMT Cinder Volume sizes\n description: Mobisupport MSP VMT Cinder Volume sizes\n vmt_volume_size_1:\n type: number\n label: Mobisupport MSP VMT Cinder Volume sizes\n description: Mobisupport MSP VMT Cinder Volume sizes\n vmt_volume_image_name_0:\n type: string\n label: Mobisupport MSP VMT VDA Cinder Volume image name\n description: Mobisupport MSP VMT VDA Cinder Volume image name\n vmt_volume_image_name_1:\n type: string\n label: Mobisupport MSP VMT VDB Cinder Volume image name\n description: Mobisupport MSP VMT VDB Cinder Volume image name\n cinder_delete_on_termination_true:\n type: boolean\n description: delete cinder volume upon instances termination\n cinder_delete_on_termination_false:\n type: boolean\n description: keep cinder volume upon instances termination\n vnf_id:\n type: string\n label: MSP VMT VNF ID\n description: MSP VMT VNF ID\n vf_module_id:\n type: string\n description: Unique ID for this VF Module instance\n\nresources:\n################ Cinder Volumes ##############################\n vmt_volume_0:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: vmt_volume_name_0}\n size: {get_param: vmt_volume_size_0}\n image: {get_param: vmt_volume_image_name_0}\n\n vmt_volume_1:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: vmt_volume_name_1}\n size: {get_param: vmt_volume_size_1}\n image: {get_param: vmt_volume_image_name_1}\n\n################ Ports ##############################\n vmt_oam_protected_0_port:\n type: OS::Neutron::Port\n properties:\n network: {get_param: oam_protected_net_name}\n fixed_ips: [{\"ip_address\": {get_param: vmt_oam_protected_ip_0}}]\n security_groups: [{get_param: sec_grp_msp_id}]\n replacement_policy: AUTO\n\n################### Servers #########################\n vmt_zrdm5bpxmc02vmt_0:\n type: OS::Nova::Server\n properties:\n name: {get_param: vmt_name_0}\n# image: {get_param: vmt_image_name}\n flavor: {get_param: vmt_flavor_name}\n# availability_zone: {get_param: availability_zone_0}\n block_device_mapping_v2: \n - device_name: {get_param: [vmt_block_device_names, 0]}\n volume_id: {get_resource: vmt_volume_0}\n delete_on_termination: {get_param: cinder_delete_on_termination_true}\n boot_index: 0\n - device_name: {get_param: [vmt_block_device_names, 1]}\n volume_id: {get_resource: vmt_volume_1}\n delete_on_termination: {get_param: cinder_delete_on_termination_true}\n boot_index: -1\n networks:\n - port: {get_resource: vmt_oam_protected_0_port}\n config_drive: \"True\"\n user_data_format: RAW\n user_data:\n get_file: user_data_zrdm5bpxmc02vmt001.txt\n\n metadata:\n vnf_id: {get_param: vnf_id}\n vf_module_id {get_param: vf_module_id}\n \"evacuation_policy\": \"Evacuation\"\n" + }, + "heatFiles": [], + "vnfResources": { + "modelUuid": "d326f424-2312-4dd6-b7fe-364fadbd1ef5", + "modelInvariantUuid": "23122c9b-dd7f-483f-bf0a-e069303db2f7", + "modelName": "Vf zrdm5bpxmc02092017-VF", + "toscaNodeType": "org.openecomp.resource.vf.VfZrdm5bpxmc02092017Vf", + "description": "Demo", + "orchestrationMode": "HEAT", + "modelVersion": "1.0", + "modelInvariantId": "23122c9b-dd7f-483f-bf0a-e069303db2f7" + }, + "modelInvariantUuid": "1e099992-6222-41a9-acde-5a8abb690775", + "base": false + } + }, + { + "modelCustomizationUuid": "e38906fa-717c-49b0-b391-e6ec12b50c4a", + "label": "pxmc_mmn", + "minInstances": 0, + "initialCount": 0, + "heatEnvironment": { + "artifactUuid": "e88ce0b9-1496-4d03-ab1d-6d8d79bfc737", + "name": "pxmc_mmn.env", + "description": "Auto-generated HEAT Environment deployment artifact", + "environment": "parameters:\n cinder_delete_on_termination_false: \n cinder_delete_on_termination_true: \n mmn_arch_volume_id_2: \n mmn_backup_volume_id_3: \n mmn_block_device_names: \n mmn_data_volume_id_1: \n mmn_flavor_name: \n mmn_misc_volume_id_4: \n mmn_name_0: \n mmn_oam_protected_ip_0: \n mmn_volume_image_name_0: \n mmn_volume_name_0: \n mmn_volume_size_0: \n oam_protected_net_name: \n sec_grp_msp_id: \n vf_module_id: \n vnf_id: \n", + "artifactChecksum": "ZGI1NzI2Y2FmYjFhOTM2ZDYwNzg1YWRhZjBmMTk2OTQ=", + "version": "2" + }, + "vfModule": { + "modelUUID": "a8cb1182-9b6d-46f8-b06b-ded4fe69e10d", + "modelInvariantUUID": "8e53c069-b2f0-437a-9c00-21cbc5c8f081", + "modelName": "VfZrdm5bpxmc02092017Vf..pxmc_mmn..module-2", + "modelVersion": "1", + "isBase": 0, + "volumeHeatTemplate": { + "artifactUuid": "2f372a02-df1b-46ca-b81e-822e3f406965", + "templateName": "pxmc_mmn_volume.yaml", + "templateBody": "heat_template_version: 2015-04-30\n\ndescription: HOT creates MSP MMN Cinder Volumes under MobiSupport Tenant\n\nparameters:\n mmn_volume_name_1:\n type: string\n label: Mobisupport MSP MMN Cinder Volume names\n description: Mobisupport MSP MMN Cinder Volume names\n\n mmn_volume_name_2:\n type: string\n label: Mobisupport MSP MMN Cinder Volume names\n description: Mobisupport MSP MMN Cinder Volume names\n\n mmn_volume_name_3:\n type: string\n label: Mobisupport MSP MMN Cinder Volume names\n description: Mobisupport MSP MMN Cinder Volume names\n\n mmn_volume_name_4:\n type: string\n label: Mobisupport MSP MMN Cinder Volume names\n description: Mobisupport MSP MMN Cinder Volume names\n\n mmn_volume_size_1:\n type: number\n label: Mobisupport MSP MMN Cinder Volume sizes\n description: Mobisupport MSP MMN Cinder Volume sizes\n\n mmn_volume_size_2:\n type: number\n label: Mobisupport MSP MMN Cinder Volume sizes\n description: Mobisupport MSP MMN Cinder Volume sizes\n\n mmn_volume_size_3:\n type: number\n label: Mobisupport MSP MMN Cinder Volume sizes\n description: Mobisupport MSP MMN Cinder Volume sizes\n\n mmn_volume_size_4:\n type: number\n label: Mobisupport MSP MMN Cinder Volume sizes\n description: Mobisupport MSP MMN Cinder Volume sizes\n\nresources:\n mmn_data_volume_1:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: mmn_volume_name_1}\n size: {get_param: mmn_volume_size_1}\n \n mmn_arch_volume_2:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: mmn_volume_name_2}\n size: {get_param: mmn_volume_size_2}\n \n mmn_backup_volume_3:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: mmn_volume_name_3}\n size: {get_param: mmn_volume_size_3}\n \n mmn_misc_volume_4:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: mmn_volume_name_4}\n size: {get_param: mmn_volume_size_4}\n\noutputs:\n mmn_data_volume_id_1:\n description: msp mmn data volume 1\n value: {get_resource: mmn_data_volume_1}\n \n mmn_arch_volume_id_2:\n description: msp mn arch volume 2\n value: {get_resource: mmn_arch_volume_2}\n \n mmn_backup_volume_id_3:\n description: msp mn backup volume 3\n value: {get_resource: mmn_backup_volume_3}\n \n mmn_misc_volume_id_4:\n description: msp mn volume 4\n value: {get_resource: mmn_misc_volume_4}\n", + "timeoutMinutes": 120, + "version": "2", + "description": "created from csar", + "artifactChecksum": "MzA5MGY5ODQ0NDY5MDhiMDM3YjFlNGIwNzJkNjFhOTI=", + "parameters": [ + { + "heatTemplateArtifactUuid": "2f372a02-df1b-46ca-b81e-822e3f406965", + "paramName": "mmn_volume_name_2", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "2f372a02-df1b-46ca-b81e-822e3f406965", + "paramName": "mmn_volume_size_2", + "required": true, + "paramType": "number" + }, + { + "heatTemplateArtifactUuid": "2f372a02-df1b-46ca-b81e-822e3f406965", + "paramName": "mmn_volume_name_1", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "2f372a02-df1b-46ca-b81e-822e3f406965", + "paramName": "mmn_volume_size_1", + "required": true, + "paramType": "number" + }, + { + "heatTemplateArtifactUuid": "2f372a02-df1b-46ca-b81e-822e3f406965", + "paramName": "mmn_volume_name_4", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "2f372a02-df1b-46ca-b81e-822e3f406965", + "paramName": "mmn_volume_name_3", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "2f372a02-df1b-46ca-b81e-822e3f406965", + "paramName": "mmn_volume_size_4", + "required": true, + "paramType": "number" + }, + { + "heatTemplateArtifactUuid": "2f372a02-df1b-46ca-b81e-822e3f406965", + "paramName": "mmn_volume_size_3", + "required": true, + "paramType": "number" + } + ], + "childTemplates": [], + "heatTemplate": "heat_template_version: 2015-04-30\n\ndescription: HOT creates MSP MMN Cinder Volumes under MobiSupport Tenant\n\nparameters:\n mmn_volume_name_1:\n type: string\n label: Mobisupport MSP MMN Cinder Volume names\n description: Mobisupport MSP MMN Cinder Volume names\n\n mmn_volume_name_2:\n type: string\n label: Mobisupport MSP MMN Cinder Volume names\n description: Mobisupport MSP MMN Cinder Volume names\n\n mmn_volume_name_3:\n type: string\n label: Mobisupport MSP MMN Cinder Volume names\n description: Mobisupport MSP MMN Cinder Volume names\n\n mmn_volume_name_4:\n type: string\n label: Mobisupport MSP MMN Cinder Volume names\n description: Mobisupport MSP MMN Cinder Volume names\n\n mmn_volume_size_1:\n type: number\n label: Mobisupport MSP MMN Cinder Volume sizes\n description: Mobisupport MSP MMN Cinder Volume sizes\n\n mmn_volume_size_2:\n type: number\n label: Mobisupport MSP MMN Cinder Volume sizes\n description: Mobisupport MSP MMN Cinder Volume sizes\n\n mmn_volume_size_3:\n type: number\n label: Mobisupport MSP MMN Cinder Volume sizes\n description: Mobisupport MSP MMN Cinder Volume sizes\n\n mmn_volume_size_4:\n type: number\n label: Mobisupport MSP MMN Cinder Volume sizes\n description: Mobisupport MSP MMN Cinder Volume sizes\n\nresources:\n mmn_data_volume_1:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: mmn_volume_name_1}\n size: {get_param: mmn_volume_size_1}\n \n mmn_arch_volume_2:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: mmn_volume_name_2}\n size: {get_param: mmn_volume_size_2}\n \n mmn_backup_volume_3:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: mmn_volume_name_3}\n size: {get_param: mmn_volume_size_3}\n \n mmn_misc_volume_4:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: mmn_volume_name_4}\n size: {get_param: mmn_volume_size_4}\n\noutputs:\n mmn_data_volume_id_1:\n description: msp mmn data volume 1\n value: {get_resource: mmn_data_volume_1}\n \n mmn_arch_volume_id_2:\n description: msp mn arch volume 2\n value: {get_resource: mmn_arch_volume_2}\n \n mmn_backup_volume_id_3:\n description: msp mn backup volume 3\n value: {get_resource: mmn_backup_volume_3}\n \n mmn_misc_volume_id_4:\n description: msp mn volume 4\n value: {get_resource: mmn_misc_volume_4}\n" + }, + "moduleHeatTemplate": { + "artifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "templateName": "pxmc_mmn.yaml", + "templateBody": "heat_template_version: 2015-04-30\n\ndescription: HOT creates Nimbus vMSP MMN stack.\n\nparameters:\n mmn_name_0:\n type: string\n label: MSP MMN server names\n description: name of the MSP MMN instances\n mmn_flavor_name:\n type: string\n label: MSP MMN flavor name\n description: MSP MMN flavor name\n# mmn_image_name:\n# type: string\n# label: MSP MMN image name\n# description: MSP MMN image name\n# availability_zone_0:\n# type: string\n# label: MSP MMN availability zones\n# description: MSP MMN availability zones\n sec_grp_msp_id:\n type: string\n label: security group id\n description: the id of security group\n mmn_oam_protected_ip_0:\n type: string\n label: MSP MMN OAM IP Addresses\n description: MSP MMN OAM IP Addresses\n oam_protected_net_name:\n type: string\n label: MSP MMN OAM net name\n description: MSP MMN OAM net name\n mmn_volume_name_0:\n type: string\n label: Mobisupport MSP MMN Cinder Volume names\n description: Mobisupport MSP MMN Cinder Volume names\n mmn_volume_size_0:\n type: number\n label: Mobisupport MSP MMN Cinder Volume sizes\n description: Mobisupport MSP MMN Cinder Volume sizes\n mmn_volume_image_name_0:\n type: string\n label: Mobisupport MSP MMN Cinder Volume image name\n description: Mobisupport MSP MMN Cinder Volume image name\n mmn_data_volume_id_1:\n type: string\n label: MSP MMN Volume id 1\n description: MSP MMN Volume id 1\n mmn_arch_volume_id_2:\n type: string\n label: MSP MMN Volume id 2\n description: MSP MMN Volume id 2\n mmn_backup_volume_id_3:\n type: string\n label: MSP MMN Volume id 3\n description: MSP MMN Volume id 3\n mmn_misc_volume_id_4:\n type: string\n label: MSP MMN Volume id 4\n description: MSP MMN Volume id 4\n mmn_block_device_names:\n type: comma_delimited_list\n label: MSP MMN Block Device Names\n description: MSP MMN Block Device Names\n cinder_delete_on_termination_true:\n type: boolean\n description: delete cinder volume upon instances termination\n cinder_delete_on_termination_false:\n type: boolean\n description: keep cinder volume upon instances termination\n vnf_id:\n type: string\n label: MSP MMN VNF ID\n description: MSP MMN VNF ID\n vf_module_id:\n type: string\n description: Unique ID for this VF module instance\n\nresources:\n################ Cinder Volume ########################\n mmn_volume_0:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: mmn_volume_name_0}\n size: {get_param: mmn_volume_size_0}\n image: {get_param: mmn_volume_image_name_0}\n\n################ Server ##############################\n mmn_zrdm5bpxmc02mmn_0:\n type: OS::Nova::Server\n properties:\n name: {get_param: mmn_name_0}\n# image: {get_param: mmn_image_name}\n flavor: {get_param: mmn_flavor_name}\n# availability_zone: {get_param: availability_zone_0}\n block_device_mapping_v2:\n - device_name: { get_param: [mmn_block_device_names, 0] }\n volume_id: { get_resource: mmn_volume_0 }\n delete_on_termination: {get_param: cinder_delete_on_termination_true}\n networks:\n - port: { get_resource: mmn_oam_protected_0_port }\n config_drive: \"True\"\n user_data_format: RAW\n user_data:\n get_file: user_data_zrdm5bpxmc02mmn001.txt\n metadata:\n vnf_id: {get_param: vnf_id}\n vf_module_id {get_param: vf_module_id}\n \"evacuation_policy\": \"Evacuation\"\n\n################ Ports ##############################\n mmn_oam_protected_0_port:\n type: OS::Neutron::Port\n properties:\n network: {get_param: oam_protected_net_name}\n fixed_ips: [{\"ip_address\": {get_param: mmn_oam_protected_ip_0}}]\n security_groups: [{ get_param: sec_grp_msp_id }]\n replacement_policy: AUTO\n\n################ Volume Attachment ##############################\n volume_attachment_vdb:\n type: OS::Cinder::VolumeAttachment\n depends_on: mmn_zrdm5bpxmc02mmn_0\n properties:\n volume_id: { get_param: mmn_data_volume_id_1 }\n instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0}\n mountpoint: /dev/vdb\n\n volume_attachment_vdc:\n type: OS::Cinder::VolumeAttachment\n depends_on: volume_attachment_vdb\n properties:\n volume_id: { get_param: mmn_arch_volume_id_2 }\n instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0}\n mountpoint: /dev/vdc\n\n volume_attachment_vdd:\n type: OS::Cinder::VolumeAttachment\n depends_on: volume_attachment_vdc\n properties:\n volume_id: { get_param: mmn_backup_volume_id_3 }\n instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0}\n mountpoint: /dev/vdd\n\n volume_attachment_vde:\n type: OS::Cinder::VolumeAttachment\n depends_on: volume_attachment_vdd\n properties:\n volume_id: { get_param: mmn_misc_volume_id_4 }\n instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0}\n mountpoint: /dev/vde\n", + "timeoutMinutes": 120, + "version": "1", + "description": "created from csar", + "artifactChecksum": "YmNiYTU5YTM4ODVhYTlhODc5NGMwNWZkZjI5MTRmNTE=", + "parameters": [ + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "vnf_id", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_block_device_names", + "required": true, + "paramType": "comma_delimited_list" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_name_0", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_arch_volume_id_2", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_volume_image_name_0", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "cinder_delete_on_termination_false", + "required": true, + "paramType": "boolean" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_oam_protected_ip_0", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_data_volume_id_1", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_backup_volume_id_3", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "vf_module_id", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "sec_grp_msp_id", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_volume_size_0", + "required": true, + "paramType": "number" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "cinder_delete_on_termination_true", + "required": true, + "paramType": "boolean" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_volume_name_0", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "oam_protected_net_name", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_misc_volume_id_4", + "required": true, + "paramType": "string" + }, + { + "heatTemplateArtifactUuid": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "paramName": "mmn_flavor_name", + "required": true, + "paramType": "string" + } + ], + "childTemplates": [], + "heatTemplate": "heat_template_version: 2015-04-30\n\ndescription: HOT creates Nimbus vMSP MMN stack.\n\nparameters:\n mmn_name_0:\n type: string\n label: MSP MMN server names\n description: name of the MSP MMN instances\n mmn_flavor_name:\n type: string\n label: MSP MMN flavor name\n description: MSP MMN flavor name\n# mmn_image_name:\n# type: string\n# label: MSP MMN image name\n# description: MSP MMN image name\n# availability_zone_0:\n# type: string\n# label: MSP MMN availability zones\n# description: MSP MMN availability zones\n sec_grp_msp_id:\n type: string\n label: security group id\n description: the id of security group\n mmn_oam_protected_ip_0:\n type: string\n label: MSP MMN OAM IP Addresses\n description: MSP MMN OAM IP Addresses\n oam_protected_net_name:\n type: string\n label: MSP MMN OAM net name\n description: MSP MMN OAM net name\n mmn_volume_name_0:\n type: string\n label: Mobisupport MSP MMN Cinder Volume names\n description: Mobisupport MSP MMN Cinder Volume names\n mmn_volume_size_0:\n type: number\n label: Mobisupport MSP MMN Cinder Volume sizes\n description: Mobisupport MSP MMN Cinder Volume sizes\n mmn_volume_image_name_0:\n type: string\n label: Mobisupport MSP MMN Cinder Volume image name\n description: Mobisupport MSP MMN Cinder Volume image name\n mmn_data_volume_id_1:\n type: string\n label: MSP MMN Volume id 1\n description: MSP MMN Volume id 1\n mmn_arch_volume_id_2:\n type: string\n label: MSP MMN Volume id 2\n description: MSP MMN Volume id 2\n mmn_backup_volume_id_3:\n type: string\n label: MSP MMN Volume id 3\n description: MSP MMN Volume id 3\n mmn_misc_volume_id_4:\n type: string\n label: MSP MMN Volume id 4\n description: MSP MMN Volume id 4\n mmn_block_device_names:\n type: comma_delimited_list\n label: MSP MMN Block Device Names\n description: MSP MMN Block Device Names\n cinder_delete_on_termination_true:\n type: boolean\n description: delete cinder volume upon instances termination\n cinder_delete_on_termination_false:\n type: boolean\n description: keep cinder volume upon instances termination\n vnf_id:\n type: string\n label: MSP MMN VNF ID\n description: MSP MMN VNF ID\n vf_module_id:\n type: string\n description: Unique ID for this VF module instance\n\nresources:\n################ Cinder Volume ########################\n mmn_volume_0:\n type: OS::Cinder::Volume\n properties:\n name: {get_param: mmn_volume_name_0}\n size: {get_param: mmn_volume_size_0}\n image: {get_param: mmn_volume_image_name_0}\n\n################ Server ##############################\n mmn_zrdm5bpxmc02mmn_0:\n type: OS::Nova::Server\n properties:\n name: {get_param: mmn_name_0}\n# image: {get_param: mmn_image_name}\n flavor: {get_param: mmn_flavor_name}\n# availability_zone: {get_param: availability_zone_0}\n block_device_mapping_v2:\n - device_name: { get_param: [mmn_block_device_names, 0] }\n volume_id: { get_resource: mmn_volume_0 }\n delete_on_termination: {get_param: cinder_delete_on_termination_true}\n networks:\n - port: { get_resource: mmn_oam_protected_0_port }\n config_drive: \"True\"\n user_data_format: RAW\n user_data:\n get_file: user_data_zrdm5bpxmc02mmn001.txt\n metadata:\n vnf_id: {get_param: vnf_id}\n vf_module_id {get_param: vf_module_id}\n \"evacuation_policy\": \"Evacuation\"\n\n################ Ports ##############################\n mmn_oam_protected_0_port:\n type: OS::Neutron::Port\n properties:\n network: {get_param: oam_protected_net_name}\n fixed_ips: [{\"ip_address\": {get_param: mmn_oam_protected_ip_0}}]\n security_groups: [{ get_param: sec_grp_msp_id }]\n replacement_policy: AUTO\n\n################ Volume Attachment ##############################\n volume_attachment_vdb:\n type: OS::Cinder::VolumeAttachment\n depends_on: mmn_zrdm5bpxmc02mmn_0\n properties:\n volume_id: { get_param: mmn_data_volume_id_1 }\n instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0}\n mountpoint: /dev/vdb\n\n volume_attachment_vdc:\n type: OS::Cinder::VolumeAttachment\n depends_on: volume_attachment_vdb\n properties:\n volume_id: { get_param: mmn_arch_volume_id_2 }\n instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0}\n mountpoint: /dev/vdc\n\n volume_attachment_vdd:\n type: OS::Cinder::VolumeAttachment\n depends_on: volume_attachment_vdc\n properties:\n volume_id: { get_param: mmn_backup_volume_id_3 }\n instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0}\n mountpoint: /dev/vdd\n\n volume_attachment_vde:\n type: OS::Cinder::VolumeAttachment\n depends_on: volume_attachment_vdd\n properties:\n volume_id: { get_param: mmn_misc_volume_id_4 }\n instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0}\n mountpoint: /dev/vde\n" + }, + "heatFiles": [], + "vnfResources": { + "modelUuid": "d326f424-2312-4dd6-b7fe-364fadbd1ef5", + "modelInvariantUuid": "23122c9b-dd7f-483f-bf0a-e069303db2f7", + "modelName": "Vf zrdm5bpxmc02092017-VF", + "toscaNodeType": "org.openecomp.resource.vf.VfZrdm5bpxmc02092017Vf", + "description": "Demo", + "orchestrationMode": "HEAT", + "modelVersion": "1.0", + "modelInvariantId": "23122c9b-dd7f-483f-bf0a-e069303db2f7" + }, + "modelInvariantUuid": "8e53c069-b2f0-437a-9c00-21cbc5c8f081", + "base": false + } + } + ], + "vnfResource": { + "modelUuid": "d326f424-2312-4dd6-b7fe-364fadbd1ef5", + "modelInvariantUuid": "23122c9b-dd7f-483f-bf0a-e069303db2f7", + "modelName": "Vf zrdm5bpxmc02092017-VF", + "toscaNodeType": "org.openecomp.resource.vf.VfZrdm5bpxmc02092017Vf", + "description": "Demo", + "orchestrationMode": "HEAT", + "modelVersion": "1.0", + "modelInvariantId": "23122c9b-dd7f-483f-bf0a-e069303db2f7" + } + } + ], + "allotedCustomizations": [], + "recipes": { + + }, + "csar": { + "artifactUUID": "396cfd49-0f4b-4fec-9f33-0fd7e90d5a22", + "name": "service-VfZrdm5bpxmc02092017Service-csar.csar", + "artifactChecksum": "MWQ3Y2FmMWExNDQyYWI2N2YwNjEwZGUzN2IzMzI3NjE=", + "url": "service-VfZrdm5bpxmc02092017Service-csar.csar", + "description": "TOSCA definition package of the asset", + "version": "1" + } +} diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/notif-structure.json b/asdc-controller/src/test/resources/resource-examples/multipleModules/notif-structure.json new file mode 100644 index 0000000000..3a7b361f89 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/notif-structure.json @@ -0,0 +1,96 @@ +{ + "serviceName": "Vf zrdm5bpxmc02092017-Service", + "serviceInvariantUUID": "b16a9398-ffa3-4041-b78c-2956b8ad9c7b", + "serviceUUID": "bad955c3-29b2-4a27-932e-28e942cc6480", + "serviceVersion": "1.0", + "serviceArtifacts": + [{ + "artifactName": "service-VfZrdm5bpxmc02092017Service-csar.csar", + "artifactType": "TOSCA_CSAR", + "artifactURL": "service-VfZrdm5bpxmc02092017Service-csar.csar", + "artifactChecksum": "MWQ3Y2FmMWExNDQyYWI2N2YwNjEwZGUzN2IzMzI3NjE=", + "artifactDescription": "TOSCA definition package of the asset", + "artifactTimeout": 0, + "artifactUUID": "396cfd49-0f4b-4fec-9f33-0fd7e90d5a22", + "artifactVersion": "1" + }], + "resources": + [ + { + "resourceInstanceName": "Vf zrdm5bpxmc02092017-VF 0", + "resourceInvariantUUID": "23122c9b-dd7f-483f-bf0a-e069303db2f7", + "resourceCustomizationUUID": "96c23a4a-6887-4b2c-9cce-1e4ea35eaade", + "resourceName": "Vf zrdm5bpxmc02092017-VF", + "resourceType": "VF", + "resourceUUID": "14ba5d1e-3862-407c-a236-1cbaebccce77", + "resourceVersion": "1.0", + "category": "Generic", + "subcategory": "Network Elements", + "artifacts": + [ + { + "artifactChecksum": "NmEyZjc1Y2UwZDMwYjFhNGRlMTMzN2JhNzdiMThjMGU=", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactName": "pxmc_mmn_volume.env", + "artifactType": "HEAT_ENV", + "artifactURL": "pxmc_mmn_volume.env", + "artifactUUID": "c1ae6284-48d9-4437-a195-b2cf2ba23070", + "artifactTimeout": 0, + "artifactVersion": "2" + }, + { + "artifactChecksum": "OGM2MWIzZTA2OTc5YjQwNTM1NGVhODA0YTFkNzM4ZTg==", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactName": "pxmc_base.env", + "artifactTimeout": 0, + "artifactType": "HEAT_ENV", + "artifactURL": "pxmc_base.env", + "artifactUUID": "6dd99c31-c52e-4c45-b99b-d223c877a296", + "artifactVersion": "2.0" + }, + { + "artifactChecksum": "MzJmZjgyZWYwOTBjMTg5M2ExNWZhMmMwNzc1NWY1YjQ=", + "artifactDescription": "created from csar", + "artifactName": "user_data_zrdm5bpxmc02vmt001.txt", + "artifactTimeout": 0, + "artifactType": "HEAT_ARTIFACT", + "artifactURL": "user_data_zrdm5bpxmc02vmt001.txt", + "artifactUUID": "53acdabe-689f-45e5-8578-f1514d3529da", + "artifactVersion": "1" + }, + { + "artifactChecksum": "MjY0NzcxMjJkZGI4YzQ1MDU2NjhkNWYyM2IwNmYzYmU=", + "artifactDescription": "Auto-generated VF Modules information artifact", + "artifactName": "vfzrdm5bpxmc02092017vf0_modules.json", + "artifactTimeout": 0, + "artifactType": "VF_MODULES_METADATA", + "artifactURL": "vfzrdm5bpxmc02092017vf0_modules.json", + "artifactUUID": "e3b82cd6-485e-4d56-8d2c-17ccf6a59533", + "artifactVersion": "1" + }, + { + "artifactChecksum": "YWQ2MmE0Y2NjNGE4YmJlOTk0YmZhYmIxYTc1YWZkY2M=", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactName": "base_TEST.env", + "artifactTimeout": 0, + "artifactType": "HEAT_ENV", + "artifactURL": "base_TEST.env", + "artifactUUID": "57f6520b-fa65-4544-90de-95c8190c2e6c", + "artifactVersion": "1.0" + }, + { + "artifactChecksum": "YWQ2MmE0Y2NjNGE4YmJlOTk0YmZhYmIxYTc1YWZkY2M=", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactName": "base_TEST.env", + "artifactTimeout": 0, + "artifactType": "HEAT_ENV", + "artifactURL": "base_TEST.env", + "artifactUUID": "57f6520b-fa65-4544-90de-95c8190c2e6c", + "artifactVersion": "1.0" + } + ] + } + ], + "serviceDescription": "Demo", + "distributionID": "a2872f55-8628-4486-8548-7b132c9a47db" +}
\ No newline at end of file diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_base.env b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_base.env new file mode 100644 index 0000000000..42d736ef59 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_base.env @@ -0,0 +1,2 @@ +parameters: + vnf_name: diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_base.yaml b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_base.yaml new file mode 100644 index 0000000000..3e98047ffd --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_base.yaml @@ -0,0 +1,45 @@ +heat_template_version: 2015-04-30 + +parameters: + +## GLOBAL//Basic Parameters + vnf_name: + type: string + description: Unique name for this VF instance +# For manual spinups, value must be in the ENV file. Must be removed from ENV before uploading to ASDC + +resources: + +## MSP RSG//Resource:SecurityGroup + sec_grp_msp_0: + type: OS::Neutron::SecurityGroup + properties: + description: Security Group for PXMC + name: + str_replace: + template: VF_NAME_sec_grp_msp + params: + VF_NAME: { get_param: vnf_name } + rules: + - {"direction": "egress", "remote_ip_prefix": "0.0.0.0/0", "protocol": "tcp", "ethertype": "IPv4", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "egress", "remote_ip_prefix": "0.0.0.0/0", "protocol": "udp", "ethertype": "IPv4", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "egress", "remote_ip_prefix": "0.0.0.0/0", "protocol": "132", "ethertype": "IPv4", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "egress", "remote_ip_prefix": "0.0.0.0/0", "protocol": "icmp", "ethertype": "IPv4"} + - {"direction": "egress", "remote_ip_prefix": "::/0", "protocol": "tcp", "ethertype": "IPv6", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "egress", "remote_ip_prefix": "::/0", "protocol": "udp", "ethertype": "IPv6", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "egress", "remote_ip_prefix": "::/0", "protocol": "132", "ethertype": "IPv6", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "egress", "remote_ip_prefix": "::/0", "protocol": "58", "ethertype": "IPv6"} + - {"direction": "ingress", "remote_ip_prefix": "0.0.0.0/0", "protocol": "tcp", "ethertype": "IPv4", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "ingress", "remote_ip_prefix": "0.0.0.0/0", "protocol": "udp", "ethertype": "IPv4", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "ingress", "remote_ip_prefix": "0.0.0.0/0", "protocol": "132", "ethertype": "IPv4", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "ingress", "remote_ip_prefix": "0.0.0.0/0", "protocol": "icmp", "ethertype": "IPv4"} + - {"direction": "ingress", "remote_ip_prefix": "::/0", "protocol": "tcp", "ethertype": "IPv6", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "ingress", "remote_ip_prefix": "::/0", "protocol": "udp", "ethertype": "IPv6", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "ingress", "remote_ip_prefix": "::/0", "protocol": "132", "ethertype": "IPv6", "port_range_max": 65535, "port_range_min": 0} + - {"direction": "ingress", "remote_ip_prefix": "::/0", "protocol": "58", "ethertype": "IPv6"} + +outputs: + + sec_grp_msp_id: + description: uuid of the security group + value: {get_resource: sec_grp_msp_0 } diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn.env b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn.env new file mode 100644 index 0000000000..42599e6034 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn.env @@ -0,0 +1,18 @@ +parameters: + cinder_delete_on_termination_false: + cinder_delete_on_termination_true: + mmn_arch_volume_id_2: + mmn_backup_volume_id_3: + mmn_block_device_names: + mmn_data_volume_id_1: + mmn_flavor_name: + mmn_misc_volume_id_4: + mmn_name_0: + mmn_oam_protected_ip_0: + mmn_volume_image_name_0: + mmn_volume_name_0: + mmn_volume_size_0: + oam_protected_net_name: + sec_grp_msp_id: + vf_module_id: + vnf_id: diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn.yaml b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn.yaml new file mode 100644 index 0000000000..d1b0ce883b --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn.yaml @@ -0,0 +1,152 @@ +heat_template_version: 2015-04-30 + +description: HOT creates Nimbus vMSP MMN stack. + +parameters: + mmn_name_0: + type: string + label: MSP MMN server names + description: name of the MSP MMN instances + mmn_flavor_name: + type: string + label: MSP MMN flavor name + description: MSP MMN flavor name +# mmn_image_name: +# type: string +# label: MSP MMN image name +# description: MSP MMN image name +# availability_zone_0: +# type: string +# label: MSP MMN availability zones +# description: MSP MMN availability zones + sec_grp_msp_id: + type: string + label: security group id + description: the id of security group + mmn_oam_protected_ip_0: + type: string + label: MSP MMN OAM IP Addresses + description: MSP MMN OAM IP Addresses + oam_protected_net_name: + type: string + label: MSP MMN OAM net name + description: MSP MMN OAM net name + mmn_volume_name_0: + type: string + label: Mobisupport MSP MMN Cinder Volume names + description: Mobisupport MSP MMN Cinder Volume names + mmn_volume_size_0: + type: number + label: Mobisupport MSP MMN Cinder Volume sizes + description: Mobisupport MSP MMN Cinder Volume sizes + mmn_volume_image_name_0: + type: string + label: Mobisupport MSP MMN Cinder Volume image name + description: Mobisupport MSP MMN Cinder Volume image name + mmn_data_volume_id_1: + type: string + label: MSP MMN Volume id 1 + description: MSP MMN Volume id 1 + mmn_arch_volume_id_2: + type: string + label: MSP MMN Volume id 2 + description: MSP MMN Volume id 2 + mmn_backup_volume_id_3: + type: string + label: MSP MMN Volume id 3 + description: MSP MMN Volume id 3 + mmn_misc_volume_id_4: + type: string + label: MSP MMN Volume id 4 + description: MSP MMN Volume id 4 + mmn_block_device_names: + type: comma_delimited_list + label: MSP MMN Block Device Names + description: MSP MMN Block Device Names + cinder_delete_on_termination_true: + type: boolean + description: delete cinder volume upon instances termination + cinder_delete_on_termination_false: + type: boolean + description: keep cinder volume upon instances termination + vnf_id: + type: string + label: MSP MMN VNF ID + description: MSP MMN VNF ID + vf_module_id: + type: string + description: Unique ID for this VF module instance + +resources: +################ Cinder Volume ######################## + mmn_volume_0: + type: OS::Cinder::Volume + properties: + name: {get_param: mmn_volume_name_0} + size: {get_param: mmn_volume_size_0} + image: {get_param: mmn_volume_image_name_0} + +################ Server ############################## + mmn_zrdm5bpxmc02mmn_0: + type: OS::Nova::Server + properties: + name: {get_param: mmn_name_0} +# image: {get_param: mmn_image_name} + flavor: {get_param: mmn_flavor_name} +# availability_zone: {get_param: availability_zone_0} + block_device_mapping_v2: + - device_name: { get_param: [mmn_block_device_names, 0] } + volume_id: { get_resource: mmn_volume_0 } + delete_on_termination: {get_param: cinder_delete_on_termination_true} + networks: + - port: { get_resource: mmn_oam_protected_0_port } + config_drive: "True" + user_data_format: RAW + user_data: + get_file: user_data_zrdm5bpxmc02mmn001.txt + metadata: + vnf_id: {get_param: vnf_id} + vf_module_id {get_param: vf_module_id} + "evacuation_policy": "Evacuation" + +################ Ports ############################## + mmn_oam_protected_0_port: + type: OS::Neutron::Port + properties: + network: {get_param: oam_protected_net_name} + fixed_ips: [{"ip_address": {get_param: mmn_oam_protected_ip_0}}] + security_groups: [{ get_param: sec_grp_msp_id }] + replacement_policy: AUTO + +################ Volume Attachment ############################## + volume_attachment_vdb: + type: OS::Cinder::VolumeAttachment + depends_on: mmn_zrdm5bpxmc02mmn_0 + properties: + volume_id: { get_param: mmn_data_volume_id_1 } + instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0} + mountpoint: /dev/vdb + + volume_attachment_vdc: + type: OS::Cinder::VolumeAttachment + depends_on: volume_attachment_vdb + properties: + volume_id: { get_param: mmn_arch_volume_id_2 } + instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0} + mountpoint: /dev/vdc + + volume_attachment_vdd: + type: OS::Cinder::VolumeAttachment + depends_on: volume_attachment_vdc + properties: + volume_id: { get_param: mmn_backup_volume_id_3 } + instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0} + mountpoint: /dev/vdd + + volume_attachment_vde: + type: OS::Cinder::VolumeAttachment + depends_on: volume_attachment_vdd + properties: + volume_id: { get_param: mmn_misc_volume_id_4 } + instance_uuid: { get_resource: mmn_zrdm5bpxmc02mmn_0} + mountpoint: /dev/vde diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn_volume.env b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn_volume.env new file mode 100644 index 0000000000..d5f16289b1 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn_volume.env @@ -0,0 +1,9 @@ +parameters: + mmn_volume_name_1: "data-mn-v-vdb" + mmn_volume_name_2: "arch-mn-v-vdc" + mmn_volume_name_3: "backup-mn-v-vdd" + mmn_volume_name_4: "misc-mn-v-vde" + mmn_volume_size_1: 20 + mmn_volume_size_2: 20 + mmn_volume_size_3: 50 + mmn_volume_size_4: 20 diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn_volume.yaml b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn_volume.yaml new file mode 100644 index 0000000000..debb8a96db --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_mmn_volume.yaml @@ -0,0 +1,86 @@ +heat_template_version: 2015-04-30 + +description: HOT creates MSP MMN Cinder Volumes under MobiSupport Tenant + +parameters: + mmn_volume_name_1: + type: string + label: Mobisupport MSP MMN Cinder Volume names + description: Mobisupport MSP MMN Cinder Volume names + + mmn_volume_name_2: + type: string + label: Mobisupport MSP MMN Cinder Volume names + description: Mobisupport MSP MMN Cinder Volume names + + mmn_volume_name_3: + type: string + label: Mobisupport MSP MMN Cinder Volume names + description: Mobisupport MSP MMN Cinder Volume names + + mmn_volume_name_4: + type: string + label: Mobisupport MSP MMN Cinder Volume names + description: Mobisupport MSP MMN Cinder Volume names + + mmn_volume_size_1: + type: number + label: Mobisupport MSP MMN Cinder Volume sizes + description: Mobisupport MSP MMN Cinder Volume sizes + + mmn_volume_size_2: + type: number + label: Mobisupport MSP MMN Cinder Volume sizes + description: Mobisupport MSP MMN Cinder Volume sizes + + mmn_volume_size_3: + type: number + label: Mobisupport MSP MMN Cinder Volume sizes + description: Mobisupport MSP MMN Cinder Volume sizes + + mmn_volume_size_4: + type: number + label: Mobisupport MSP MMN Cinder Volume sizes + description: Mobisupport MSP MMN Cinder Volume sizes + +resources: + mmn_data_volume_1: + type: OS::Cinder::Volume + properties: + name: {get_param: mmn_volume_name_1} + size: {get_param: mmn_volume_size_1} + + mmn_arch_volume_2: + type: OS::Cinder::Volume + properties: + name: {get_param: mmn_volume_name_2} + size: {get_param: mmn_volume_size_2} + + mmn_backup_volume_3: + type: OS::Cinder::Volume + properties: + name: {get_param: mmn_volume_name_3} + size: {get_param: mmn_volume_size_3} + + mmn_misc_volume_4: + type: OS::Cinder::Volume + properties: + name: {get_param: mmn_volume_name_4} + size: {get_param: mmn_volume_size_4} + +outputs: + mmn_data_volume_id_1: + description: msp mmn data volume 1 + value: {get_resource: mmn_data_volume_1} + + mmn_arch_volume_id_2: + description: msp mn arch volume 2 + value: {get_resource: mmn_arch_volume_2} + + mmn_backup_volume_id_3: + description: msp mn backup volume 3 + value: {get_resource: mmn_backup_volume_3} + + mmn_misc_volume_id_4: + description: msp mn volume 4 + value: {get_resource: mmn_misc_volume_4} diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_vmt.env b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_vmt.env new file mode 100644 index 0000000000..0f0e6daac0 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_vmt.env @@ -0,0 +1,17 @@ +parameters: + cinder_delete_on_termination_false: + cinder_delete_on_termination_true: + oam_protected_net_name: + sec_grp_msp_id: + vf_module_id: + vmt_block_device_names: + vmt_flavor_name: + vmt_name_0: + vmt_oam_protected_ip_0: + vmt_volume_image_name_0: + vmt_volume_image_name_1: + vmt_volume_name_0: + vmt_volume_name_1: + vmt_volume_size_0: + vmt_volume_size_1: + vnf_id: diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_vmt.yaml b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_vmt.yaml new file mode 100644 index 0000000000..2e04c6130e --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/pxmc_vmt.yaml @@ -0,0 +1,128 @@ +heat_template_version: 2015-04-30 + +description: HOT creates Nimbus MSP VMT stack under MobiSupport Tenant + +parameters: + vmt_name_0: + type: string + label: MSP VMT server names + description: name of the MSP VMT instances +# vmt_image_name: +# type: string +# label: MSP VMT image name +# description: MSP VMT image name + vmt_flavor_name: + type: string + label: MSP VMT flavor name + description: MSP VMT flavor name +# availability_zone_0: +# type: string +# label: MSP VMT availability zones +# description: MSP VMT availability zones + sec_grp_msp_id: + type: string + label: security group id + description: the id of security group + vmt_oam_protected_ip_0: + type: string + label: MSP VMT OAM IP Addresses + description: MSP VMT OAM IP Addresses + oam_protected_net_name: + type: string + label: MSP VMT OAM net name + description: MSP VMT OAM net name + vmt_block_device_names: + type: comma_delimited_list + label: MSP VMT Block Device Names + description: MSP VMT Block Device Names + vmt_volume_name_0: + type: string + label: Mobisupport MSP VMT Cinder Volume names + description: Mobisupport MSP VMT Cinder Volume names + vmt_volume_name_1: + type: string + label: Mobisupport MSP VMT Cinder Volume names + description: Mobisupport MSP VMT Cinder Volume names + vmt_volume_size_0: + type: number + label: Mobisupport MSP VMT Cinder Volume sizes + description: Mobisupport MSP VMT Cinder Volume sizes + vmt_volume_size_1: + type: number + label: Mobisupport MSP VMT Cinder Volume sizes + description: Mobisupport MSP VMT Cinder Volume sizes + vmt_volume_image_name_0: + type: string + label: Mobisupport MSP VMT VDA Cinder Volume image name + description: Mobisupport MSP VMT VDA Cinder Volume image name + vmt_volume_image_name_1: + type: string + label: Mobisupport MSP VMT VDB Cinder Volume image name + description: Mobisupport MSP VMT VDB Cinder Volume image name + cinder_delete_on_termination_true: + type: boolean + description: delete cinder volume upon instances termination + cinder_delete_on_termination_false: + type: boolean + description: keep cinder volume upon instances termination + vnf_id: + type: string + label: MSP VMT VNF ID + description: MSP VMT VNF ID + vf_module_id: + type: string + description: Unique ID for this VF Module instance + +resources: +################ Cinder Volumes ############################## + vmt_volume_0: + type: OS::Cinder::Volume + properties: + name: {get_param: vmt_volume_name_0} + size: {get_param: vmt_volume_size_0} + image: {get_param: vmt_volume_image_name_0} + + vmt_volume_1: + type: OS::Cinder::Volume + properties: + name: {get_param: vmt_volume_name_1} + size: {get_param: vmt_volume_size_1} + image: {get_param: vmt_volume_image_name_1} + +################ Ports ############################## + vmt_oam_protected_0_port: + type: OS::Neutron::Port + properties: + network: {get_param: oam_protected_net_name} + fixed_ips: [{"ip_address": {get_param: vmt_oam_protected_ip_0}}] + security_groups: [{get_param: sec_grp_msp_id}] + replacement_policy: AUTO + +################### Servers ######################### + vmt_zrdm5bpxmc02vmt_0: + type: OS::Nova::Server + properties: + name: {get_param: vmt_name_0} +# image: {get_param: vmt_image_name} + flavor: {get_param: vmt_flavor_name} +# availability_zone: {get_param: availability_zone_0} + block_device_mapping_v2: + - device_name: {get_param: [vmt_block_device_names, 0]} + volume_id: {get_resource: vmt_volume_0} + delete_on_termination: {get_param: cinder_delete_on_termination_true} + boot_index: 0 + - device_name: {get_param: [vmt_block_device_names, 1]} + volume_id: {get_resource: vmt_volume_1} + delete_on_termination: {get_param: cinder_delete_on_termination_true} + boot_index: -1 + networks: + - port: {get_resource: vmt_oam_protected_0_port} + config_drive: "True" + user_data_format: RAW + user_data: + get_file: user_data_zrdm5bpxmc02vmt001.txt + + metadata: + vnf_id: {get_param: vnf_id} + vf_module_id {get_param: vf_module_id} + "evacuation_policy": "Evacuation" diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/service-VfZrdm5bpxmc02092017Service-csar.csar b/asdc-controller/src/test/resources/resource-examples/multipleModules/service-VfZrdm5bpxmc02092017Service-csar.csar Binary files differnew file mode 100644 index 0000000000..69b1c23404 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/service-VfZrdm5bpxmc02092017Service-csar.csar diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/testStructure.json b/asdc-controller/src/test/resources/resource-examples/multipleModules/testStructure.json new file mode 100644 index 0000000000..0dd1193e67 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/testStructure.json @@ -0,0 +1,217 @@ +{ + "distributionID": "a2872f55-8628-4486-8548-7b132c9a47db", + "serviceName": "Vf zrdm5bpxmc02092017-Service", + "serviceVersion": "1.0", + "serviceUUID": "bad955c3-29b2-4a27-932e-28e942cc6480", + "serviceInvariantUUID": "b16a9398-ffa3-4041-b78c-2956b8ad9c7b", + "serviceDescription": "Demo", + "serviceArtifacts": [ + { + "artifactName": "service-VfZrdm5bpxmc02092017Service-csar.csar", + "artifactVersion": "1", + "artifactType": "TOSCA_CSAR", + "artifactDescription": "TOSCA definition package of the asset", + "artifactTimeout": "0", + "artifactURL": "service-VfZrdm5bpxmc02092017Service-csar.csar", + "artifactUUID": "396cfd49-0f4b-4fec-9f33-0fd7e90d5a22", + "artifactChecksum": "MWQ3Y2FmMWExNDQyYWI2N2YwNjEwZGUzN2IzMzI3NjE=" + } + ], + "resources": [ + { + "resourceInstanceName": "Vf zrdm5bpxmc02092017-VF 0", + "resourceCustomizationUUID": "96c23a4a-6887-4b2c-9cce-1e4ea35eaade", + "resourceInvariantUUID": "23122c9b-dd7f-483f-bf0a-e069303db2f7", + "resourceName": "Vf zrdm5bpxmc02092017-VF", + "resourceType": "VF", + "resourceUUID": "14ba5d1e-3862-407c-a236-1cbaebccce77", + "resourceVersion": "1.0", + "category": "Generic", + "subCategory": "Network Elements", + "artifacts": [ + { + "artifactName": "pxmc_mmn_volume.env", + "artifactVersion": "2", + "artifactType": "HEAT_ENV", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactTimeout": "0", + "artifactURL": "pxmc_mmn_volume.env", + "artifactUUID": "c1ae6284-48d9-4437-a195-b2cf2ba23070", + "artifactChecksum": "NmEyZjc1Y2UwZDMwYjFhNGRlMTMzN2JhNzdiMThjMGU=" + }, + { + "artifactName": "pxmc_base.env", + "artifactVersion": "2", + "artifactType": "HEAT_ENV", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactTimeout": "0", + "artifactURL": "pxmc_base.env", + "artifactUUID": "6dd99c31-c52e-4c45-b99b-d223c877a296", + "artifactChecksum": "OGM2MWIzZTA2OTc5YjQwNTM1NGVhODA0YTFkNzM4ZTg=" + }, + { + "artifactName": "vfzrdm5bpxmc02092017vf0_modules.json", + "artifactVersion": "1", + "artifactType": "VF_MODULES_METADATA", + "artifactDescription": "Auto-generated VF Modules information artifact", + "artifactTimeout": "0", + "artifactURL": "vfzrdm5bpxmc02092017vf0_modules.json", + "artifactUUID": "e3b82cd6-485e-4d56-8d2c-17ccf6a59533", + "artifactChecksum": "MjY0NzcxMjJkZGI4YzQ1MDU2NjhkNWYyM2IwNmYzYmU=" + }, + { + "artifactName": "pxmc_vmt.yaml", + "artifactVersion": "1", + "artifactType": "HEAT", + "artifactDescription": "created from csar", + "artifactTimeout": "120", + "artifactURL": "pxmc_vmt.yaml", + "artifactUUID": "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "artifactChecksum": "ODE0YTRiYzc2YzkxOTliZjJhNjc0M2RhMWU4M2VlZmE=", + "generatedArtifact": { + "artifactInfo": { + "artifactName": "pxmc_vmt.env", + "artifactVersion": "2", + "artifactType": "HEAT_ENV", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactTimeout": "0", + "artifactURL": "pxmc_vmt.env", + "artifactUUID": "bc1640f1-69f0-4760-8fc3-3318ec2ff129", + "artifactChecksum": "MjdkYzY5ZGU0ZTlkZDlhNzI2ZGVhMjk1ODVhZTg1NTY=" + } + }, + "relatedArtifacts": [{ + "artifactInfo": { + "artifactName": "user_data_zrdm5bpxmc02vmt001.txt", + "artifactVersion": "1", + "artifactType": "HEAT_ARTIFACT", + "artifactDescription": "created from csar", + "artifactTimeout": "0", + "artifactURL": "user_data_zrdm5bpxmc02vmt001.txt", + "artifactUUID": "53acdabe-689f-45e5-8578-f1514d3529da", + "artifactChecksum": "MzJmZjgyZWYwOTBjMTg5M2ExNWZhMmMwNzc1NWY1YjQ=" + } + }] + }, + { + "artifactName": "pxmc_mmn.yaml", + "artifactVersion": "1", + "artifactType": "HEAT", + "artifactDescription": "created from csar", + "artifactTimeout": "120", + "artifactURL": "pxmc_mmn.yaml", + "artifactUUID": "b8bca13b-811f-44ab-9d27-45b842c664d8", + "artifactChecksum": "YmNiYTU5YTM4ODVhYTlhODc5NGMwNWZkZjI5MTRmNTE=", + "generatedArtifact": { + "artifactInfo": { + "artifactName": "pxmc_mmn.env", + "artifactVersion": "2", + "artifactType": "HEAT_ENV", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactTimeout": "0", + "artifactURL": "pxmc_mmn.env", + "artifactUUID": "e88ce0b9-1496-4d03-ab1d-6d8d79bfc737", + "artifactChecksum": "ZGI1NzI2Y2FmYjFhOTM2ZDYwNzg1YWRhZjBmMTk2OTQ=" + } + }, + "relatedArtifacts": [{ + "artifactInfo": { + "artifactName": "user_data_zrdm5bpxmc02mmn001.txt", + "artifactVersion": "1", + "artifactType": "HEAT_ARTIFACT", + "artifactDescription": "created from csar", + "artifactTimeout": "0", + "artifactURL": "user_data_zrdm5bpxmc02mmn001.txt", + "artifactUUID": "5bc62c72-5f7a-40bc-a167-1a4fed9afdef", + "artifactChecksum": "OTMxMjk5Mzc1YmIxMzRlYmRlZWJhMjg0MWQ4YTI1NWU=" + } + }] + }, + { + "artifactName": "pxmc_mmn.env", + "artifactVersion": "2", + "artifactType": "HEAT_ENV", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactTimeout": "0", + "artifactURL": "pxmc_mmn.env", + "artifactUUID": "e88ce0b9-1496-4d03-ab1d-6d8d79bfc737", + "artifactChecksum": "ZGI1NzI2Y2FmYjFhOTM2ZDYwNzg1YWRhZjBmMTk2OTQ=" + }, + { + "artifactName": "pxmc_vmt.env", + "artifactVersion": "2", + "artifactType": "HEAT_ENV", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactTimeout": "0", + "artifactURL": "pxmc_vmt.env", + "artifactUUID": "bc1640f1-69f0-4760-8fc3-3318ec2ff129", + "artifactChecksum": "MjdkYzY5ZGU0ZTlkZDlhNzI2ZGVhMjk1ODVhZTg1NTY=" + }, + { + "artifactName": "user_data_zrdm5bpxmc02mmn001.txt", + "artifactVersion": "1", + "artifactType": "HEAT_ARTIFACT", + "artifactDescription": "created from csar", + "artifactTimeout": "0", + "artifactURL": "user_data_zrdm5bpxmc02mmn001.txt", + "artifactUUID": "5bc62c72-5f7a-40bc-a167-1a4fed9afdef", + "artifactChecksum": "OTMxMjk5Mzc1YmIxMzRlYmRlZWJhMjg0MWQ4YTI1NWU=" + }, + { + "artifactName": "pxmc_base.yaml", + "artifactVersion": "1", + "artifactType": "HEAT", + "artifactDescription": "created from csar", + "artifactTimeout": "120", + "artifactURL": "pxmc_base.yaml", + "artifactUUID": "7e7f7356-11bd-4f2f-bbbc-5c10954e3189", + "artifactChecksum": "YThkNGFhZjAwNmM4NzMzODc0YzNhYTUxOTljNGQwNmM=", + "generatedArtifact": { + "artifactInfo": { + "artifactName": "pxmc_base.env", + "artifactVersion": "2", + "artifactType": "HEAT_ENV", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactTimeout": "0", + "artifactURL": "pxmc_base.env", + "artifactUUID": "6dd99c31-c52e-4c45-b99b-d223c877a296", + "artifactChecksum": "OGM2MWIzZTA2OTc5YjQwNTM1NGVhODA0YTFkNzM4ZTg=" + } + } + }, + { + "artifactName": "user_data_zrdm5bpxmc02vmt001.txt", + "artifactVersion": "1", + "artifactType": "HEAT_ARTIFACT", + "artifactDescription": "created from csar", + "artifactTimeout": "0", + "artifactURL": "user_data_zrdm5bpxmc02vmt001.txt", + "artifactUUID": "53acdabe-689f-45e5-8578-f1514d3529da", + "artifactChecksum": "MzJmZjgyZWYwOTBjMTg5M2ExNWZhMmMwNzc1NWY1YjQ=" + }, + { + "artifactName": "pxmc_mmn_volume.yaml", + "artifactVersion": "2", + "artifactType": "HEAT_VOL", + "artifactDescription": "created from csar", + "artifactTimeout": "120", + "artifactURL": "pxmc_mmn_volume.yaml", + "artifactUUID": "2f372a02-df1b-46ca-b81e-822e3f406965", + "artifactChecksum": "MzA5MGY5ODQ0NDY5MDhiMDM3YjFlNGIwNzJkNjFhOTI=", + "generatedArtifact": { + "artifactInfo": { + "artifactName": "pxmc_mmn_volume.env", + "artifactVersion": "2", + "artifactType": "HEAT_ENV", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactTimeout": "0", + "artifactURL": "pxmc_mmn_volume.env", + "artifactUUID": "c1ae6284-48d9-4437-a195-b2cf2ba23070", + "artifactChecksum": "NmEyZjc1Y2UwZDMwYjFhNGRlMTMzN2JhNzdiMThjMGU=" + } + } + } + ] + } + ] +} diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/user_data_zrdm5bpxmc02mmn001.txt b/asdc-controller/src/test/resources/resource-examples/multipleModules/user_data_zrdm5bpxmc02mmn001.txt new file mode 100644 index 0000000000..93a8ab9ae3 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/user_data_zrdm5bpxmc02mmn001.txt @@ -0,0 +1,412 @@ +#cloud-config +# \hbrief cloud-init main template for MSP config +# \hversion 0.0.11 +# \hdate 2016-05-09 +# \brief cloud-init template for MSP config +# \version 0.2.57 +# \date 2016-09-19 +# Configuration created for MSP SLES_12 MMN + +chpasswd: + list: | + root:Ericsson + miepadm:miep1234 + + expire: False + +users: + +bootcmd: + + - [ sh, -xc, "echo \"#################################################################\" > /etc/issue.ci" ] + - [ sh, -xc, "echo \"# #\" >> /etc/issue.ci" ] + - [ sh, -xc, "echo \"# * * * Cloud-init configuration is in progress * * * #\" >> /etc/issue.ci" ] + - [ sh, -xc, "echo \"# #\" >> /etc/issue.ci" ] + - [ sh, -xc, "echo \"# The system will reboot shortly and then be accessible #\" >> /etc/issue.ci" ] + - [ sh, -xc, "echo \"# #\" >> /etc/issue.ci" ] + - [ sh, -xc, "echo \"#################################################################\" >> /etc/issue.ci" ] + - [ sh, -xc, "if [ -f /etc/issue.orig ]; then cp /etc/issue.orig /etc/issue; fi" ] + - [ sh, -xc, "if [ ! -f /etc/issue.orig ]; then cp /etc/issue /etc/issue.orig; cp /etc/issue.ci /etc/issue; fi" ] + - [ sh, -xc, "/bin/sed -i 's/^DHCLIENT_SET_DEFAULT_ROUTE=\"yes\".*/DHCLIENT_SET_DEFAULT_ROUTE=\"no\"/' /etc/sysconfig/network/dhcp" ] + - [ sh, -xc, "/bin/sed -i 's/^NETCONFIG_DNS_POLICY=.*/NETCONFIG_DNS_POLICY=\"STATIC\"/' /etc/sysconfig/network/config" ] + +runcmd: + - [ sh, -xc, "chage -M 99999 root;rm -f /etc/shadow-" ] + - [ sh, -xc, "chage -M 99999 miepadm;rm -f /etc/shadow-" ] + - [ sh, -xc, "sed -i 's/^GRUB_TIMEOUT.*/GRUB_TIMEOUT=0/' /etc/default/grub" ] + - [ sh, -xc, "echo GRUB_FORCE_HIDDEN_MENU=true >> /etc/default/grub" ] + - [ sh, -xc, "/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg" ] + - [ sh, -xc, "sed -i 's/^.*:.*/admin:6041A28W2rLq6/' /opt/miep/tools/lighttpd/lighttpd_auth.properties" ] + - [ sh, -xc, "sed -i 's/^.*=.*/admin=709e17d2a62751a051fa2072f0976334/' /opt/miep/register/conf/auth.properties" ] + - [ sh, -xc, "sed -i 's/kernel\\.unknown_nmi_panic.*//' /etc/sysctl.conf" ] + - [ sh, -xc, "sed -i 's/kernel\\.panic_on_unrecovered_nmi.*//' /etc/sysctl.conf" ] + - [ sh, -xc, "echo \" kernel.unknown_nmi_panic=1\n kernel.panic_on_unrecovered_nmi=1\n\n\" >> /etc/sysctl.conf" ] + - [ sh, -xc, "sed -i 's/^\\(IRQBALANCE_ARGS=\\).*$/\\1\"--hintpolicy ignore\"/' /etc/sysconfig/irqbalance" ] + - [ sh, -xc, "sed -i 's/^ListenAddress.*/ListenAddress 107.112.138.70/' /etc/ssh/sshd_config" ] + - [ sh, -xc, "sed -i 's/^ClientAliveCountMax.*/ClientAliveCountMax '0'/g' /etc/ssh/sshd_config" ] + - [ sh, -xc, "sed -i 's/^PermitRootLogin.*/PermitRootLogin 'no'/g' /etc/ssh/sshd_config" ] + - [ sh, -xc, "sed -i 's/^#UseDNS.*/UseDNS 'no'/g' /etc/ssh/sshd_config" ] + - [ sh, -xc, "echo auth optional pam_faildelay.so delay=5000000 >> /etc/pam.d/sshd" ] + - [ sh, -xc, "echo trap2sink 127.0.0.1 >> /etc/snmp/snmpd.conf" ] + - [ sh, -xc, "sed -i 's/^agentaddress.*/agentaddress 107.112.138.70/' /etc/snmp/snmpd.conf" ] + - [ sh, -xc, "sed -i 's/^ IP=.*/ IP=\"107.112.138.70\"/' /opt/miep/snmp/tools/agentmonitor.sh" ] + - [ sh, -xc, "sed -i 's/^ SNMPCOMMUNITY=.*/ SNMPCOMMUNITY=\"SNOS-PE\"/' /opt/miep/snmp/tools/agentmonitor.sh" ] + - [ sh, -xc, "sed -i 's/^ IP=.*/ IP=\"107.112.138.70\"/' /opt/miep/snmp/tools/agentmonitor_sle12.sh" ] + - [ sh, -xc, "sed -i 's/^ SNMPCOMMUNITY=.*/ SNMPCOMMUNITY=\"SNOS-PE\"/' /opt/miep/snmp/tools/agentmonitor_sle12.sh" ] + - [ sh, -xc, "/sbin/yast2 dns edit nameserver1=155.165.194.100" ] + - [ sh, -xc, "/usr/sbin/wicked ifdown all; /usr/sbin/wicked ifup --timeout 60 eth0; /usr/sbin/wicked ifup --timeout 60 all" ] + - [ sh, -xc, "mkdir -p /opt/miep/tools" ] + - [ sh, -xc, "wget --directory-prefix=/opt/miep/tools http://107.112.138.71/miit/zrdm5bpxtc02/custom-files/zrdm5bpxtc02/AttMspCust.tgz" ] + - [ sh, -xc, "export TERM=vt220 ; yast keyboard set layout=english-us" ] + - [ sh, -xc, "sed -i 's/YPSAddress.*/YPSAddress\"\tvalue=\"https:\\/\\/yps.ericsson.net\\/YPServer\" \\/>/' /opt/miep/etc/license/SentinelCloudRuntime.properties" ] + + - [ sh, -xc, "umask 027 ; /opt/miep/tools/mnsetup/initmn.sh firstinstall 2>&1 | tee /opt/miep/tools/mnsetup/firstinstall.log" ] + - [ sh, -xc, "chown root:root /opt/miep/tools/AttMspCust.tgz" ] + - [ sh, -xc, "chmod 440 /opt/miep/tools/AttMspCust.tgz" ] + - [ sh, -xc, "mkdir -p /opt/miep/tools/AttMspCust" ] + - [ sh, -xc, "chown root:root /opt/miep/tools/AttMspCust" ] + - [ sh, -xc, "tar xfz /opt/miep/tools/AttMspCust.tgz -C /opt/miep/tools/AttMspCust" ] + - [ sh, -xc, "/opt/miep/tools/AttMspCust/CloudInit/cloudCron.sh 107.112.138.71" ] + - [ sh, -xc, "mkdir -p /opt/miep/etc/certs/manifest/ca/" ] + - [ sh, -xc, "chown -R miepadm:miepgrp /opt/miep/etc/certs/manifest/" ] + - [ sh, -xc, "mkdir -p /opt/miep/etc/certs/origin_server_ssl/server_cert" ] + - [ sh, -xc, "chown -R miepadm:miepgrp /opt/miep/etc/certs/origin_server_ssl/server_cert" ] + - [ sh, -xc, "sed -i 's/KexAlgorithms/#KexAlgorithms/g' /etc/ssh/sshd_config" ] + - [ sh, -xc, "wget --directory-prefix=/opt/miep/tools/AttMspCust/CloudInit/msacerts -e robots=off -r -l1 --no-parent -R '*html*' http://107.112.138.71/miit/zrdm5bpxtc02/custom-files/zrdm5bpxtc02/msacerts" ] + - [ sh, -xc, "mv /opt/miep/tools/AttMspCust/CloudInit/msacerts/107.112.138.71/miit/zrdm5bpxtc02/custom-files/zrdm5bpxtc02/msacerts/* /opt/miep/tools/AttMspCust/CloudInit/msacerts/" ] + - [ sh, -xc, "mv /opt/miep/tools/AttMspCust/CloudInit/msacerts/keystore* /opt/miep/tools/AttMspCust/CloudInit/msacerts/.keystore_`hostname`_gno" ] + - [ sh, -xc, "rm -rf /opt/miep/tools/AttMspCust/CloudInit/msacerts/107.112.138.71" ] + - [ sh, -xc, "sed -i 's/PASS_MAX_DAYS 60/PASS_MAX_DAYS 99999/' /etc/login.defs" ] + - [ sh, -xc, "sleep 61s" ] + - [ sh, -xc, "mkdir -p /usr/java/default/bin/ && ln -s /usr/bin/java /usr/java/default/bin/" ] + +timezone: 'PST8PDT' + +write_files: + - content: | + H4sIANk1vFkAA41Sy27bMBC88ysW8TViKaWNC92MAkV9KOIi+QFKWllE+RBIyo9+fZeW7DqxDHR10c4OZ3aXXEDnQgxwjrdOBWiVRmgw1F5VGECCHUyFHlx7YltpMIsuk03jMQS2gPdhZN8ruyUd5yF2CG/fNp/WGwhDFY4houEA6whkZEhNH28EhoANyAiVcxGiMvgI+w4tWAfJGwL6HXpqzCP4wVoy4zciLxaCkVrD6BkeqZXzbLW0UOHooyyVZZOGkzciD8mvebi2TU6vRxvloWQL+l9vstW4CIDvg9bZr0Fq1Spssh/TsgBeO+fjJadzLC+WXNCXT07a1VKn7V7ybcoYOYQeayU1Oe2eYVo6BlaW+exJ1e+esytwyl1fyfo3Yy0KUZbiimaRbNr2Cja1DLH32KpDKhTJ6lSgfVpHL2NCiwvq3RDpSib86YKfXhdLU2QzAS+rn2msz7A6jzXLo3WJJc/zgudPX/lSAPzxjflS9QdTi8IYK0TO97Lf7rlxFd1w3zmLnAabY85hmZPmHn5PeWS8b+2D+M7E/2xtZM5ht639w+8pjwzG/gJrL8X/3wMAAA== + path: /etc/hosts + owner: root:root + permissions: '0644' + encoding: 'gzip+base64' + - content: | + ################################################################################ + ## /etc/ntp.conf + ## + ## Sample NTP configuration file. + ## See package 'ntp-doc' for documentation, Mini-HOWTO and FAQ. + ## Copyright (c) 1998 S.u.S.E. GmbH Fuerth, Germany. + ## + ## Author: Michael Andres, <ma@suse.de> + ## Michael Skibbe, <mskibbe@suse.de> + ## + ################################################################################ + + ## + ## Radio and modem clocks by convention have addresses in the + ## form 127.127.t.u, where t is the clock type and u is a unit + ## number in the range 0-3. + ## + ## Most of these clocks require support in the form of a + ## serial port or special bus peripheral. The particular + ## device is normally specified by adding a soft link + ## /dev/device-u to the particular hardware device involved, + ## where u correspond to the unit number above. + ## + ## Generic DCF77 clock on serial port (Conrad DCF77) + ## Address: 127.127.8.u + ## Serial Port: /dev/refclock-u + ## + ## (create soft link /dev/refclock-0 to the particular ttyS?) + ## + # server 127.127.8.0 mode 5 prefer + server 135.144.38.211 prefer + server 155.165.201.253 prefer + + ## + ## Undisciplined Local Clock. This is a fake driver intended for backup + ## and when no outside source of synchronized time is available. + ## + server 127.127.1.0 # local clock (LCL) + fudge 127.127.1.0 stratum 10 # LCL is unsynchronized + + ## + ## Add external Servers using + ## # rcntp addserver <yourserver> + ## + + ## + ## Miscellaneous stuff + ## + + driftfile /var/lib/ntp/drift/ntp.drift # path for drift file + + logfile /var/log/ntp # alternate log file + # logconfig =syncstatus + sysevents + # logconfig =all + + # statsdir /tmp/ # directory for statistics files + # filegen peerstats file peerstats type day enable + # filegen loopstats file loopstats type day enable + # filegen clockstats file clockstats type day enable + + # + # Authentication stuff + # + keys /etc/ntp.keys # path for keys file + trustedkey 1 # define trusted keys + requestkey 1 # key (7) for accessing server variables + controlkey 1 + + # by default act only as a basic NTP client + restrict default kod nomodify notrap nopeer noquery + restrict -6 default kod nomodify notrap nopeer noquery + # + # allow NTP messages only from the loopback + restrict 127.0.0.1 + restrict ::1 + path: /etc/ntp.conf + owner: root:root + permissions: '0644' + - content: | + # default <OAM GW> - - + default 107.112.136.1 - - + path: /etc/sysconfig/network/routes + owner: root:root + permissions: '0644' + - content: | + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <trapDestCfg xmlns="http://www.ericsson.com/esa"> + <managerDefinition snmpVersion="v2c" active="yes"> + <ip>107.239.72.10</ip> + <port>162</port> + <securityName>v1v2ReadWriteSecName</securityName> + <securityLevel>noAuthNoPriv</securityLevel> + </managerDefinition> + <managerDefinition snmpVersion="v2c" active="yes"> + <ip>135.207.171.152</ip> + <port>162</port> + <securityName>v1v2ReadWriteSecName</securityName> + <securityLevel>noAuthNoPriv</securityLevel> + </managerDefinition> + </trapDestCfg> + path: /opt/miep/tools/AttMspCust/CloudInit/trapDestCfg.xml + owner: root:root + permissions: '0755' + - content: | + [ + { + "networkname": "OAM" + }, + { + "networkname": "Internal" + }, + { + "networkname": "Access" + }, + { + "networkname": "dmz_untrust" + }, + { + "networkname": "dmz_trust" + }, + { + "networkname": "dmz_trust1" + }, + { + "networkname": "dmz_untrust1" + }, + { + "networkname": "Internet" + }, + { + "networkname": "ControlPlaneSig" + }, + { + "networkname": "AccessIngress" + }, + { + "networkname": "InternetIngress" + } + ] + path: /opt/miep/init/networknames.json + owner: miepadm:miepgrp + permissions: '0644' + - content: | + BOOTPROTO='static' + IPADDR='107.112.138.70' + BROADCAST='107.112.143.255' + NETMASK='255.255.248.0' + NETWORK='107.112.136.0' + STARTMODE='onboot' + DEVICE='eth0' + USERCONTROL='no' + NAME='OAM' + DEFROUTE='yes' + CHECK_DUPLICATE_IP='yes' + SEND_GRATUITOUS_ARP='yes' + path: /etc/sysconfig/network/ifcfg-eth0 + owner: root:root + permissions: '0644' + - content: | + path: /etc/udev/rules.d/10-local.rules + encoding: b64 + owner: root:root + permissions: '0640' + - content: | + # + # VERSION: <Auto generated by 1.0.2.3> + # + # This file contains the variable definitions to pull RMS Input Files from the PCRF. + + # The PCRF_PRIMARY variable specifies the Primary IP the MSP should use to connect to the PCRF. + + PCRF_PRIMARY=107.122.136.120 + + # The PCRF_SECONDARY variable specifies the Secondary IP the MSP should use to connect to the PCRF. + + PCRF_SECONDARY=107.122.136.121 + + # The PCRF_USER variable specifies the user value to use when performing the secure ftp transfer. + + PCRF_USER=msp + + # The PCRF_PASS variable specifies the password value to use when performing the secure ftp transfer. + + PCRF_PASS=@TTmsp123 + + # The PCRF_DIR variable specifies the directory on the PCRF server where the RMS Input Files are located. + # This is the directory the secure ftp transfer will change to before pulling the RPM Input File. + + PCRF_DIR=/home/msp/downloads + + # The PCRF_PROMPT variable specifies the sftp prompt string that MSP can expect the PCRF server to + # display as a prompt when remotely connecting to the PCRF server using sftp. + + PCRF_PROMPT=sftp> + MSA_GROUP_NAME= + path: /appl/rms/cfg/pcrf.cfg + owner: root:root + permissions: '0755' + - content: | + # + # reserved values + # + 255 local + 254 main + 253 default + 0 unspec + # + # local + # + #1 inr.ruhep + path: /etc/iproute2/rt_tables + owner: root:root + permissions: '0644' + - content: | + ### /etc/resolv.conf file autogenerated by netconfig! + # + # Before you change this file manually, consider to define the + # static DNS configuration using the following variables in the + # /etc/sysconfig/network/config file: + # NETCONFIG_DNS_STATIC_SEARCHLIST + # NETCONFIG_DNS_STATIC_SERVERS + # NETCONFIG_DNS_FORWARDER + # or disable DNS configuration updates via netconfig by setting: + # NETCONFIG_DNS_POLICY='' + # + # See also the netconfig(8) manual page and other documentation. + # + # Note: Manual change of this file disables netconfig too, but + # may get lost when this file contains comments or empty lines + # only, the netconfig settings are same with settings in this + # file and in case of a "netconfig update -f" call. + # + ### Please remove (at least) this line when you modify the file! + nameserver 155.165.194.100 + nameserver 155.165.201.100 + search wapgw.mobilephone.net + options attempts:1 + options timeout:6 + path: /etc/resolv.conf + owner: root:root + permissions: '0644' + - content: | + MN_OAM_IPADDR=107.112.138.70 + SNMP_IPADDR=107.239.72.10 + SNMP_PORT=162 + MN_SERVER_GROUPNAME=rdm5b + STORAGE_TYPE=CINDER + SUPPORT_LANG_LIST={"en":"English"} + AUTOSTART=Y + AUTODBPATCH=Y + PRODUCT=MSP + MN_TO_OTHER_NODE_NETWORK=OAM + path: /opt/miep/tools/mnsetup/init.properties + owner: root:root + permissions: '0640' + - content: | + CAE_PASSWORD=wapwap12 + MSA_PASSWORD=wapwap12 + CAPLOG_PASSWORD=wapwap12 + TRACELOG_PASSWORD=wapwap12 + path: /opt/miep/tools/mnsetup/init.properties.sec + owner: root:root + permissions: '0640' + - content: | + 107.112.138.59 zrdm5bpxtc02adm001 zrdm5bpxtc02adm001-oam + path: /var/tmp/adm_hosts + owner: root:root + permissions: '0644' + - content: WwogewogICJwYXJlbnQiIDogInJkbTViIiwKICAiZ3JvdXBzIiA6IFsKICAgewogICAgImdyb3VwbmFtZSIgOiAienJkbTVicHh0YzAyIiwKICAgICJkaXNwbGF5bmFtZSIgOiAienJkbTVicHh0YzAyIiwKICAgICJkZXNjcmlwdGlvbiIgOiAienJkbTVicHh0YzAyIgogICB9CiAgXQogfSwKIHsKICAicGFyZW50IiA6ICJ6cmRtNWJweHRjMDIiLAogICJncm91cHMiIDogWwogICB7CiAgICAiZ3JvdXBuYW1lIiA6ICJ6cmRtNWJweHRjMDItVFMiLAogICAgImRpc3BsYXluYW1lIiA6ICJ6cmRtNWJweHRjMDItVFMiLAogICAgImRlc2NyaXB0aW9uIiA6ICJ6cmRtNWJweHRjMDItVFMiCiAgIH0KICBdCiB9Cl0K + path: /opt/miep/msaapp/apps/clusteradmin/clusters.json + encoding: b64 + owner: msausr:msagrp + permissions: '0640' + - content: | + . /opt/miep/tools/AttMspCust/CloudInit/helpers.sh + cd /opt/miep/tools/msa + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set apsLicenseCustomerId '946935' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set apsLicenseUserId 'AT&T_Customer_Test_Lab2_vMSP_Nimbus' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set prsPrefixLookupTable '2606:ae00:af00::/41=64' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set prsDiamRealm 'zrdm5bpxtc02.msp.sd' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set htsHttpClientIpRangesBlacklist '172.26.14.0/25,172.26.17.0/24,107.103.114.0/25,107.103.113.0/25,107.103.112.160/29,107.103.121.0/24,107.103.122.0/24,fd00:2600:2600:100::/64,2606:ae00:b800:3441::/64,2606:ae00:b800:3442::/64' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set attLdapPool_host '172.21.196.7' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set attLdapPool_user 'cn=virNimbusV2L,ou=Users,ou=Administration,o=Cingular' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set attLdapPool_pwd 'MSPLab' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set attLdapPool_secondhost '155.165.172.23' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set attLdapPool_seconduser 'cn=virNimbusV2L,ou=Users,ou=Administration,o=Cingular' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set attLdapPool_secondpwd 'MSPLab' + ./msaconfigctrl.sh -g zrdm5bpxtc02 -m cast set idfMspIpAddr '' + ./msaconfigctrl.sh -g zrdm5bpxtc02-TS -m cast set prsDiamMessageTimeout 16000 + ./msaconfigctrl.sh -g zrdm5bpxtc02-TS -m cast set prsDiamSlowPeerAlarmLimit 16000 + ./msaconfigctrl.sh -g zrdm5bpxtc02-TS -m cast set prsDiameterServerListenerAddressList '0.0.0.0:3868' + ./msaconfigctrl.sh -g zrdm5bpxtc02-TS -m cast set ltmi.keyServerUpdateHostList 'zrdm5bpxtc02mts001,zrdm5bpxtc02mts002' + ./msaconfigctrl.sh -g zrdm5bpxtc02-TS -m cast set omsNsIntrusionDetection 1 + ./msaconfigctrl.sh -g zrdm5bpxtc02-TS -m cast set telGroup1FTPTargetServerName zrdm5bpxtc02adm001.wapgw.mobilephone.net + $SU -s $BASH - postgres -c "psql -d msa -c \"set search_path = msa,msp; update msp.virtualgateway set externalnodeip='172.26.39.6' where servergrpid= '0' and vgindex= 'VG011'\"" + $SU -s $BASH - postgres -c "psql -d msa -c \"set search_path = msa,msp; update msp.virtualgateway set servingdestaddrranges='172.26.39.6/32' where servergrpid= '0' and vgindex= 'VG011'\"" + $SU -s $BASH - postgres -c "psql -d msa -c \"set search_path = msa,msp; update msp.virtualgateway set externalnodeip='fc00:a:a::700' where servergrpid= '0' and vgindex= 'VG013'\"" + $SU -s $BASH - postgres -c "psql -d msa -c \"set search_path = msa,msp; update msp.virtualgateway set servingdestaddrranges='fc00:a:a::700/128' where servergrpid= '0' and vgindex= 'VG013'\"" + path: /opt/miep/tools/AttMspCust/CloudInit/install_msa_zone.sh + owner: root:root + permissions: '0755' + - content: | + H4sIAJ4ywFkAA6ScTWOiyNPA7/VVclgwshMPz0EEjExAge5GuUUdNUIy2d0kvnz6f1WDCAjo5DlkNpF+Kbrr5VfV7ao/ujAb/VL2xsNGffHfp4Nw9ZfK/vr3ofv813I27mrdv7ebF6G8JY/x0uhNvG53ok+Wyu+76K+v/ifjv1QG//y34cqD4SjDKQ9/dNb3wf5pbLjvX6+92e6d/dCMhx/P64/p9u0/4y3++WPTs9XJrKd2+X77sHs6/Ibjr+G/xtu/P939X8v5z39f4rH9a6Wqm+k6Oq7DXd/V9Z3y9Luz/j+YmCrzj113sI4fuGVPuOXcGd5ve8D2KxZbrs803VN9W8QWD3hvPBn0ss/TPk+g6gFTdTZZKz+xExPcdrmyTP/24gcm3Mfsd3tiFdri3+kkIGcZ+dwyfTF6eFJ7Y4+rVqFRSYKpkpiT7ezoHPnOZbGCEsFlg8bOmmCsux8bnjY2zJ3Ddl8edzkEItKFmUxY0hsLrqRrQCKbloGfh57wbaZoK2qcDuROfJPfyb+pL5j84Ulpb9w0qLASzxfQM5jiW5NEt3isXAyWNsranF/P84TLhNILfKsH3OfuiMU9hynL6DQrEz3L47Swus5Vd8pU25yqvuUpmzFT9hNfTVae0jNpSwH31JbbZlpjXxW6r4jsoSb4cfd1+bnUA9knMHtMgJVtH664nfgr714cl8PeRzS1V2KIv1s9ZxaODtP7yOWqvmKvycfsTRxxG0dMdflUAU1nvHaxLHzHQSh6uEEiSPUAt9Do7x2DHxwjPq0Z1Deu0Qmfo4RJshLCtXjSGwq+d0i9Ad93Mh8uNyMzeZuj2M+hRSJe7ZivB+CC5MphCnOq2NFUFcwX9srHFw/47m7e2b/NAu096uyTRSfZLBQ9Wbwm28W9+zV/AW0775T0oPJKwvV44hRfiysfKz/u4bPNhKs+rALu3T0xkwZhgdob4t6v5DZZPds3zluHSvQ0VaIJvkrgmxqfqvRakQU4wZ1joJE0NKDn551KGC702FNti3ExFqblTGDbx9lrHpR3I5yqFsdXC3Ahrdy4cNLJAHqNDc4zy/eVr+sJ7xVfz1hOXWXeUZNFgnYR4R9TZb+Zbe3VMlYZRy19DtWX5dRB6c6dKwPauOA4qW5BbkyGido2O3XKG1xIZOkO7hgtuCufAXXmew+VyEMj4rRN7NKcba72nnyRrBhPGMc1Q+e8wz74OVw8yLcP38cITPxMyG3du2yhOlsH/SNa7PkZlPeca+gjNugbfFJhxxeRxaweOhRbR8l030SFM7ofqY9M28KVxmdfINyVh3aCTgYlln4iVQNQbLQHdzRV1OKCkXcqxYaJ5QoPd8pXiwpGwQryWS4Divzs5IBoMf0VU6KVbyX0me2pPY/HPUBHaqNnFqwSztIBBrKRx4/FicrSQDZbKbydPHK1c0kqMgeKcFAMcafB0oAr/SIu7NTLTD3gpJ0aWq0tyAExhRaz4iez2eUsU1QqrrhBIPQ0apPKD3Sx6IgDerQYfz4X9z4clqGrPIe9T3zn+o4VCdH1OQIn/fny+x/6gdMvbT8o4T8jU/taDvl6OdxslgNdecbfce28EVjiGE1H6yD01qNBH39+u4OX3+vnqbNevAp0gepHFPpJhJ3mB/0lCvT3aCg+l8NkOwt3659rUH7+fJEP5aiBtQxwts085J8jy/+NHc7vPein0gzdzfxlqYyGdoK/w+9ZqL1FKMEMZ32eeutlJ/lvXpRmaHVo5vmbq2Bb7CheI5QOX0W+DtDMJP7PtZTm7H1edPY89ZOnl372eqUfKY1cJ7hhIfEHlSfSmSUudIcrgMoSuxR4A4rUXMn+rjaMxRDV32L0bGsex6x/cLfYPhZwflBSaXxYREOv3iboM8gMqIqBJ8PCzxbnQWhgVQzIhnJ7obj5pORQWmdkDzXSPCDZSXNgJiQU3iZ+QhjkPqHhPFL4pzU5NSpJUB2M7aFefLMkVZMkkmohM2XHYeaOVvdi5rRhScISMsFtzFQeoLTVgOZaZMZ4h9P1O9ipNmJlEoXM9E/ACnfIkmMfF0nEexPRuBytTj5BuEVM1LmlE+WEBPPwhMjj8WXTbBTuAl9YIkDFOwUbih2ojb7gSeBDISo3eWe5E1VFyj5/UuFSTQeXSkbSlLXzHF+AVd851zYDDYjAs5q0nDy62TMCDNbgqxSZNV0MIkRcV0Xv+zUPxQFBPMHfV2xovThJr0M+EQd/n4e2upC8nQ7gg1oitkw8P+JmvvKobE53TLtVlyqgPmQuvLCVsTZhMSen4iDVVYk+myTfQcioTPcoKolYBLgbGKGsx8vZzhiQbyXuJKQwihyAKMgFRuFYmH/kbEB1qvrwh84GSkryHWcDBW+TOxvUShFizBSo0lcdDzR4nrpXwd2pQSGovF/VO7WiUYLGppCfNEUgMxkFB8PMLmS1nuohf57yJeZaHNV+B1+VB0VjQn1QvZQb0wElmA90lym2jevGw0B3gJkE4O6ECV1nmE9VYQwHMlGJCJlxIIQPlJhR/iUVDieAwgypcvnoVAi+Mavle2xojyl1mjZOAim14co7ONOIErTQQq/EoxVLcGpS822suNv46MpdQyXCbQ9Qkqm6Wcm4KesKHFV6WxKdiM3yhbefbEe78UBnI9N6QrIzR5bLsaMlDNJKPwCfC+6U39sIhB9NYl9nJmZ2qESegotWbvOMoJZaLbDuvctGOweDTRgnXo3DpW0ULPGD8GStCZo20b38HAoPSmHPnQiucZ7EdyLU3pdDEaP4ygypZnE8dca+rAtF0SglQNfuMpk2xqouDA1tw+W+2f/hZD9+rGHajL9TiolPABeF8TRRdVFhrkXqS3uBJoO52V6gyWDO9iKz/vqoTuEQKEUqGspXViao2kiWyKeD+K/JAUPB5yxUExiZ+83pj9TJnhsWZ/PjJJBZTsobw+epfVwOkX4hpHpUZPOEaiqXHdGgyHOdUqXiZGg7NXUYOVtWuCiK+lTo7A0tZTk41S3Q05YKFHLVG6wzq4xklkkZrzR7qLH75rVAq+RoK6jFpo+mzhPfRX7QuEy6Cn7BNwUlrlzWIso7gtu7TGt3aUw1kCfRVFM+fqwr5qXwgaqeWjBu+XrND7oeKFbgo8mjCwDyAaSVmc2bFasks9ZMXA+UTrpDW1hxqQ0UTdo9UrWLCnrvNrfaLDY51+5AMaWjLT+oeGwV18OyI/QLn5S0YM7FlrilkaySwNkPlMRHs61araCapOn3x0c9/VGiMTM1wD9oJyzTR7+IvkAWqxi3eDncXUSunO6glJTXhX6qeBQjeJXqoC5BPxe75f7jdloEJlMVd4LquiW6g/Mqk9+jIl/B/WuuMdOcI0+j2uVzmhQKMRIXNLYMtEQWyChFRc3RYWzMMDGrDCKlEbJOBRW3TttGVTL50NmOuu7W0dzUtZeeFdbh/wkgAyg51MtG5Z2oOwiAyklAmjIF0vv0hlnERkAlrXQuGJsyAShtZZ341f2vbj+UZu8e3e1CcbbOFyeH04BDXPkQ5y0FbeiJ33uHjhO2sfp0NNWxNdqTdgaqODNECcTw/RVfZLsCd64x6owN75hlN6aQSlPO6KTC5eshY8lJWsyzlIuHFzCGymahMq04cgUuLnKFe/IPrgD0xjj7lYZtgwLSytZ8qEjiV11ZioyYVnKqIuvCS3ozqknggoJgjBbTw8VEG2D9HS7m3knVuKkTnefkUkFVrFNcvBg00Mfzjp9klbDN/NVN5OvDRefmd8Y4wjzVRicsa3J37LUXRwHodlYm2kZV0VvKa4XtBVo4zJ9tlhbvLIcZ1TWg0rsrZy1pJkZ1ri4naBdIKaYwAhMzPLP3mJNdrK58bg1I0QonR5cHR3DJjhhUH/aTOEKSI1UfaY7R/3KQTlO9Qe91LEY2yDsdJ7H73/xexOeGTt3gyiS2ERGdNR/2jstHHTbPobdmw2QbhdoxCnSXtmyerkXaobKAuCMr96hJP+FjO8ga3pcb0nEEOVZXsGwnKB/1ZC3ClOcdsn6NvpODiu7ISo/gUOMMmbiWdUJnmEYL0yofDB77XWfrUdy0xriyPD8UvDQkcusuundqI/hR4x6FBCmFj5TWA0ajC1FeNIZUMVX9yVSxMW4UDomMLqo6xdk99ulxpvYGgNxUOLvyagbS8d0jGxGAMStZFY+uJD5BOto5y1X2UWXW4is5yDmogPjaiIsOGh3Fi9KHJbUVAhMzlA5nFrznTl4TJQqRIVVLYArJKRNCRIQJKy8crpY1FpRLIhaiZaYWedRsTFI+UNkunkPaoJykkZe+MGWqTVvR++LNV6nMzEJr+zxMPiMIdmtcSOfk3qsdL+NEhPEjcc4GCLbpGrIOlw6ATibg+6iWK8sDoCa7Bhog6CEdfLI+ujOOFsi7fGuuG0WuSkznm+mM5I2cCuGTl8JMJ0nLbHRQEkrLrBznwvXapPSRaEjhNCU69Fi4jceT8kHrjOgz0DMHpMrxbsxmKlllpS2cG5fMOw2BXI1WknAwkpNiOduu4jKTDsbUMcZbkhDqRRzdsiaY1DuqgyS2xyiM2EelpIaZy1pbWRc4zWru0E8aI1MIfuhj2PtNZ9sH90UXPu+2DN6HW8TVcAvjeZh8jsysvHjoH0YmZogxX4N7XGhUOmzsfG2BAUUZG10UmQ5IGwfqNg8E53dyj92dy2a7sRHfu0ez26xMpXotyHdHZ+Fgopp2IBxm/Q5CeXfM1vK+R12b4vnFxSBZkc9OHetMcbdrbWz095lU6L336bE2mkIAoo7cWq5yXFz3gJb7HmkllFPySiUlhy0+HIN/OGy9Rl35O/uBT/xnJ9Mj0woqGa4VWjrueXadBxNbX2y8QNjp9ZesfgVn3KFoze/Okfvq6UnK4HBTDtFWk4ErRcyt03GP3sF5kcrl1hzlQu7ecwhHein7TnPPt5RbuE8Y3cZIHwNfjMr6QO/oY9qe6QAC96zrGmaaqJ4pvp5yIbUDMxd3W0XCVspHfAZK1i0H6SQLIJEdUlS+HdahNgX4E1iHevCu4eoLUM36QA2t3wzrA539moJLTLAOEAWXQ+tz1uFV8S+OYCqLCTKA8jjxUl3XcNSrg5b6ANs2i08HIlyRA+Mu7KoDpUAPVey3rt3K0typInSPSlCS7mE5aaT7Ghx2LhcUTtuUEn1dp6NmzIc9NTq3K8VYyGHb0AZU7RmZ7hfmUOrizU7mbx4SPJ2477+iDgWc/fusIz4XHY5QgilSuCOePA1QXVByMos7qQvck4uYUn0Zmek+DJVP0NuoXnZzL8AsRh43TfJLR82Uj2oOhSIWRj/VP10BzAzNwQA0oguGtYRfugeSkXoO6sKkmguJnyBvqytOg1uicqCMSA0ZoVcBnSJVC+EX1gJS2EYvZYk4meBuECuWBzNOg9VSPqSYXxVNSubrDMMeVYXb4B1K9P7maot7r0rv7fAOZ3o/WeXlACcELodD8tz4OZRMG2G0v/ZeLUobvVno/jsLl5jtu5xS6ZSrL3JxqI46pEtDcqFSSxz4FP6PpwEqZI9SQdMA2atVK0W4daPjyJS3cwazqZuMwNI3s87HJkJjqVL7bdAOLdR+G7RDC7XfBu3QQu23QTu0UPtt0A4t1H4btEMLtd8G7dBC7bdBO7RQ+23QDg0rnEmSQntfadkpaKH226AdWqj9CrTTLqFk0ELtt0E7rDX3KO+LX1L7bdAOLdR+G7RDC7XfBu3QQu0ZU1+5vQgtt69uuw8BjbevnCNdKDO1JzVbn5p7MeQaoQjb6Nqecb+JUDQ3eEAjigLC5HKZvbQeHvJkoUq+9Q6YlCmyUxnWG2Et4ODl4lZZupHmJdHKe8iGx/dgnO/YC0dcoG/e0Gg4jXeh1Jh193VU30K0mC1yuq5gW372xQVcTE7ZDQaYnTN4yC4rVzqV+oDS/K6no+nLQYnkPqOp//7r1YLTHdIamr+teg6y5nYesXbAtlKbBw3VcTpVrQ50BvUyR7VXxK9/lQJK36W4pFqzcXdSUD9//6LQybnzMB0QBRR2jnWDe3degqYCB92b37vKYmi9RwPdeQ5dBHIEC1P9iobiv3Mif6HiaaE8luf+p/wyhfFiw7wyXl8YJw8GdK2vGc7LTramOK4ZyA/rgysvhdSAebmWX+brxB8Q1dL9qEpZvbY+vfJiUSl2m2qKy3ALfLeyN9wC363sDUze5i8W8yWQtxTBlbuoY+/oZo6sqkMRzEteuIGt4+V71DHXs9dEGT3qyeIF9GMUUnZXQ/StQJ7zOORAXjXxK0BeyDcbgdyT33JoAvJcKrgRyNFSDhmQu/OOliyHyd8zlHjege43gfzMUd8F8pw74btAnvM4fBfIcx6H7wJ5Pil8F8hL57zfAvJ8cPgukOc8Dt8F8nyBoQ3ItVuq6PBdIM/XDL4B5ONSFR2+C+SSx4m94LtAnrM2fBfIcx6H7wJ5zuPwXSDPeRy+C+Q5j+f1qAqQd68Bec7jUAvkInDYFSDPeRxksVt1DbNLVx9vB/Kcx6H7TSDPORu+C+R5W/gukOdsDU1AflFirgB5zuPwB0DO18J0vZFpbWeH7tp+0SeLR/8d0FVl4av7p9XyNILDuaTGPSqphe726aX/OjJ7O4yNH8/T9w3+92t+ca5xiubQetfllqsu0HrX5ZarLnCN7K9edQF516Wv1t91KV11cZDwCvh8MnEoNazedbnlqgtc1OmLd11uueoCrXddbrnqAq13XW656gKtd11uueoCpbsuiMe76n2Xa9dd4Op9l2vXXaD1vgvfZbGjpWoO1Tsvy5fFo/MnVXMo3nl5fA6Xm9HQfl8O9B19o3LRoW9PanHdPZjTNZhivtlyD8Y3EIf1WcfJHQv5FQnvcAO9N8E7upeuc4Qb6L0d3uFM72K0z+g991ajwWzN7nXMN9T3Xy86buHudN6bD1h3L6jx+krNN8x5BK3fMG8AtMo5TsOMzl0QavunrYkE39fcLd81MDdE1Yt1Dfx4mGw9FbX04BxxB7azXEKouTRzSxH8Tv7fOAyz48IxVloQeH89x4AUxj3FWftCsJFh7sdbMvFRZ2QJi22bB3eM8v3qBnHjOy/0P57D7vqUZ42M/7V3Js2JJEkUvr+/0hcWYdY6zEGIpZApQUACgpuEppAAqcusplqIXz8RmWRm7OER2dY2NtaHOhViJ/35889fjHZ8lWI2v2lzUQp7V3OgvMFXPPeAPWXrR8XuaOe5I2T31GZXo+Z4f8OFd5sJVPuXSf/2QtTUqvBuGoxwVaANYBXme77XOm3x3iIH1ZfZBSbtL8f5S8m37+dQlVt5oc0MHWkVtWCu5dvAuq/K9y66iyMn3m9O46/G53jeOE1u+Rv/R/7vNmulkO1eZHJf/vatF/3jPK9WVxxxkVW9oLHhWkog7STAtZTg3Em4OmcrBSm2AVC6amyMTklzhBAo/bcxa5tZa9QWmXSQoPTs6W5VvZl/uRACpRuZdIRA6UbMBSFQugFzGX0iBEo3Yi4w3Gsy73aXg+lu0e4e163j+9OKXQLfl68v35ZfOkpu2M9ysubsa7287abb4XL/tNr8WH91MdysBo2Xx7tjkNUuPAjirHbBaUec1S447SBZ7V9Jry9Z7cLfoLLaW6c/X1ZEq11w2hFntQtOO+KsdsFpR5zVLjjtiLPaBacdgVa7LtpRB1LP7gyxkHoJ3OBBSigyueVp58wpFV1bN2QfRiXbC7d40T6ebZB69uMDGVIff25W4x858S2667j+dX8ryV0FfzM8gMyi47fpgWnqc6LpZcOF12iKQ7GSWEEZz9llLhsGXC5zr8+a1X71sxwMwITAU2iEMmwB9LQFu29PccbPnbvnj/4v9nI7Se/Qysc2Nl1N6jVGrAgvWIM7Oo+R7rKYFquip+lqVp3Tm0aSrplqm3bs4rRvEqcwCO5Ob/rVHbCGfZekfe6aMsGx3i2ZXDTdOUqPnvCGTtJOdzNs/nh+6xat1C7BW3fIw0JGvS17CfZpwcTK3EMW4Xl+3I39jnq6rjaC6Eztt9jFlGnr7Wli9+7bMifWV3WzpK2vymem3gbqG2gS3yr93jP49oIvLzk9UmxiUwoaKXhrOG6k5CDkDjovwu379KZ5n/avRuy7At7Z8X/3WbuUhSFkil769smoC38/KuEOUZ1E7bQiJiRA4tFRAOmn5HxgjYgVSLfy6BCA9MaC10ULkH6r8+jsFz09TdDb0oD0ikfPn+250JWgAukqj86q8SCTTHDf0Hmnh6wAQ/PrXep+sLx9bL6WSR2ZXwtpN/GmofUP6h9pzwqKQ64tPN40RoPun8/D4/7frJKtV53XTWv5n82qUzwYojdIF8Prn0xGdsA05Ovz++Bjs2pyntoJpRuZdIRA6UYmHSFQutGGRwiU/jk2MOmQ/ujM4xiulzMLlK4x6exT2qI9+1yveOSdAUInMehwQegkBh0uCF1wRuwMOlwQetUuOBh0uCB0K4O+EDxsGBS8fkcu7Y3y3lywusn4z/T4vs+u1b0KiyeI9I/1R/csaWwIKt0n0met48d63n3jiYBbvtDwbcwEK9PVfC3C9ke6J6NlMYL709PnFvtGtg98T/MXh9OZQP31QhTssCj236b7Kacy/IIdFsWuz35nlWC/XJ3yixPKq1MsF4O6oPp31AXVE9QF1fuoC6p3UBdUl+Y4cVwM6oLqB9QF1S++vQdUv3JxMagLqj+iBqieq37UBdV34P78lcGfJ3MxqAuqP6AuqL5AXVC92M+KB9Uf4ADV2+Nev+HlYmAH1XMzw8vFQALVmY5kj3wO4mJQPt1YLqbMr54djutirS5IrMOg1sPEOgxqXdbVGoeviHUY1LpXrLNqNfj5wqo3k9MNPD1ujqPB3XHTOp5fvt3l6MpbTluQAHY41Pt0dWqwyvWLm1gv74vd4n358fQ4bmxL2pUbw3CvmBI2TBGh5mUxjwg1L38v4FHzk9S3YYoINS+LeUSoeVnMI0LNy2IeEWpeFvOIUPOymAdRzds3ShFAtZuhdgRQ7eaNUtgFOXGjFLY8GPJGKcrrvia+OzTPug4PM0377b+Sh8mGvgUPcxn8DX7yq9Dz+7JRkntv/+TD/JMP8zfmw3z+D+fD9P66fJhPo4D/P8qHCSDb//qcf3adzFjxFpls1wU8TjQFLwr4HGwfXzZNEUi2tzQBr/FRHmBdB9sRSLbrYDsCyXYdbEcOoSeqILWR7fqzgpVsT3bp8Pq85WcktZPd8v3I1N7vFdFZLosifv00G6YPr0F4FDcno+ayhq+kwgbKkDkZ2I/3oq2kJrCBMuSVVNhAGTInAxsoQ+ZkYANlyJwMbKAMmZOBDZQhczKQdlJjVlIRnAejindo6j10JRXSTmrMSiqkndSYlVSYFb3t4mJYTUU43a6spiJCzVdZMVzMI1fzCftBnfnBdNuv7uppNTs+f3Ewn2LFu3U1xYpHoJLXHxCBSl4X8ghU8vozRKCS14U8ApW8LuQRqOT1Z4tAJa8LeQQq+cqKb18+KeP8IigzBoFKXhfyUENjzm4lr98JrDuqbaIVj0Alb9pjDVPyupBHoJLXhTzKR6cpeV3II1DJZ9K4KQp5BCp59hu6k4U8qEo+tVnxcCr5JsGKR6CS12+HQCWvC/nCp6Uq+VwCjgQhj0Alrwt5FPe6W7aWb/7NUR1sl7kg1Vo7vhzXwl6acd8V4Ta74rIj3GZXXHaE2+yKyw7VZr/EiTqDHCWXHeE2u+Kyo25wY8YF1QpurPjq2ODG/NyHOsGNTE8SoBknMwMKNONkZkCBZpzMDCjQjJOZAQWacTIzsj9pgWa46n3crEZaT86FOighMk6hXvn2sbY7BKV+LG1361NO9QdEBN0uw+2IoNtluB0RdLvOmYfS7TLcrnHmBLpdhtsRQbfLD4oIul2G2325iya6XYbbEUG3y3A7+FMe74PodnM+TAjdLn1SfVjpdvYa12a6XcvJ8dLtTPHvdcVfCHp1vkmh2+XbIIJul+F2RNDtMtyOmic28bzBeic2pdXegenEpoo/10/WLtn8irc3bdCGnb/JSxtpGXbxeUr2068kTbgsSGFfgrXPfsdfV6f725sdE27jEYbHw/1bZWaSzgMRjl5+bMC5+cF+G3wLgOntAz9zsNNjOkPtQaGOHbIO55F9rItB92HBv//NriR9ivN8846HvQ+sIE+ZYuUf39RuaFaChImT9LH5MmLKdvDwxuQthB8Kl0JM3j3O+9fJTI2t0Ef5F12h5E+aD0256yd5H27eU7OsRyTzRadcHJ/ydjGVY/vZ9WHCe2/or5ldI85Xp3Fj+cQ37ycpj6qYsY58cztdJK3kvG1OUj7vyG4n991BwRFlbgRigyPKB0RscESZG1Hq6tDgCFNuc1hwRJkbYcttJkmALDcCscER5bO1zP39wRHlG4zY4IjsGfez85IigyPK3AjEBEdkP7CiA+bnHbTvq30kc+frQnug5N74GFr9hBbo3gof+LCr1t2scZxMF6fvWROXVqeHK/+HgQgKxYytUfPE6N/L+WZCim+4at7zS2Cv/zXujU7ZcZJNODbCrC3TDf/0im1aEFokZ8HJdJTojPI2kdOZ/LjMybTBrswey3WBS+WxFp7ySPLsKs36b9ae9q/n/JTtvKbCGCxlK0LZd0Lov79P2XXy+7Lx+pCqYSKm3W7jmCrPrzZkkeZnbvrbSPbSoFSg/LXzk2my8/QEr/J0lx5MuhOnhFUi9oV6Gaz23D0/NCe9pDFLl0OeqTXeJ+1xmn1C2e0o+7zBexiOnBziHgZihj9SCUDM8Eea/cD1FEl7GIgZ/kizH8QMfwx5QYHDH3nPPWT4czZ9UogZ/kizHxCGP9kPTAAquDAvpOHyAGPiiC3rQXfE9H5TFeaJt2lFHrx3PZ/z46QPg+QxsxMblyPqzf8nFR7U7PQWDQTvMV/WmEcFS4XAEcxgnpxllgoLU8qEKcaif/fKbebFcLB/ag0+NvPLIhz80RWeAgT9NAm5EfP4D4MuLJWoZEMmfHJQXLVN/ReMVJZclcqilH9HlJ4LRdMlAxOlN7vlgSKZxWpEo9kbD8O24GHK3pctJd4j42kNFanTzU78k6doUt8lzXFS1kuyH1N7tvyDW0msXu7O4/6iOTvcsT5qfR6fFx3+JcpuZ7qGqLnNNifUboSC6ITajVAQnVC7EQqiE2o3Qp38AynmA0Qn1G6EguiE2t9QEJ1Qu38JohOaGaHGmA8QnVC7EWrkH9qGa6cYdPvzuRgAsEoGU8CtMsdxAVeDPOffnvZnOvbmTj1HjM/mHthF9hv7+XbTQU6rZS5Pzs/p/ycVIn6drBORx/us2Ii80m4EIW1DCNs462EboPZWVggL9BOCLYUIZuGx9TmC1UeKSEew6ssQ6QjeiudfUBzBKvhWmzTi1uoIjpjK350sjqDMkcY4gtVLLuc4gY6gsJcU6QhWhiAiHUF1jhPuCFalwezL+R3Bqi8jnadmcATN3GCII1gZgoh0BC35UQGOYPVSEeEIbqVPCpGOYGUIItIR5EzM8/Cz9KNIjqAFF5Zyel3VywTgZZc6dX8zvHqhKl+R1QtV+YqsXmiEZEUJ1au12OdRHwh3BpX9RbSualYt2NrlA7VqQXyzoqoWoudYRdUCdY5lrVoQ33l9jsVEaNNTtVDayLFVC8IvMa5qIXqOVVQtRM+x1OtkfNVC9ByrqB+InmOZ+eqYqoXoOZalXkRULUTNsQ7CJ4XoOVZRtRA9xyqqFkLmWMaqpcx5XVWrY65acl5xTNWC2HRFVS2ITVdU1WJ9VjOyal0CDqPmWVJsFoJzs1S3EJRIH6dbCN0uDHQLYS9zRLcQul3ocQurdazcLYRuFwZmi0G3CwPdQuivOdAthH/k4HELEc1N2vxJOjdZuIXwFRuvW4hobrJwCy38Q4BbiGhusni2iOYm7ftZVG6SP+NJ78Z+fjfZLUQMNym5hdDtQoJbKFLfhjxzd+wwexN30owLxslIyIwLpiFX0IwLpiFX0IwLwpBrHRMY8AVCYIA7qh3GrPaQqHb4Bl56pIVSwQzzzcAKBt/Ay1vB4Bt4eedd8A28TPMuKc4evoGXt4LBN/DyVjD4Bl7eCoboXPuigrlzFykVDNG59kUFQ3SufVHBEJ1rr9XNaPKflD/prGCIzrWX5npRufbFHSE617546fANvLwVDL6Bl6P3ysN34D3eytd7wTfw8vZeMFuGAb0XzJZhm957QWq+mt50eb33QtF8Uc7UM1YumJovX++VsXRF5QIN1XBULtBQDUflAg3VcFQumJoveu+VlDxMjcoFGqrhqFygoRqOyoWaJ7I09PMvgiuXyg2GVy7UPJHl+B01T2RJl6h5IkvBgcSfyPLWRc0TWaRz7S+ohqNNNlYunbcPrVxV7kFs5YLQfOXHmTggQ2P/BfeZioT+CyGQobH/QghkaOy/YGvAhP5r5+y/YIMMx+krrf+CsQHb/Nh+zJp5/zXYPw2PvzbzT8vcC3Rcw3xyD/flqLiGcOUWixLouIZl7pVzYiRcwzL3ynMwhMHXsYhSNS+G63MvFIOvlhfXsMy9QMc1Si9fnnuBjmtYLsCg4xqWuRfouIZl7uXg7YkH/4KOa1D4BzeuYZl7gY5rWOZeoOMalrkX6LiGZe5l5mHywVfapxz869w7IB38CzquYZl75dcHefAln6bu672gNV8nP2wo9V6IgQ2l2gJT8xXUe4GOa3TMvRe8g68vT++FqOwLMfoCsYtd5SeIfHbZCl7sKgsSYhe7yr0uiRMLWewq+zIph3NhijaxLHaVrRXUgBBSPohYmBC72FXudSF2sUvbx4k+YMegqwMP2Omh7gE7S9Q9YCc7t7rWATuE/W5fPLdlnkU/YGeAugfsFOepORe7Ws54bkrf7Y7nhtykuRa7pqvTz2qxq9zrkq4PymKXFL50OVlA3z6G1XMyhIgYt49BXz+2bB8LHEhk1h6MNxIbM7X8Cf/3L/wXSFgwha/GAAA= + path: /opt/miep/etc/license/Cloud_Entitlement.combine + owner: msausr:msagrp + permissions: '0755' + encoding: 'gzip+base64' + - content: | + *.* @135.207.171.57:1538 + *.* @155.165.162.48:1532 + path: /etc/rsyslog.d/remote.conf + owner: root:root + permissions: '0600' + +scripts_per_once: + +power_state: + mode: reboot + message: Server will reboot now + timeout: 5 diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/user_data_zrdm5bpxmc02vmt001.txt b/asdc-controller/src/test/resources/resource-examples/multipleModules/user_data_zrdm5bpxmc02vmt001.txt new file mode 100644 index 0000000000..4c8f7c06ea --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/user_data_zrdm5bpxmc02vmt001.txt @@ -0,0 +1,289 @@ +#cloud-config +# \hbrief cloud-init main template for MSP config +# \hversion 0.0.11 +# \hdate 2016-05-09 +# \brief cloud-init template for MSP config +# \version 0.2.57 +# \date 2016-09-19 +# Configuration created for MSP SLES_12 VMT + +chpasswd: + list: | + root:Ericsson + miepadm:miep1234 + + expire: False + +users: + +bootcmd: + + - [ sh, -xc, "echo \"#################################################################\" > /etc/issue.ci" ] + - [ sh, -xc, "echo \"# #\" >> /etc/issue.ci" ] + - [ sh, -xc, "echo \"# * * * Cloud-init configuration is in progress * * * #\" >> /etc/issue.ci" ] + - [ sh, -xc, "echo \"# #\" >> /etc/issue.ci" ] + - [ sh, -xc, "echo \"# The system will reboot shortly and then be accessible #\" >> /etc/issue.ci" ] + - [ sh, -xc, "echo \"# #\" >> /etc/issue.ci" ] + - [ sh, -xc, "echo \"#################################################################\" >> /etc/issue.ci" ] + - [ sh, -xc, "if [ -f /etc/issue.orig ]; then cp /etc/issue.orig /etc/issue; fi" ] + - [ sh, -xc, "if [ ! -f /etc/issue.orig ]; then cp /etc/issue /etc/issue.orig; cp /etc/issue.ci /etc/issue; fi" ] + - [ sh, -xc, "/bin/sed -i 's/^DHCLIENT_SET_DEFAULT_ROUTE=\"yes\".*/DHCLIENT_SET_DEFAULT_ROUTE=\"no\"/' /etc/sysconfig/network/dhcp" ] + - [ sh, -xc, "/bin/sed -i 's/^NETCONFIG_DNS_POLICY=.*/NETCONFIG_DNS_POLICY=\"STATIC\"/' /etc/sysconfig/network/config" ] + +runcmd: + - [ sh, -xc, "chage -M 99999 root;rm -f /etc/shadow-" ] + - [ sh, -xc, "chage -M 99999 miepadm;rm -f /etc/shadow-" ] + - [ sh, -xc, "sed -i 's/^ListenAddress.*/ListenAddress 107.112.138.71/' /etc/ssh/sshd_config" ] + - [ sh, -xc, "sed -i 's/^ClientAliveCountMax.*/ClientAliveCountMax 300/g' /etc/ssh/sshd_config" ] + - [ sh, -xc, "sed -i 's/^ClientAliveInterval.*/ClientAliveInterval 10/g' /etc/ssh/sshd_config" ] + - [ sh, -xc, "sed -i '/PermitRootLogin/d' /etc/ssh/sshd_config" ] + - [ sh, -xc, "echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config" ] + - [ sh, -xc, "sed -i '/KexAlgorithms/s/^/# /' /etc/ssh/sshd_config" ] + - [ sh, -xc, "mkdir /opt/miep/tools/miit/www/sles" ] + - [ sh, -xc, "rm -f /etc/sysconfig/network/ifcfg-eth1" ] + - [ sh, -xc, "mkdir /shared_nfs_datastore" ] + - [ sh, -xc, "mount -t ext4 /dev/vdb /shared_nfs_datastore" ] + - [ sh, -xc, "mkdir -p /shared_nfs_datastore/miit" ] + - [ sh, -xc, "cp -pr /opt/miep/tools/miit/* /shared_nfs_datastore/miit" ] + - [ sh, -xc, "rm -rf /opt/miep/tools/miit" ] + - [ sh, -xc, "rm -f /etc/udev/rules.d/70-persistent-net.rules" ] + - [ sh, -xc, "ln -s /shared_nfs_datastore/miit /opt/miep/tools/miit" ] + - [ sh, -xc, "chown -R miepadm:miepgrp /shared_nfs_datastore/miit" ] + - [ sh, -xc, "chown -R miepadm:miepgrp /opt/miep/tools/miit" ] + - [ sh, -xc, "mkdir -p /opt/miep/tools/miit/www/sles" ] + - [ sh, -xc, "mount -o loop /shared_nfs_datastore/SLE-12-SP1-Server-DVD-x86_64-GM-DVD1.iso /opt/miep/tools/miit/www/sles" ] + - [ sh, -xc, "/usr/bin/zypper ar /opt/miep/tools/miit/www/sles nfsrpms" ] + - [ sh, -xc, "/usr/bin/zypper lr" ] + - [ sh, -xc, "/usr/bin/zypper --non-interactive install -y nfs-kernel-server" ] + - [ sh, -xc, "/usr/bin/zypper --non-interactive install -y expect" ] + - [ sh, -xc, "/usr/bin/zypper --non-interactive install -y dos2unix" ] + - [ sh, -xc, "echo '//shared_nfs_datastore 107.112.136.0/21(rw,no_root_squash,sync,subtree_check)' >> /etc/exports" ] + - [ sh, -xc, "echo '/dev/vdb /shared_nfs_datastore ext4 acl 1 1' >> /etc/fstab" ] + - [ sh, -xc, "echo '@reboot /var/tmp/hostnamefix.sh > /var/tmp/hostnamefix.log' | /usr/bin/crontab -u root -" ] + - [ sh, -xc, "systemctl enable nfsserver.service" ] + - [ sh, -xc, "systemctl enable rpcbind.service" ] + - [ sh, -xc, "systemctl enable apache2.service" ] + - [ sh, -xc, "chkconfig mount_sles on" ] + - [ sh, -xc, "resize2fs /dev/vdb 200G" ] + - [ sh, -xc, "sed -i 's/PASS_MAX_DAYS 60/PASS_MAX_DAYS 99999/' /etc/login.defs" ] + - [ sh, -xc, "sleep 61s" ] + - [ sh, -xc, "su - miepadm -c \"ssh-keygen -t rsa -q -N '' -f ~/.ssh/id_rsa\"" ] + +timezone: 'PST8PDT' + +write_files: + - content: | + H4sIANk1vFkAA41Sy27bMBC88ysW8TViKaWNC92MAkV9KOIi+QFKWllE+RBIyo9+fZeW7DqxDHR10c4OZ3aXXEDnQgxwjrdOBWiVRmgw1F5VGECCHUyFHlx7YltpMIsuk03jMQS2gPdhZN8ruyUd5yF2CG/fNp/WGwhDFY4houEA6whkZEhNH28EhoANyAiVcxGiMvgI+w4tWAfJGwL6HXpqzCP4wVoy4zciLxaCkVrD6BkeqZXzbLW0UOHooyyVZZOGkzciD8mvebi2TU6vRxvloWQL+l9vstW4CIDvg9bZr0Fq1Spssh/TsgBeO+fjJadzLC+WXNCXT07a1VKn7V7ybcoYOYQeayU1Oe2eYVo6BlaW+exJ1e+esytwyl1fyfo3Yy0KUZbiimaRbNr2Cja1DLH32KpDKhTJ6lSgfVpHL2NCiwvq3RDpSib86YKfXhdLU2QzAS+rn2msz7A6jzXLo3WJJc/zgudPX/lSAPzxjflS9QdTi8IYK0TO97Lf7rlxFd1w3zmLnAabY85hmZPmHn5PeWS8b+2D+M7E/2xtZM5ht639w+8pjwzG/gJrL8X/3wMAAA== + path: /etc/hosts + owner: root:root + permissions: '0644' + encoding: 'gzip+base64' + - content: | + ################################################################################ + ## /etc/ntp.conf + ## + ## Sample NTP configuration file. + ## See package 'ntp-doc' for documentation, Mini-HOWTO and FAQ. + ## Copyright (c) 1998 S.u.S.E. GmbH Fuerth, Germany. + ## + ## Author: Michael Andres, <ma@suse.de> + ## Michael Skibbe, <mskibbe@suse.de> + ## + ################################################################################ + + ## + ## Radio and modem clocks by convention have addresses in the + ## form 127.127.t.u, where t is the clock type and u is a unit + ## number in the range 0-3. + ## + ## Most of these clocks require support in the form of a + ## serial port or special bus peripheral. The particular + ## device is normally specified by adding a soft link + ## /dev/device-u to the particular hardware device involved, + ## where u correspond to the unit number above. + ## + ## Generic DCF77 clock on serial port (Conrad DCF77) + ## Address: 127.127.8.u + ## Serial Port: /dev/refclock-u + ## + ## (create soft link /dev/refclock-0 to the particular ttyS?) + ## + # server 127.127.8.0 mode 5 prefer + server 135.144.38.211 prefer + server 155.165.201.253 prefer + + ## + ## Undisciplined Local Clock. This is a fake driver intended for backup + ## and when no outside source of synchronized time is available. + ## + server 127.127.1.0 # local clock (LCL) + fudge 127.127.1.0 stratum 10 # LCL is unsynchronized + + ## + ## Add external Servers using + ## # rcntp addserver <yourserver> + ## + + ## + ## Miscellaneous stuff + ## + + driftfile /var/lib/ntp/drift/ntp.drift # path for drift file + + logfile /var/log/ntp # alternate log file + # logconfig =syncstatus + sysevents + # logconfig =all + + # statsdir /tmp/ # directory for statistics files + # filegen peerstats file peerstats type day enable + # filegen loopstats file loopstats type day enable + # filegen clockstats file clockstats type day enable + + # + # Authentication stuff + # + keys /etc/ntp.keys # path for keys file + trustedkey 1 # define trusted keys + requestkey 1 # key (7) for accessing server variables + controlkey 1 + + # by default act only as a basic NTP client + restrict default kod nomodify notrap nopeer noquery + restrict -6 default kod nomodify notrap nopeer noquery + # + # allow NTP messages only from the loopback + restrict 127.0.0.1 + restrict ::1 + path: /etc/ntp.conf + owner: root:root + permissions: '0640' + - content: | + default 107.112.136.1 - - + path: /etc/sysconfig/network/routes + owner: root:root + permissions: '0644' + - content: | + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <trapDestCfg xmlns="http://www.ericsson.com/esa"> + <managerDefinition snmpVersion="v2c" active="yes"> + <ip>107.239.72.10</ip> + <port>162</port> + <securityName>v1v2ReadWriteSecName</securityName> + <securityLevel>noAuthNoPriv</securityLevel> + </managerDefinition> + <managerDefinition snmpVersion="v2c" active="yes"> + <ip>135.207.171.152</ip> + <port>162</port> + <securityName>v1v2ReadWriteSecName</securityName> + <securityLevel>noAuthNoPriv</securityLevel> + </managerDefinition> + </trapDestCfg> + path: /opt/miep/tools/AttMspCust/CloudInit/trapDestCfg.xml + owner: root:root + permissions: '0755' + - content: | + BOOTPROTO='static' + IPADDR='107.112.138.71' + BROADCAST='107.112.143.255' + NETMASK='255.255.248.0' + NETWORK='107.112.136.0' + STARTMODE='onboot' + DEVICE='eth0' + USERCONTROL='no' + NAME='OAM' + DEFROUTE='yes' + CHECK_DUPLICATE_IP='yes' + SEND_GRATUITOUS_ARP='yes' + path: /etc/sysconfig/network/ifcfg-eth0 + owner: root:root + permissions: '0644' + - content: | + path: /etc/udev/rules.d/10-local.rules + encoding: b64 + owner: root:root + permissions: '0640' + - content: | + #!/bin/bash + ### BEGIN INIT INFO + # Provides: mount_sles + # Required-Start: network + # Required-Stop: network + # Should-Start: + # Should-Stop: + # Default-Start: 3 5 + # Default-Stop: 0 1 2 6 + # Short-Description: Mount SLES iso file + ### END INIT INFO + echo Mount SLES ISO image + mount -o loop /shared_nfs_datastore/SLE-12-SP1-Server-DVD-x86_64-GM-DVD1.iso /opt/miep/tools/miit/www/sles + path: /etc/init.d/mount_sles + owner: root:root + permissions: '0755' + - content: | + grep -qs preserve_hostname /etc/cloud/cloud.cfg + if [ $? -eq 0 ] ; then + sed -i 's/preserve_hostname: .*/preserve_hostname: true/' /etc/cloud/cloud.cfg + fi + + /bin/hostname | grep -qs novalocal + if [ $? -eq 0 ] ; then + newHostname=$(/bin/hostname | sed -e 's/.novalocal//') + hostnamectl set-hostname $newHostname + fi + /usr/bin/crontab -u root -l | grep -v hostnamefix.sh | /usr/bin/crontab -u root - + path: /var/tmp/hostnamefix.sh + owner: root:root + permissions: '0755' + - content: | + ### /etc/resolv.conf file autogenerated by netconfig! + # + # Before you change this file manually, consider to define the + # static DNS configuration using the following variables in the + # /etc/sysconfig/network/config file: + # NETCONFIG_DNS_STATIC_SEARCHLIST + # NETCONFIG_DNS_STATIC_SERVERS + # NETCONFIG_DNS_FORWARDER + # or disable DNS configuration updates via netconfig by setting: + # NETCONFIG_DNS_POLICY='' + # + # See also the netconfig(8) manual page and other documentation. + # + # Note: Manual change of this file disables netconfig too, but + # may get lost when this file contains comments or empty lines + # only, the netconfig settings are same with settings in this + # file and in case of a "netconfig update -f" call. + # + ### Please remove (at least) this line when you modify the file! + nameserver 155.165.194.100 + nameserver 155.165.201.100 + search wapgw.mobilephone.net + options attempts:1 + options timeout:6 + path: /etc/resolv.conf + owner: root:root + permissions: '0644' + - content: | + *.* @135.207.171.57:1538 + *.* @155.165.162.48:1532 + path: /etc/rsyslog.d/remote.conf + owner: root:root + permissions: '0600' + - content: | + H4sIANjbQlkAA5WUUW/aMBSF3/0rjqKgtEyUlodNYmonSulaCQqCqnsYE0kTByyCHcWGjAH/fU5CWqJB1PEC5J6c+/n42qTb/37/2O1cG1I5aindGXXnE9tzFIX1qbKoeJV1rfJQ6VVGln0RiKlBCHVnwmMyDJz12TnZpP9R0/qxsswr0xpzC8ieGqmT3YR5ZeDmBuZm329HdoRkLdtJyzejvTGMavJJa4xP4YsIK+8VujxPK5ojZX25u722PR+12XYa0TARbZ14DmsTRowrmJ93VlaRMyei3oT7cqKhHKlERG1CmI+fML+hxiku8QtfoWaUEwAFnLw54AkquaVAfzOppEFoIGki14qJZH9oOU5jZ9mnzTNPONxLKOAEgXB1gB4SYwj/LQMwCTPvaID4jByJr+oe5vd0P4LPAirXUtFFdR9jKtGlAnYgRHh5IkfjWJDj+oIxNa7HcTyuS93DsHE62gJpEetUvGWv5NITIVTDSLhUSozSeSsu3JeSRivm6m3b/wDPntEI2YDul91yFVvRJpz0G2e6q96Z848vtDMc9ofNA3u9h56I+fE1FmTLMFtdyjwctG8fn+7egaPQfWV6ZEpxoyXnehI0b8nMH+PN3UtpD0QF1tag1X7oNN5ZndDRhcbHWf8PNrcvhT0Q5bBlZ+el9wy9D5IJns9OQQ8jUYx+5KLE19bHFnURKn0uaFjvjQZfLq4mz/1+d1TFFtmFFO9f2OKfK8IgO5DCDUnIX5FnXVGsBQAA + path: /opt/miep/tools/miit/vmtTools/statusCheck.sh + owner: miepadm:miepgrp + permissions: '0755' + encoding: 'gzip+base64' + - content: | + H4sIAKm9hFkAA9VWbW/aMBD+3PyKUxSUrVPiUama1CmdEOsLEqxodPvSVmAlBqwmcRQfUKj632c7EKCMDrVVtX6AxM69PM/d2XfNi7N27fI8sInIkCScZQSFiKV65UjGCV7qlW31eczaFIdKcExzgklGHMmRpTRhtpUzOYoxsFNxkuciV/JMUp5KpHFMkYs0sPs0lkrSAt6HK/BmYDtVG27gK+CQpRYAsHAowNZGOwxHGfySdMCOfFLu+HIIVwunN3BVQ2x12uFIYkbDWyV8Y4MxdMcRqhYw5VGvFyqBU11ddodCogxKGm6x4RobzYuz00bzJLDLz57UGLxeRJGB+6mSVKLK1KucV1qVjtvzYzEovJ90aqXy79alp9ZPKlnQ52thOXijsFAjV1/KBc4BFGgsS3uNuMxiOv3w0bo3a/AUh2t0narjXqcuQLFrG3a9I9AJPT4G575ZFNUDMa86FA/Ww6pJVR3brO5gcxlhbdaaibQIhDEJyW3Ec/Ay+GtFTyaTZeESHSSReLq45XL7+ZokkTRkOUpLBTJUEDbOCnE2wv4CdzrVMtO2fBzM5kXkfAMvZfB5pYpWQq8KbBNBJJhMXdQlok5AUZIQRi9ApvgjzeFu3J+9Gj/wSVud0EbK8flUuYRUIFAY05hHBqT2qjgvLjGmr7B5DKxtadz3dZ5fpVJ2YQJ2q1MD49IY2szYOnqYp3ALdp4iy0Na/W/xPw0/FwJD+i7B37KpQpSz/XeJ3lnvnc/nsCv0xw53KnuFfigmKXg/QWOjUXKkn4N8l56glRMRaeUvh4c7KRgqtlNAsSGABZott1JHaULRzEORZDFDFsGE4xDYfHoyPXpPPR5PUZiP9FX1b3NyFIZMyv4ojqdFWED3SmWwsWLQdEyrZPDInaFiPK4NJOr3otawuMOJMqQcl/1aDUvd+sWP08YZHByTiI1JqtAXfmFvOQrNCfB0oGctEKnWBMWbSgYTytH3i4En3Mz3sqGQeixGkcGBOc2+M4n1/sC/S+LXoLbkolkWrVB1QjVPd8OyW4NqaPN4d/UXFX49yz0x7kAZhR5SHoNX3Sra07I668XfW54I1TXX5rLHVWf9AdB7+rd1DAAA + path: /opt/miep/tools/miit/vmtTools/siteSetup.sh + owner: miepadm:miepgrp + permissions: '0755' + encoding: 'gzip+base64' + +scripts_per_once: + +power_state: + mode: reboot + message: Server will reboot now + timeout: 5 diff --git a/asdc-controller/src/test/resources/resource-examples/multipleModules/vfzrdm5bpxmc02092017vf0_modules.json b/asdc-controller/src/test/resources/resource-examples/multipleModules/vfzrdm5bpxmc02092017vf0_modules.json new file mode 100644 index 0000000000..c8a8508190 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/multipleModules/vfzrdm5bpxmc02092017vf0_modules.json @@ -0,0 +1,75 @@ +[ + { + "vfModuleModelName": "VfZrdm5bpxmc02092017Vf..pxmc_base..module-0", + "vfModuleModelInvariantUUID": "f7a867f2-596b-4f4a-a128-421e825a6190", + "vfModuleModelVersion": "1", + "vfModuleModelUUID": "eb5de6fb-9ecf-4009-b922-fae3a9ae7d46", + "vfModuleModelCustomizationUUID": "074c64d0-7e13-4bcc-8bdb-ea922331102d", + "isBase": true, + "artifacts": [ + "7e7f7356-11bd-4f2f-bbbc-5c10954e3189", + "6dd99c31-c52e-4c45-b99b-d223c877a296" + ], + "properties": { + "min_vf_module_instances": "1", + "vf_module_label": "pxmc_base", + "max_vf_module_instances": "1", + "vfc_list": "", + "vf_module_description": "", + "vf_module_type": "Base", + "availability_zone_count": "", + "volume_group": "false", + "initial_count": "1" + } + }, + { + "vfModuleModelName": "VfZrdm5bpxmc02092017Vf..pxmc_vmt..module-1", + "vfModuleModelInvariantUUID": "1e099992-6222-41a9-acde-5a8abb690775", + "vfModuleModelVersion": "1", + "vfModuleModelUUID": "4d4423e2-17e8-455a-b9ae-7e4ab71b9cdc", + "vfModuleModelCustomizationUUID": "5336a98e-0966-4e59-b6e6-c8162804a024", + "isBase": false, + "artifacts": [ + "ad12ab80-5419-4346-a5d7-dac2fc15575f", + "53acdabe-689f-45e5-8578-f1514d3529da", + "bc1640f1-69f0-4760-8fc3-3318ec2ff129" + ], + "properties": { + "min_vf_module_instances": "0", + "vf_module_label": "pxmc_vmt", + "max_vf_module_instances": "", + "vfc_list": "", + "vf_module_description": "", + "vf_module_type": "Expansion", + "availability_zone_count": "", + "volume_group": "false", + "initial_count": "0" + } + }, + { + "vfModuleModelName": "VfZrdm5bpxmc02092017Vf..pxmc_mmn..module-2", + "vfModuleModelInvariantUUID": "8e53c069-b2f0-437a-9c00-21cbc5c8f081", + "vfModuleModelVersion": "1", + "vfModuleModelUUID": "a8cb1182-9b6d-46f8-b06b-ded4fe69e10d", + "vfModuleModelCustomizationUUID": "e38906fa-717c-49b0-b391-e6ec12b50c4a", + "isBase": false, + "artifacts": [ + "2f372a02-df1b-46ca-b81e-822e3f406965", + "5bc62c72-5f7a-40bc-a167-1a4fed9afdef", + "b8bca13b-811f-44ab-9d27-45b842c664d8", + "c1ae6284-48d9-4437-a195-b2cf2ba23070", + "e88ce0b9-1496-4d03-ab1d-6d8d79bfc737" + ], + "properties": { + "min_vf_module_instances": "0", + "vf_module_label": "pxmc_mmn", + "max_vf_module_instances": "", + "vfc_list": "", + "vf_module_description": "", + "vf_module_type": "Expansion", + "availability_zone_count": "", + "volume_group": "true", + "initial_count": "0" + } + } +]
\ No newline at end of file diff --git a/asdc-controller/src/test/resources/schema.sql b/asdc-controller/src/test/resources/schema.sql new file mode 100644 index 0000000000..f8f32b7005 --- /dev/null +++ b/asdc-controller/src/test/resources/schema.sql @@ -0,0 +1,1039 @@ + +--------START Catalog DB SCHEMA -------- +use catalogdb; + +create table `allotted_resource` ( + `model_uuid` varchar(200) not null, + `model_invariant_uuid` varchar(200) not null, + `model_version` varchar(20) not null, + `model_name` varchar(200) not null, + `tosca_node_type` varchar(200) default null, + `subcategory` varchar(200) default null, + `description` varchar(1200) default null, + `creation_timestamp` datetime not null default current_timestamp, + primary key (`model_uuid`) +) engine=innodb default charset=latin1; + + + + +create table `allotted_resource_customization` ( + `model_customization_uuid` varchar(200) not null, + `model_instance_name` varchar(200) not null, + `providing_service_model_uuid` varchar(200) default null, + `providing_service_model_invariant_uuid` varchar(200) default null, + `providing_service_model_name` varchar(200) default null, + `target_network_role` varchar(200) default null, + `nf_type` varchar(200) default null, + `nf_role` varchar(200) default null, + `nf_function` varchar(200) default null, + `nf_naming_code` varchar(200) default null, + `min_instances` int(11) default null, + `max_instances` int(11) default null, + `ar_model_uuid` varchar(200) not null, + `creation_timestamp` datetime not null default current_timestamp, + primary key (`model_customization_uuid`), + key `fk_allotted_resource_customization__allotted_resource1_idx` (`ar_model_uuid`), + constraint `fk_allotted_resource_customization__allotted_resource1` foreign key (`ar_model_uuid`) references `allotted_resource` (`model_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1; + + + + +create table `heat_environment` ( + `artifact_uuid` varchar(200) not null, + `name` varchar(100) not null, + `version` varchar(20) not null, + `description` varchar(1200) default null, + `body` longtext not null, + `artifact_checksum` varchar(200) not null default 'manual record', + `creation_timestamp` datetime not null default current_timestamp, + primary key (`artifact_uuid`) +) engine=innodb default charset=latin1; + + + +create table `heat_files` ( + `artifact_uuid` varchar(200) not null, + `name` varchar(200) not null, + `version` varchar(20) not null, + `description` varchar(1200) default null, + `body` longtext not null, + `artifact_checksum` varchar(200) not null default 'manual record', + `creation_timestamp` datetime not null default current_timestamp, + primary key (`artifact_uuid`) +) engine=innodb default charset=latin1; + + + + +create table `heat_template` ( + `artifact_uuid` varchar(200) not null, + `name` varchar(200) not null, + `version` varchar(20) not null, + `description` varchar(1200) default null, + `body` longtext not null, + `timeout_minutes` int(11) default null, + `artifact_checksum` varchar(200) not null default 'manual record', + `creation_timestamp` datetime not null default current_timestamp, + primary key (`artifact_uuid`) +) engine=innodb default charset=latin1; + + + +create table `heat_nested_template` ( + `parent_heat_template_uuid` varchar(200) not null, + `child_heat_template_uuid` varchar(200) not null, + `provider_resource_file` varchar(100) default null, + primary key (`parent_heat_template_uuid`,`child_heat_template_uuid`), + key `fk_heat_nested_template__heat_template2_idx` (`child_heat_template_uuid`), + constraint `fk_heat_nested_template__child_heat_temp_uuid__heat_template1` foreign key (`child_heat_template_uuid`) references `heat_template` (`artifact_uuid`) on delete cascade on update cascade, + constraint `fk_heat_nested_template__parent_heat_temp_uuid__heat_template1` foreign key (`parent_heat_template_uuid`) references `heat_template` (`artifact_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1; + + + + +create table `heat_template_params` ( + `heat_template_artifact_uuid` varchar(200) not null, + `param_name` varchar(100) not null, + `is_required` bit(1) not null, + `param_type` varchar(20) default null, + `param_alias` varchar(45) default null, + primary key (`heat_template_artifact_uuid`,`param_name`), + constraint `fk_heat_template_params__heat_template1` foreign key (`heat_template_artifact_uuid`) references `heat_template` (`artifact_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1; + + + +create table `network_recipe` ( + `id` int(11) not null auto_increment, + `model_name` varchar(20) not null, + `action` varchar(50) not null, + `description` varchar(1200) default null, + `orchestration_uri` varchar(256) not null, + `network_param_xsd` varchar(2048) default null, + `recipe_timeout` int(11) default null, + `service_type` varchar(45) default null, + `creation_timestamp` datetime not null default current_timestamp, + `version_str` varchar(20) not null, + primary key (`id`), + unique key `uk_rl4f296i0p8lyokxveaiwkayi` (`model_name`,`action`,`version_str`) +) engine=innodb auto_increment=178 default charset=latin1; + + + + +create table `temp_network_heat_template_lookup` ( + `network_resource_model_name` varchar(200) not null, + `heat_template_artifact_uuid` varchar(200) not null, + `aic_version_min` varchar(20) not null, + `aic_version_max` varchar(20) default null, + primary key (`network_resource_model_name`), + key `fk_temp_network_heat_template_lookup__heat_template1_idx` (`heat_template_artifact_uuid`), + constraint `fk_temp_network_heat_template_lookup__heat_template1` foreign key (`heat_template_artifact_uuid`) references `heat_template` (`artifact_uuid`) on delete no action on update cascade +) engine=innodb default charset=latin1; + + + +create table `network_resource` ( + `model_uuid` varchar(200) not null, + `model_name` varchar(200) not null, + `model_invariant_uuid` varchar(200) default null, + `description` varchar(1200) default null, + `heat_template_artifact_uuid` varchar(200) not null, + `neutron_network_type` varchar(20) default null, + `model_version` varchar(20) default null, + `tosca_node_type` varchar(200) default null, + `aic_version_min` varchar(20) not null, + `aic_version_max` varchar(20) default null, + `orchestration_mode` varchar(20) default 'heat', + `resource_category` varchar(20) default null, + `resource_sub_category` varchar(20) default null, + `creation_timestamp` datetime not null default current_timestamp, + primary key (`model_uuid`), + key `fk_network_resource__temp_network_heat_template_lookup1_idx` (`model_name`), + key `fk_network_resource__heat_template1_idx` (`heat_template_artifact_uuid`), + constraint `fk_network_resource__heat_template1` foreign key (`heat_template_artifact_uuid`) references `heat_template` (`artifact_uuid`) on delete no action on update cascade, + constraint `fk_network_resource__temp_network_heat_template_lookup__mod_nm1` foreign key (`model_name`) references `temp_network_heat_template_lookup` (`network_resource_model_name`) on delete no action on update no action +) engine=innodb default charset=latin1; + + + + + +create table `network_resource_customization` ( + `model_customization_uuid` varchar(200) not null, + `model_instance_name` varchar(200) not null, + `network_technology` varchar(45) default null, + `network_type` varchar(45) default null, + `network_role` varchar(200) default null, + `network_scope` varchar(45) default null, + `creation_timestamp` datetime not null default current_timestamp, + `network_resource_model_uuid` varchar(200) not null, + primary key (`model_customization_uuid`), + key `fk_network_resource_customization__network_resource1_idx` (`network_resource_model_uuid`), + constraint `fk_network_resource_customization__network_resource1` foreign key (`network_resource_model_uuid`) references `network_resource` (`model_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1; + + + + + +create table `tosca_csar` ( + `artifact_uuid` varchar(200) not null, + `name` varchar(200) not null, + `version` varchar(20) not null, + `description` varchar(1200) default null, + `artifact_checksum` varchar(200) not null, + `url` varchar(200) not null, + `creation_timestamp` datetime not null default current_timestamp, + primary key (`artifact_uuid`) +) engine=innodb default charset=latin1; + + + + +create table `service` ( + `model_uuid` varchar(200) not null, + `model_name` varchar(200) not null, + `model_invariant_uuid` varchar(200) not null, + `model_version` varchar(20) not null, + `description` varchar(1200) default null, + `creation_timestamp` datetime not null default current_timestamp, + `tosca_csar_artifact_uuid` varchar(200) default null, + `service_type` varchar(200) default null, + `service_role` varchar(200) default null, + `environment_context` varchar(200) default null, + `workload_context` varchar(200) default null, + `service_category` varchar(200) default null, + primary key (`model_uuid`), + key `fk_service__tosca_csar1_idx` (`tosca_csar_artifact_uuid`), + constraint `fk_service__tosca_csar1` foreign key (`tosca_csar_artifact_uuid`) references `tosca_csar` (`artifact_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1; + + + +create table `service_recipe` ( + `id` int(11) not null auto_increment, + `action` varchar(50) not null, + `version_str` varchar(20) default null, + `description` varchar(1200) default null, + `orchestration_uri` varchar(256) not null, + `service_param_xsd` varchar(2048) default null, + `recipe_timeout` int(11) default null, + `service_timeout_interim` int(11) default null, + `creation_timestamp` datetime not null default current_timestamp, + `service_model_uuid` varchar(200) not null, + primary key (`id`), + unique key `uk_7fav5dkux2v8g9d2i5ymudlgc` (`service_model_uuid`,`action`), + key `fk_service_recipe__service1_idx` (`service_model_uuid`), + constraint `fk_service_recipe__service1` foreign key (`service_model_uuid`) references `service` (`model_uuid`) on delete cascade on update cascade +) engine=innodb auto_increment=86 default charset=latin1; + + + +create table `vnf_resource` ( + `orchestration_mode` varchar(20) not null default 'heat', + `description` varchar(1200) default null, + `creation_timestamp` datetime not null default current_timestamp, + `model_uuid` varchar(200) not null, + `aic_version_min` varchar(20) default null, + `aic_version_max` varchar(20) default null, + `model_invariant_uuid` varchar(200) default null, + `model_version` varchar(20) not null, + `model_name` varchar(200) default null, + `tosca_node_type` varchar(200) default null, + `resource_category` varchar(200) default null, + `resource_sub_category` varchar(200) default null, + `heat_template_artifact_uuid` varchar(200) default null, + primary key (`model_uuid`), + key `fk_vnf_resource__heat_template1` (`heat_template_artifact_uuid`), + constraint `fk_vnf_resource__heat_template1` foreign key (`heat_template_artifact_uuid`) references `heat_template` (`artifact_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1; + + + + +create table `vf_module` ( + `model_uuid` varchar(200) not null, + `model_invariant_uuid` varchar(200) default null, + `model_version` varchar(20) not null, + `model_name` varchar(200) not null, + `description` varchar(1200) default null, + `is_base` int(11) not null, + `heat_template_artifact_uuid` varchar(200) default null, + `vol_heat_template_artifact_uuid` varchar(200) default null, + `creation_timestamp` datetime not null default current_timestamp, + `vnf_resource_model_uuid` varchar(200) not null, + primary key (`model_uuid`,`vnf_resource_model_uuid`), + key `fk_vf_module__vnf_resource1_idx` (`vnf_resource_model_uuid`), + key `fk_vf_module__heat_template_art_uuid__heat_template1_idx` (`heat_template_artifact_uuid`), + key `fk_vf_module__vol_heat_template_art_uuid__heat_template2_idx` (`vol_heat_template_artifact_uuid`), + constraint `fk_vf_module__heat_template_art_uuid__heat_template1` foreign key (`heat_template_artifact_uuid`) references `heat_template` (`artifact_uuid`) on delete cascade on update cascade, + constraint `fk_vf_module__vnf_resource1` foreign key (`vnf_resource_model_uuid`) references `vnf_resource` (`model_uuid`) on delete cascade on update cascade, + constraint `fk_vf_module__vol_heat_template_art_uuid__heat_template2` foreign key (`vol_heat_template_artifact_uuid`) references `heat_template` (`artifact_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1; + + + +/*!40101 set @saved_cs_client = @@character_set_client */; +/*!40101 set character_set_client = utf8 */; +create table `vf_module_customization` ( + `model_customization_uuid` varchar(200) not null, + `label` varchar(200) default null, + `initial_count` int(11) default '0', + `min_instances` int(11) default '0', + `max_instances` int(11) default null, + `availability_zone_count` int(11) default null, + `heat_environment_artifact_uuid` varchar(200) default null, + `vol_environment_artifact_uuid` varchar(200) default null, + `creation_timestamp` datetime not null default current_timestamp, + `vf_module_model_uuid` varchar(200) not null, + primary key (`model_customization_uuid`), + key `fk_vf_module_customization__vf_module1_idx` (`vf_module_model_uuid`), + key `fk_vf_module_customization__heat_env__heat_environment1_idx` (`heat_environment_artifact_uuid`), + key `fk_vf_module_customization__vol_env__heat_environment2_idx` (`vol_environment_artifact_uuid`), + constraint `fk_vf_module_customization__heat_env__heat_environment1` foreign key (`heat_environment_artifact_uuid`) references `heat_environment` (`artifact_uuid`) on delete cascade on update cascade, + constraint `fk_vf_module_customization__vf_module1` foreign key (`vf_module_model_uuid`) references `vf_module` (`model_uuid`) on delete cascade on update cascade, + constraint `fk_vf_module_customization__vol_env__heat_environment2` foreign key (`vol_environment_artifact_uuid`) references `heat_environment` (`artifact_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1; +/*!40101 set character_set_client = @saved_cs_client */; + +-- +-- table structure for table `vf_module_to_heat_files` +-- + + +/*!40101 set @saved_cs_client = @@character_set_client */; +/*!40101 set character_set_client = utf8 */; +create table `vf_module_to_heat_files` ( + `vf_module_model_uuid` varchar(200) not null, + `heat_files_artifact_uuid` varchar(200) not null, + primary key (`vf_module_model_uuid`,`heat_files_artifact_uuid`), + key `fk_vf_module_to_heat_files__heat_files__artifact_uuid1_idx` (`heat_files_artifact_uuid`), + constraint `fk_vf_module_to_heat_files__heat_files__artifact_uuid1` foreign key (`heat_files_artifact_uuid`) references `heat_files` (`artifact_uuid`) on delete cascade on update cascade, + constraint `fk_vf_module_to_heat_files__vf_module__model_uuid1` foreign key (`vf_module_model_uuid`) references `vf_module` (`model_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1 comment='il fait ce qu''il dit'; +/*!40101 set character_set_client = @saved_cs_client */; + +-- +-- table structure for table `vnf_components` +-- + + +/*!40101 set @saved_cs_client = @@character_set_client */; +/*!40101 set character_set_client = utf8 */; +create table `vnf_components` ( + `vnf_id` int(11) not null, + `component_type` varchar(20) not null, + `heat_template_id` int(11) default null, + `heat_environment_id` int(11) default null, + `creation_timestamp` datetime not null default current_timestamp, + primary key (`vnf_id`,`component_type`) +) engine=innodb default charset=latin1; +/*!40101 set character_set_client = @saved_cs_client */; + +-- +-- table structure for table `vnf_components_recipe` +-- + + + +create table `vnf_components_recipe` ( + `id` int(11) not null auto_increment, + `vnf_type` varchar(200) default null, + `vnf_component_type` varchar(45) not null, + `action` varchar(50) not null, + `service_type` varchar(45) default null, + `version` varchar(20) not null, + `description` varchar(1200) default null, + `orchestration_uri` varchar(256) not null, + `vnf_component_param_xsd` varchar(2048) default null, + `recipe_timeout` int(11) default null, + `creation_timestamp` datetime default current_timestamp, + `vf_module_model_uuid` varchar(200) default null, + primary key (`id`), + unique key `uk_4dpdwddaaclhc11wxsb7h59ma` (`vf_module_model_uuid`,`vnf_component_type`,`action`,`version`) +) engine=innodb auto_increment=26 default charset=latin1; + + + + +create table `vnf_recipe` ( + `id` int(11) not null auto_increment, + `vnf_type` varchar(200) default null, + `action` varchar(50) not null, + `service_type` varchar(45) default null, + `version_str` varchar(20) not null, + `description` varchar(1200) default null, + `orchestration_uri` varchar(256) not null, + `vnf_param_xsd` varchar(2048) default null, + `recipe_timeout` int(11) default null, + `creation_timestamp` datetime default current_timestamp, + `vf_module_id` varchar(100) default null, + primary key (`id`), + unique key `uk_f3tvqau498vrifq3cr8qnigkr` (`vf_module_id`,`action`,`version_str`) +) engine=innodb auto_increment=10006 default charset=latin1; + + + + + + + + +create table `vnf_resource_customization` ( + `model_customization_uuid` varchar(200) not null, + `model_instance_name` varchar(200) not null, + `min_instances` int(11) default null, + `max_instances` int(11) default null, + `availability_zone_max_count` int(11) default null, + `nf_type` varchar(200) default null, + `nf_role` varchar(200) default null, + `nf_function` varchar(200) default null, + `nf_naming_code` varchar(200) default null, + `creation_timestamp` datetime not null default current_timestamp, + `vnf_resource_model_uuid` varchar(200) not null, + `multi_stage_design` varchar(20) default null, + primary key (`model_customization_uuid`), + key `fk_vnf_resource_customization__vnf_resource1_idx` (`vnf_resource_model_uuid`), + constraint `fk_vnf_resource_customization__vnf_resource1` foreign key (`vnf_resource_model_uuid`) references `vnf_resource` (`model_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1; + + + + +create table `vnf_res_custom_to_vf_module_custom` ( + `vnf_resource_cust_model_customization_uuid` varchar(200) not null, + `vf_module_cust_model_customization_uuid` varchar(200) not null, + `creation_timestamp` datetime not null default current_timestamp, + primary key (`vnf_resource_cust_model_customization_uuid`,`vf_module_cust_model_customization_uuid`), + key `fk_vnf_res_custom_to_vf_module_custom__vf_module_customizat_idx` (`vf_module_cust_model_customization_uuid`), + constraint `fk_vnf_res_custom_to_vf_module_custom__vf_module_customization1` foreign key (`vf_module_cust_model_customization_uuid`) references `vf_module_customization` (`model_customization_uuid`) on delete cascade on update cascade, + constraint `fk_vnf_res_custom_to_vf_module_custom__vnf_resource_customiza1` foreign key (`vnf_resource_cust_model_customization_uuid`) references `vnf_resource_customization` (`model_customization_uuid`) on delete cascade on update cascade +) engine=innodb default charset=latin1; + + +create table if not exists external_service_to_internal_model_mapping ( +id int(11) not null auto_increment, +service_name varchar(200) not null, +product_flavor varchar(200) null, +subscription_service_type varchar(200) not null, +service_model_uuid varchar(200) not null, +primary key (id), +unique index uk_external_service_to_internal_model_mapping +(service_name asc, product_flavor asc, service_model_uuid asc)); + +create table if not exists `collection_resource` ( + model_uuid varchar(200) not null, + model_name varchar(200) not null, + model_invariant_uuid varchar(200) not null, + model_version varchar(20) not null, + tosca_node_type varchar(200) not null, + description varchar(200), + creation_timestamp datetime not null default current_timestamp, + primary key (`model_uuid`) +)engine=innodb default charset=latin1; + +create table if not exists `collection_resource_customization` ( + model_customization_uuid varchar(200) not null, + model_instance_name varchar(200) not null, + role varchar(200) NULL, + object_type varchar(200) not null, + function varchar(200) NULL, + collection_resource_type varchar(200) NULL, + creation_timestamp datetime not null default current_timestamp, + cr_model_uuid varchar(200) not null, + primary key (`model_customization_uuid`) +)engine=innodb default charset=latin1; + +create table if not exists `instance_group` ( + model_uuid varchar(200) not null, + model_name varchar(200) not null, + model_invariant_uuid varchar(200) not null, + model_version varchar(20) not null, + tosca_node_type varchar(200) NULL, + role varchar(200) not null, + object_type varchar(200) not null, + creation_timestamp datetime not null default current_timestamp, + cr_model_uuid varchar(200) NULL, + instance_group_type varchar(200) not null, + primary key (`model_uuid`) +)engine=innodb default charset=latin1; + +create table if not exists `collection_resource_instance_group_customization` ( + `collection_resource_customization_model_uuid` varchar(200) not null, + `instance_group_model_uuid` varchar(200) not null, + `function` varchar(200) null, + `description` varchar(1200) null, + `subinterface_network_quantity` int(11) null, + `creation_timestamp` datetime not null default current_timestamp, + primary key (`collection_resource_customization_model_uuid`, `instance_group_model_uuid`), + index `fk_collection_resource_instance_group_customization__instan_idx` (`instance_group_model_uuid` asc), + constraint `fk_collection_resource_instance_group_customization__collecti1` + foreign key (`collection_resource_customization_model_uuid`) + references `collection_resource_customization` (`model_customization_uuid`) + on delete cascade + on update cascade, + constraint `fk_collection_resource_instance_group_customization__instance1` + foreign key (`instance_group_model_uuid`) + references `instance_group` (`model_uuid`) + on delete cascade + on update cascade) +engine = innodb +default character set = latin1; + +create table if not exists `vnfc_instance_group_customization` ( + `vnf_resource_customization_model_uuid` varchar(200) not null, + `instance_group_model_uuid` varchar(200) not null, + `function` varchar(200) null, + `description` varchar(1200) null, + `creation_timestamp` datetime not null default current_timestamp, + primary key (`vnf_resource_customization_model_uuid`, `instance_group_model_uuid`), + index `fk_vnfc_instance_group_customization__instance_group1_idx` (`instance_group_model_uuid` asc), + constraint `fk_vnfc_instance_group_customization__vnf_resource_customizat1` + foreign key (`vnf_resource_customization_model_uuid`) + references `vnf_resource_customization` (`model_customization_uuid`) + on delete cascade + on update cascade, + constraint `fk_vnfc_instance_group_customization__instance_group1` + foreign key (`instance_group_model_uuid`) + references `instance_group` (`model_uuid`) + on delete cascade + on update cascade) +engine = innodb +default character set = latin1; + + create table if not exists `configuration` + ( `model_uuid` varchar(200) not null, + `model_invariant_uuid` varchar(200) not null, + `model_version` varchar(20) not null, + `model_name` varchar(200) not null, + `tosca_node_type` varchar(200) not null, + `description` varchar(1200) null, + `creation_timestamp` datetime not null default current_timestamp, + primary key (`model_uuid`)) + engine = innodb auto_increment = 20654 + default character set = latin1; + + create table if not exists `service_proxy` ( + `model_uuid` varchar(200) not null, + `model_invariant_uuid` varchar(200) not null, + `model_version` varchar(20) not null, + `model_name` varchar(200) not null, + `description` varchar(1200) null, + `creation_timestamp` datetime not null default current_timestamp, + primary key (`model_uuid`)) + engine = innodb auto_increment = 20654 + default character set = latin1; + +create table if not exists `service_proxy_customization` ( +`model_customization_uuid` varchar(200) not null, +`model_instance_name` varchar(200) not null, +`tosca_node_type` varchar(200) not null, +`source_service_model_uuid` varchar(200) not null, +`creation_timestamp` datetime not null default current_timestamp, +`service_proxy_model_uuid` varchar(200) not null, +primary key (`model_customization_uuid`), +index `fk_service_proxy_customization__service_proxy1_idx` (`service_proxy_model_uuid` asc), +index `fk_service_proxy_customization__service1_idx` (`source_service_model_uuid` asc), +constraint`fk_spr_customization__service_proxy_resource1` +foreign key (`service_proxy_model_uuid`) references `service_proxy` (`model_uuid`) +on delete cascade on update cascade, +constraint `fk_service_proxy_resource_customization__service1` +foreign key (`source_service_model_uuid`) references `service` +(`model_uuid`) on delete cascade on update cascade) +engine = innodb +auto_increment = 20654 +default character set = latin1; + +create table if not exists `configuration_customization` ( +`model_customization_uuid` varchar(200) not null, +`model_instance_name` varchar(200) not null, +`configuration_type` varchar(200) null, +`configuration_role` varchar(200) null, +`configuration_function` varchar(200) null, +`creation_timestamp` datetime not null default current_timestamp, +`configuration_model_uuid` varchar(200) not null, +`service_proxy_customization_model_customization_uuid` varchar(200) null, +`configuration_customization_model_customization_uuid` varchar(200) null, +primary key (`model_customization_uuid`), +index `fk_configuration_customization__configuration_idx` (`configuration_model_uuid` asc), +index `fk_configuration_customization__service_proxy_customization_idx` +(`service_proxy_customization_model_customization_uuid` asc), +index `fk_configuration_customization__configuration_customization_idx` +(`configuration_customization_model_customization_uuid` asc), +constraint `fk_configuration_resource_customization__configuration_resour1` +foreign key (`configuration_model_uuid`) references `configuration` (`model_uuid`) +on delete cascade on update cascade, +constraint `fk_configuration_customization__service_proxy_customization1` foreign +key (`service_proxy_customization_model_customization_uuid`) references +`service_proxy_customization` (`model_customization_uuid`) +on delete cascade on update cascade, constraint +`fk_configuration_customization__configuration_customization1` foreign +key (`configuration_customization_model_customization_uuid`) references +`configuration_customization` (`model_customization_uuid`) +on delete cascade on update cascade) +engine = innodb +auto_increment =20654 +default character set = latin1; + + +create table `service_proxy_customization_to_service` ( + `service_model_uuid` varchar(200) not null, + `resource_model_customization_uuid` varchar(200) not null, + primary key (`service_model_uuid`,`resource_model_customization_uuid`) +)engine=innodb default charset=latin1; + + +create table `configuration_customization_to_service` ( + `service_model_uuid` varchar(200) not null, + `resource_model_customization_uuid` varchar(200) not null, + primary key (`service_model_uuid`,`resource_model_customization_uuid`) +)engine=innodb default charset=latin1; + + +create table if not exists `collection_resource_customization_to_service` ( + `service_model_uuid` varchar(200) not null, + `resource_model_customization_uuid` varchar(200) not null, + primary key (`service_model_uuid`,`resource_model_customization_uuid`) +)engine=innodb default charset=latin1; + + +create table `network_resource_customization_to_service` ( + `service_model_uuid` varchar(200) not null, + `resource_model_customization_uuid` varchar(200) not null, + primary key (`service_model_uuid`,`resource_model_customization_uuid`) +)engine=innodb default charset=latin1; + +create table `vnf_resource_customization_to_service` ( + `service_model_uuid` varchar(200) not null, + `resource_model_customization_uuid` varchar(200) not null, + primary key (`service_model_uuid`,`resource_model_customization_uuid`) +)engine=innodb default charset=latin1; + +create table `allotted_resource_customization_to_service` ( + `service_model_uuid` varchar(200) not null, + `resource_model_customization_uuid` varchar(200) not null, + primary key (`service_model_uuid`,`resource_model_customization_uuid`) +)engine=innodb default charset=latin1; + + + + +create table ar_recipe ( + ID INT(11) not null auto_increment, + MODEL_NAME VARCHAR(200) NOT NULL, + `ACTION` VARCHAR(200) NOT NULL, + VERSION_STR VARCHAR(200) NOT NULL, + SERVICE_TYPE VARCHAR(200), + DESCRIPTION VARCHAR(200), + ORCHESTRATION_URI VARCHAR(200) NOT NULL, + AR_PARAM_XSD VARCHAR(200), + RECIPE_TIMEOUT INT(10), + CREATION_TIMESTAMP DATETIME NOT NULL default current_timestamp, + primary key (ID), + unique key `uk_ar_recipe` (`model_name`,`action`,`version_str`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +alter table collection_resource_customization +add foreign key ( cr_model_uuid) +references collection_resource(model_uuid) +on delete cascade; + +alter table vnf_resource_customization +add column +instance_group_model_uuid varchar(200); + +alter table network_resource_customization +add column +instance_group_model_uuid varchar(200); + + +alter table network_resource_customization +add foreign key ( instance_group_model_uuid) +references instance_group(model_uuid) +on delete cascade; + +alter table collection_resource_customization_to_service +add foreign key (service_model_uuid) +references service(model_uuid) +on delete cascade; + +alter table allotted_resource_customization_to_service +add foreign key (service_model_uuid) +references service(model_uuid) +on delete cascade; + + +alter table vnf_resource_customization_to_service +add foreign key (service_model_uuid) +references service(model_uuid) +on delete cascade; + + +alter table network_resource_customization_to_service +add foreign key (service_model_uuid) +references service(model_uuid) +on delete cascade; + + +alter table network_resource_customization_to_service +add foreign key (resource_model_customization_uuid) +references network_resource_customization(model_customization_uuid) +on delete cascade; + +alter table vnf_resource_customization_to_service +add foreign key (resource_model_customization_uuid) +references vnf_resource_customization(model_customization_uuid) +on delete cascade; + +alter table allotted_resource_customization_to_service +add foreign key (resource_model_customization_uuid) +references allotted_resource_customization(model_customization_uuid) +on delete cascade; + +alter table collection_resource_customization_to_service +add foreign key (resource_model_customization_uuid) +references collection_resource_customization(model_customization_uuid) +on delete cascade; + + +create table if not exists `collection_network_resource_customization` ( +`model_customization_uuid` varchar(200) not null, +`model_instance_name` varchar(200) not null, +`network_technology` varchar(45) null, +`network_type` varchar(45) null, +`network_role` varchar(200) null, +`network_scope` varchar(45) null, +`creation_timestamp` datetime not null default current_timestamp, +`network_resource_model_uuid` varchar(200) not null, `instance_group_model_uuid` varchar(200) null, +`crc_model_customization_uuid` varchar(200) not null, primary key +(`model_customization_uuid`, `crc_model_customization_uuid`), +index `fk_collection_net_resource_customization__network_resource1_idx` +(`network_resource_model_uuid` asc), index +`fk_collection_net_resource_customization__instance_group1_idx` +(`instance_group_model_uuid` asc), index +`fk_col_net_res_customization__collection_res_customization_idx` +(`crc_model_customization_uuid` asc), constraint +`fk_collection_net_resource_customization__network_resource10` foreign +key (`network_resource_model_uuid`) references +`network_resource` (`model_uuid`) on delete cascade on +update cascade, constraint +`fk_collection_net_resource_customization__instance_group10` foreign key +(`instance_group_model_uuid`) references `instance_group` +(`model_uuid`) on delete cascade on update cascade, constraint +`fk_collection_network_resource_customization__collection_reso1` foreign +key (`crc_model_customization_uuid`) references +`collection_resource_customization` +(`model_customization_uuid`) on delete cascade on update cascade) engine += innodb default character set = latin1; + +CREATE TABLE IF NOT EXISTS `rainy_day_handler_macro` ( +`id` INT(11) NOT NULL AUTO_INCREMENT, +`FLOW_NAME` VARCHAR(200) NOT NULL, +`SERVICE_TYPE` VARCHAR(200) NOT NULL, +`VNF_TYPE` VARCHAR(200) NOT NULL, +`ERROR_CODE` VARCHAR(200) NOT NULL, +`WORK_STEP` VARCHAR(200) NOT NULL, +`POLICY` VARCHAR(200) NOT NULL, +PRIMARY KEY (`id`)) +ENGINE = InnoDB +DEFAULT CHARACTER SET = latin1; + +CREATE TABLE IF NOT EXISTS `northbound_request_ref_lookup` ( +`id` INT(11) NOT NULL AUTO_INCREMENT, +`REQUEST_SCOPE` VARCHAR(200) NOT NULL, +`ACTION` VARCHAR(200) NOT NULL, +`MACRO_ACTION` VARCHAR(200) NOT NULL, +`IS_ALACARTE` TINYINT(1) NOT NULL DEFAULT 0, +`IS_TOPLEVELFLOW` TINYINT(1) NOT NULL DEFAULT 0, +`MIN_API_VERSION` DOUBLE NOT NULL, +`MAX_API_VERSION` DOUBLE NULL, +PRIMARY KEY (`id`), +UNIQUE INDEX `UK_northbound_request_ref_lookup` (`MIN_API_VERSION` ASC, `REQUEST_SCOPE` ASC, `ACTION` ASC, `IS_ALACARTE` ASC)) +ENGINE = InnoDB +DEFAULT CHARACTER SET = latin1; + +CREATE TABLE IF NOT EXISTS `orchestration_flow_reference` ( +`id` INT(11) NOT NULL AUTO_INCREMENT, +`COMPOSITE_ACTION` VARCHAR(200) NOT NULL, +`SEQ_NO` INT(11) NOT NULL, +`FLOW_NAME` VARCHAR(200) NOT NULL, +`FLOW_VERSION` DOUBLE NOT NULL, +`NB_REQ_REF_LOOKUP_ID` INT(11) NOT NULL, +PRIMARY KEY (`id`), +INDEX `fk_orchestration_flow_reference__northbound_req_ref_look_idx` (`NB_REQ_REF_LOOKUP_ID` ASC), +UNIQUE INDEX `UK_orchestration_flow_reference` (`COMPOSITE_ACTION` ASC, `FLOW_NAME` ASC, `SEQ_NO` ASC, `NB_REQ_REF_LOOKUP_ID` ASC), +CONSTRAINT `fk_orchestration_flow_reference__northbound_request_ref_look1` +FOREIGN KEY (`NB_REQ_REF_LOOKUP_ID`) REFERENCES `northbound_request_ref_lookup` (`id`) +ON DELETE CASCADE ON UPDATE CASCADE) +ENGINE = InnoDB DEFAULT CHARACTER SET = latin1; + +--------START Request DB SCHEMA -------- +CREATE DATABASE requestdb; +USE requestdb; + + +CREATE TABLE `active_requests` ( + `REQUEST_ID` varchar(45) NOT NULL, + `CLIENT_REQUEST_ID` varchar(45) DEFAULT NULL, + `SERVICE_INSTANCE_ID` varchar(50) NOT NULL, + `SUBSCRIBER_NAME` varchar(200) DEFAULT NULL, + `REQUEST_URI` varchar(255) DEFAULT NULL, + `SERVICE_TYPE` varchar(65) NOT NULL, + `REQUEST_ACTION` varchar(45) NOT NULL, + `NOTIFICATION_URL` varchar(255) DEFAULT NULL, + `REQUEST_ID_IN_PROGRESS` varchar(45) DEFAULT NULL, + `START_TIME` datetime DEFAULT NULL, + `MODIFY_TIME` datetime DEFAULT NULL, + `COMPLETION_TIME` datetime DEFAULT NULL, + `RESPONSE_CODE` varchar(20) DEFAULT NULL, + `RESPONSE_BODY` longtext, + `STATUS` varchar(25) DEFAULT NULL, + `SERVICE_REQUEST_TIMEOUT` datetime DEFAULT NULL, + `FINAL_ERROR_CODE` varchar(20) DEFAULT NULL, + `FINAL_ERROR_MESSAGE` varchar(2000) DEFAULT NULL, + `ORDER_NUMBER` varchar(45) DEFAULT NULL, + `SOURCE` varchar(20) DEFAULT NULL, + `RESPONSE_STATUS` varchar(25) DEFAULT NULL, + `ORDER_VERSION` varchar(20) DEFAULT NULL, + `LAST_MODIFIED_BY` varchar(20) DEFAULT NULL, + `MOCARS_TICKET_NUM` varchar(200) DEFAULT NULL, + `REQUEST_BODY` longtext, + `REQUEST_SUB_ACTION` varchar(45) DEFAULT NULL, + `SDNC_CALLBACK_BPEL_URL` varchar(255) DEFAULT NULL, + `FEATURE_TYPE` varchar(255) DEFAULT NULL, + `FEATURE_INSTANCE_ID` varchar(255) DEFAULT NULL, + `REQUEST_TYPE` varchar(255) DEFAULT NULL, + `INTERIM_COMPLETION_TIME` datetime DEFAULT NULL, + `INTERIM_STAGE_COMPLETION` int(11) DEFAULT NULL, + `SERVICE_NAME_VERSION_ID` varchar(50) DEFAULT NULL, + `GLOBAL_SUBSCRIBER_ID` varchar(255) DEFAULT NULL, + `SERVICE_ID` varchar(50) DEFAULT NULL, + `SERVICE_VERSION` varchar(10) DEFAULT NULL, + `CORRELATOR` varchar(50) DEFAULT NULL, + PRIMARY KEY (`REQUEST_ID`), + UNIQUE KEY `UK_f0hdk7xbw5mb2trnxx0fvlh3x` (`CLIENT_REQUEST_ID`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE `infra_active_requests` ( + `REQUEST_ID` varchar(45) NOT NULL, + `CLIENT_REQUEST_ID` varchar(45) DEFAULT NULL, + `ACTION` varchar(45) DEFAULT NULL, + `REQUEST_STATUS` varchar(20) DEFAULT NULL, + `STATUS_MESSAGE` longtext DEFAULT NULL, + `PROGRESS` bigint(20) DEFAULT NULL, + `START_TIME` datetime DEFAULT NULL, + `END_TIME` datetime DEFAULT NULL, + `SOURCE` varchar(45) DEFAULT NULL, + `VNF_ID` varchar(45) DEFAULT NULL, + `VNF_NAME` varchar(80) DEFAULT NULL, + `VNF_TYPE` varchar(200) DEFAULT NULL, + `SERVICE_TYPE` varchar(45) DEFAULT NULL, + `AIC_NODE_CLLI` varchar(11) DEFAULT NULL, + `TENANT_ID` varchar(45) DEFAULT NULL, + `PROV_STATUS` varchar(20) DEFAULT NULL, + `VNF_PARAMS` longtext, + `VNF_OUTPUTS` longtext, + `REQUEST_BODY` longtext, + `RESPONSE_BODY` longtext, + `LAST_MODIFIED_BY` varchar(100) DEFAULT NULL, + `MODIFY_TIME` datetime DEFAULT NULL, + `REQUEST_TYPE` varchar(20) DEFAULT NULL, + `VOLUME_GROUP_ID` varchar(45) DEFAULT NULL, + `VOLUME_GROUP_NAME` varchar(45) DEFAULT NULL, + `VF_MODULE_ID` varchar(45) DEFAULT NULL, + `VF_MODULE_NAME` varchar(200) DEFAULT NULL, + `VF_MODULE_MODEL_NAME` varchar(200) DEFAULT NULL, + `AAI_SERVICE_ID` varchar(50) DEFAULT NULL, + `AIC_CLOUD_REGION` varchar(11) DEFAULT NULL, + `CALLBACK_URL` varchar(200) DEFAULT NULL, + `CORRELATOR` varchar(80) DEFAULT NULL, + `NETWORK_ID` varchar(45) DEFAULT NULL, + `NETWORK_NAME` varchar(80) DEFAULT NULL, + `NETWORK_TYPE` varchar(80) DEFAULT NULL, + `REQUEST_SCOPE` varchar(20) NOT NULL DEFAULT 'unknown', + `REQUEST_ACTION` varchar(45) NOT NULL DEFAULT 'unknown', + `SERVICE_INSTANCE_ID` varchar(45) DEFAULT NULL, + `SERVICE_INSTANCE_NAME` varchar(80) DEFAULT NULL, + `REQUESTOR_ID` varchar(50) DEFAULT NULL, + `CONFIGURATION_ID` varchar(45) DEFAULT NULL, + `CONFIGURATION_NAME` varchar(200) DEFAULT NULL, + `OPERATIONAL_ENV_ID` varchar(45) DEFAULT NULL, + `OPERATIONAL_ENV_NAME` varchar(200) DEFAULT NULL, + PRIMARY KEY (`REQUEST_ID`), + UNIQUE KEY `UK_bhu6w8p7wvur4pin0gjw2d5ak` (`CLIENT_REQUEST_ID`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE `archived_infra_requests` ( + `REQUEST_ID` varchar(45) NOT NULL, + `CLIENT_REQUEST_ID` varchar(45) DEFAULT NULL, + `ACTION` varchar(45) DEFAULT NULL, + `REQUEST_STATUS` varchar(20) DEFAULT NULL, + `STATUS_MESSAGE` longtext DEFAULT NULL, + `PROGRESS` bigint(20) DEFAULT NULL, + `START_TIME` datetime DEFAULT NULL, + `END_TIME` datetime DEFAULT NULL, + `SOURCE` varchar(45) DEFAULT NULL, + `VNF_ID` varchar(45) DEFAULT NULL, + `VNF_NAME` varchar(80) DEFAULT NULL, + `VNF_TYPE` varchar(200) DEFAULT NULL, + `SERVICE_TYPE` varchar(45) DEFAULT NULL, + `AIC_NODE_CLLI` varchar(11) DEFAULT NULL, + `TENANT_ID` varchar(45) DEFAULT NULL, + `PROV_STATUS` varchar(20) DEFAULT NULL, + `VNF_PARAMS` longtext, + `VNF_OUTPUTS` longtext, + `REQUEST_BODY` longtext, + `RESPONSE_BODY` longtext, + `LAST_MODIFIED_BY` varchar(100) DEFAULT NULL, + `MODIFY_TIME` datetime DEFAULT NULL, + `REQUEST_TYPE` varchar(20) DEFAULT NULL, + `VOLUME_GROUP_ID` varchar(45) DEFAULT NULL, + `VOLUME_GROUP_NAME` varchar(45) DEFAULT NULL, + `VF_MODULE_ID` varchar(45) DEFAULT NULL, + `VF_MODULE_NAME` varchar(200) DEFAULT NULL, + `VF_MODULE_MODEL_NAME` varchar(200) DEFAULT NULL, + `AAI_SERVICE_ID` varchar(50) DEFAULT NULL, + `AIC_CLOUD_REGION` varchar(11) DEFAULT NULL, + `CALLBACK_URL` varchar(200) DEFAULT NULL, + `CORRELATOR` varchar(80) DEFAULT NULL, + `NETWORK_ID` varchar(45) DEFAULT NULL, + `NETWORK_NAME` varchar(80) DEFAULT NULL, + `NETWORK_TYPE` varchar(80) DEFAULT NULL, + `REQUEST_SCOPE` varchar(20) NOT NULL DEFAULT 'unknown', + `REQUEST_ACTION` varchar(45) NOT NULL DEFAULT 'unknown', + `SERVICE_INSTANCE_ID` varchar(45) DEFAULT NULL, + `SERVICE_INSTANCE_NAME` varchar(80) DEFAULT NULL, + `REQUESTOR_ID` varchar(50) DEFAULT NULL, + `CONFIGURATION_ID` varchar(45) DEFAULT NULL, + `CONFIGURATION_NAME` varchar(200) DEFAULT NULL, + `OPERATIONAL_ENV_ID` varchar(45) DEFAULT NULL, + `OPERATIONAL_ENV_NAME` varchar(200) DEFAULT NULL, + PRIMARY KEY (`REQUEST_ID`), + UNIQUE KEY `UK_bhu6w8p7wvur4pin0gjw2d72h` (`CLIENT_REQUEST_ID`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE `site_status` ( + `SITE_NAME` varchar(255) NOT NULL, + `STATUS` bit(1) DEFAULT NULL, + `CREATION_TIMESTAMP` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`SITE_NAME`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE `watchdog_distributionid_status` ( + `DISTRIBUTION_ID` varchar(45) NOT NULL, + `DISTRIBUTION_ID_STATUS` varchar(45) DEFAULT NULL, + `CREATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `MODIFY_TIME` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`DISTRIBUTION_ID`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE `watchdog_per_component_distribution_status` ( + `DISTRIBUTION_ID` varchar(45) NOT NULL, + `COMPONENT_NAME` varchar(45) NOT NULL, + `COMPONENT_DISTRIBUTION_STATUS` varchar(45) DEFAULT NULL, + `CREATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `MODIFY_TIME` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`DISTRIBUTION_ID`,`COMPONENT_NAME`), + CONSTRAINT `fk_watchdog_component_distribution_status_watchdog_distributi1` FOREIGN KEY (`DISTRIBUTION_ID`) REFERENCES `watchdog_distributionid_status` (`DISTRIBUTION_ID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE `watchdog_service_mod_ver_id_lookup` ( + `DISTRIBUTION_ID` varchar(45) NOT NULL, + `SERVICE_MODEL_VERSION_ID` varchar(45) NOT NULL, + `CREATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `MODIFY_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`DISTRIBUTION_ID`,`SERVICE_MODEL_VERSION_ID`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE `activate_operational_env_service_model_distribution_status` ( + `OPERATIONAL_ENV_ID` varchar(45) NOT NULL, + `SERVICE_MODEL_VERSION_ID` varchar(45) NOT NULL, + `REQUEST_ID` varchar(45) NOT NULL, + `SERVICE_MOD_VER_FINAL_DISTR_STATUS` varchar(45) DEFAULT NULL, + `RECOVERY_ACTION` varchar(30) DEFAULT NULL, + `RETRY_COUNT_LEFT` int(11) DEFAULT NULL, + `WORKLOAD_CONTEXT` varchar(80) NOT NULL, + `CREATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `MODIFY_TIME` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`OPERATIONAL_ENV_ID`,`SERVICE_MODEL_VERSION_ID`,`REQUEST_ID`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE `activate_operational_env_per_distributionid_status` ( + `DISTRIBUTION_ID` varchar(45) NOT NULL, + `DISTRIBUTION_ID_STATUS` varchar(45) DEFAULT NULL, + `DISTRIBUTION_ID_ERROR_REASON` varchar(250) DEFAULT NULL, + `CREATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `MODIFY_TIME` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, + `OPERATIONAL_ENV_ID` varchar(45) NOT NULL, + `SERVICE_MODEL_VERSION_ID` varchar(45) NOT NULL, + `REQUEST_ID` varchar(45) NOT NULL, + PRIMARY KEY (`DISTRIBUTION_ID`), + KEY `fk_activate_op_env_per_distributionid_status__aoesmds1_idx` (`OPERATIONAL_ENV_ID`,`SERVICE_MODEL_VERSION_ID`,`REQUEST_ID`), + CONSTRAINT `fk_activate_op_env_per_distributionid_status__aoesmds1` FOREIGN KEY (`OPERATIONAL_ENV_ID`, `SERVICE_MODEL_VERSION_ID`, `REQUEST_ID`) REFERENCES `activate_operational_env_service_model_distribution_status` (`OPERATIONAL_ENV_ID`, `SERVICE_MODEL_VERSION_ID`, `REQUEST_ID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +create table operation_status ( + SERVICE_ID varchar(255) not null, + OPERATION_ID varchar(255) not null, + SERVICE_NAME varchar(255), + OPERATION_TYPE varchar(255), + USER_ID varchar(255), + RESULT varchar(255), + OPERATION_CONTENT varchar(255), + PROGRESS varchar(255), + REASON varchar(255), + OPERATE_AT datetime NOT NULL, + FINISHED_AT datetime NOT NULL, + primary key (SERVICE_ID,OPERATION_ID) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +create table resource_operation_status ( + SERVICE_ID varchar(255) not null, + OPERATION_ID varchar(255) not null, + RESOURCE_TEMPLATE_UUID varchar(255) not null, + OPER_TYPE varchar(255), + RESOURCE_INSTANCE_ID varchar(255), + JOB_ID varchar(255), + STATUS varchar(255), + PROGRESS varchar(255), + ERROR_CODE varchar(255) , + STATUS_DESCRIPOTION varchar(255) , + primary key (SERVICE_ID,OPERATION_ID,RESOURCE_TEMPLATE_UUID) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +create table if not exists model_recipe ( + `ID` INT(11) NOT NULL AUTO_INCREMENT, + `MODEL_ID` INT(11), + `ACTION` VARCHAR(40), + `SCHEMA_VERSION` VARCHAR(40), + `DESCRIPTION` VARCHAR(40), + `ORCHESTRATION_URI` VARCHAR(20), + `MODEL_PARAM_XSD` VARCHAR(20), + `RECIPE_TIMEOUT` INT(11), + `CREATION_TIMESTAMP` datetime not null default current_timestamp, + PRIMARY KEY (`ID`), + CONSTRAINT uk1_model_recipe UNIQUE (`MODEL_ID`, `ACTION`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +create table if not exists model ( + `ID` INT(11) NOT NULL AUTO_INCREMENT, + `MODEL_CUSTOMIZATION_ID` VARCHAR(40), + `MODEL_CUSTOMIZATION_NAME` VARCHAR(40), + `MODEL_INVARIANT_ID` VARCHAR(40), + `MODEL_NAME` VARCHAR(40), + `MODEL_TYPE` VARCHAR(20), + `MODEL_VERSION` VARCHAR(20), + `MODEL_VERSION_ID` VARCHAR(40), + `CREATION_TIMESTAMP` datetime not null default current_timestamp, + `RECIPE` INT(11), + PRIMARY KEY (`ID`), + CONSTRAINT uk1_model UNIQUE (`MODEL_TYPE`, `MODEL_VERSION_ID`), + FOREIGN KEY (`RECIPE`) REFERENCES `model_recipe` (`MODEL_ID`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +ALTER TABLE `catalogdb`.`vnf_recipe` +CHANGE COLUMN `VNF_TYPE` `NF_ROLE` VARCHAR(200) NULL DEFAULT NULL ;
\ No newline at end of file |