diff options
author | Steve Smokowski <ss835w@att.com> | 2017-02-09 15:43:35 -0500 |
---|---|---|
committer | Steve Smokowski <ss835w@att.com> | 2017-02-09 15:44:01 -0500 |
commit | ef768a7c864f0d807d8696449f5eed7a4552316f (patch) | |
tree | 1883d5cdf446ed9b22d06cd3f4472e89e96b9a40 /src/test | |
parent | 7c4d2c54ff5bf1095ca7cf031f7eea96d690f9fc (diff) |
Initial OpenECOMP A&AI Model Loader commit
Change-Id: Iae343fa01ecc701919703fb7d61727555371321d
Signed-off-by: Steve Smokowski <ss835w@att.com>
Diffstat (limited to 'src/test')
17 files changed, 3672 insertions, 0 deletions
diff --git a/src/test/java/org/openecomp/modelloader/config/ModelLoaderConfigTest.java b/src/test/java/org/openecomp/modelloader/config/ModelLoaderConfigTest.java new file mode 100644 index 0000000..4018f14 --- /dev/null +++ b/src/test/java/org/openecomp/modelloader/config/ModelLoaderConfigTest.java @@ -0,0 +1,122 @@ +/*- + * ============LICENSE_START======================================================= + * MODEL LOADER SERVICE + * ================================================================================ + * 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.modelloader.config; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.List; +import java.util.Properties; + +import org.eclipse.jetty.util.security.Password; +import org.junit.Test; +import org.openecomp.modelloader.restclient.AaiRestClient; + +import org.openecomp.sdc.utils.ArtifactTypeEnum; + +public class ModelLoaderConfigTest { + + @Test + public void testYangModelArtifactType() { + Properties props = new Properties(); + props.setProperty("ml.distribution.ARTIFACT_TYPES", + "MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG"); + ModelLoaderConfig config = new ModelLoaderConfig(props); + + List<String> types = config.getRelevantArtifactTypes(); + + System.out.println("ArtifactType: " + types.get(0)); + assertEquals(0, + types.get(0).compareToIgnoreCase(ArtifactTypeEnum.MODEL_INVENTORY_PROFILE.toString())); + + System.out.println("ArtifactType: " + types.get(1)); + assertEquals(0, types.get(1).compareToIgnoreCase(ArtifactTypeEnum.MODEL_QUERY_SPEC.toString())); + + System.out.println("ArtifactType: " + types.get(2)); + assertEquals(0, types.get(2).compareToIgnoreCase(ArtifactTypeEnum.VNF_CATALOG.toString())); + + assertEquals(3, types.size()); + } + + @Test + public void testDecryptPassword() { + Properties props = new Properties(); + String testPass = "youshallnotpass"; + String encryptedTestPass = Password.obfuscate(testPass); + + System.out.println("Encrypt " + testPass + " ==> " + encryptedTestPass); + + props.put(ModelLoaderConfig.PROP_ML_DISTRIBUTION_PASSWORD, encryptedTestPass); + ModelLoaderConfig config = new ModelLoaderConfig(props); + + assertEquals(testPass, config.getPassword()); + } + + @Test + public void testDecryptKeystorePassword() { + Properties props = new Properties(); + String testPass = "youshallnotpass"; + String encryptedTestPass = Password.obfuscate(testPass); + + System.out.println("Encrypt " + testPass + " ==> " + encryptedTestPass); + + props.put(ModelLoaderConfig.PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD, encryptedTestPass); + ModelLoaderConfig config = new ModelLoaderConfig(props); + + assertEquals(testPass, config.getKeyStorePassword()); + } + + @Test + public void testDecryptAAIPassword() { + + Properties props = new Properties(); + String testPassword = "myvoiceismypassword"; + String encryptedTestPassword = Password.obfuscate(testPassword); + + props.put(ModelLoaderConfig.PROP_AAI_AUTHENTICATION_PASSWORD, encryptedTestPassword); + ModelLoaderConfig config = new ModelLoaderConfig(props); + + assertEquals(testPassword, config.getAaiAuthenticationPassword()); + } + + @Test + public void testNoAAIAuth() throws IOException { + + Properties props = new Properties(); + props.load( + new FileInputStream("src/test/resources/model-loader-empty-auth-password.properties")); + + ModelLoaderConfig config = new ModelLoaderConfig(props); + AaiRestClient aaiClient = new AaiRestClient(config); + + assertFalse("Empty AAI Password should result in no basic authentication", + aaiClient.useBasicAuth()); + + props.load(new FileInputStream("src/test/resources/model-loader-no-auth-password.properties")); + config = new ModelLoaderConfig(props); + aaiClient = new AaiRestClient(config); + + assertFalse("No AAI Password should result in no basic authentication", + aaiClient.useBasicAuth()); + } +} diff --git a/src/test/java/org/openecomp/modelloader/entity/catalog/VnfCatalogArtifactHandlerTest.java b/src/test/java/org/openecomp/modelloader/entity/catalog/VnfCatalogArtifactHandlerTest.java new file mode 100644 index 0000000..1b1d955 --- /dev/null +++ b/src/test/java/org/openecomp/modelloader/entity/catalog/VnfCatalogArtifactHandlerTest.java @@ -0,0 +1,98 @@ +/*- + * ============LICENSE_START======================================================= + * MODEL LOADER SERVICE + * ================================================================================ + * 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.modelloader.entity.catalog; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; +import org.openecomp.modelloader.config.ModelLoaderConfig; +import org.openecomp.modelloader.entity.Artifact; +import org.openecomp.modelloader.restclient.AaiRestClient; +import org.openecomp.modelloader.restclient.AaiRestClient.MimeType; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + +import com.sun.jersey.api.client.ClientResponse; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({ VnfCatalogArtifactHandler.class, ClientResponse.class, AaiRestClient.class }) +public class VnfCatalogArtifactHandlerTest { + + protected static String CONFIG_FILE = "model-loader.properties"; + + @Test + public void testWithMocks() throws Exception { + + Properties configProperties = new Properties(); + try { + configProperties.load(this.getClass().getClassLoader().getResourceAsStream(CONFIG_FILE)); + } catch (IOException e) { + fail(); + } + ModelLoaderConfig config = new ModelLoaderConfig(configProperties); + + ClientResponse mockGetResp = PowerMockito.mock(ClientResponse.class); + PowerMockito.when(mockGetResp.getStatus()).thenReturn(200).thenReturn(200).thenReturn(404) + .thenReturn(404).thenReturn(200); // only second two will be PUT + ClientResponse mockPutResp = PowerMockito.mock(ClientResponse.class); + PowerMockito.when(mockPutResp.getStatus()).thenReturn(201); + + AaiRestClient mockRestClient = PowerMockito.mock(AaiRestClient.class); + PowerMockito.whenNew(AaiRestClient.class).withAnyArguments().thenReturn(mockRestClient); + PowerMockito.when(mockRestClient.getResource(Mockito.anyString(), Mockito.anyString(), + Mockito.any(MimeType.class))).thenReturn(mockGetResp); + PowerMockito.when(mockRestClient.putResource(Mockito.anyString(), Mockito.anyString(), + Mockito.anyString(), Mockito.any(MimeType.class))).thenReturn(mockPutResp); + + VnfCatalogArtifactHandler vnfCAH = new VnfCatalogArtifactHandler(config); + + String examplePath = "src/test/resources/vnfcatalogexample.xml"; + + byte[] encoded = Files.readAllBytes(Paths.get(examplePath)); + String payload = new String(encoded, "utf-8"); + + VnfCatalogArtifact artifact = new VnfCatalogArtifact(payload); + List<Artifact> artifacts = new ArrayList<Artifact>(); + artifacts.add(artifact); + + String distributionID = "test"; + + assertTrue(vnfCAH.pushArtifacts(artifacts, distributionID)); + // times(2) bc with above get returns should only get to this part twice + ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class); + Mockito.verify(mockRestClient, Mockito.times(2)).putResource(Mockito.anyString(), + argument.capture(), Mockito.anyString(), Mockito.any(MimeType.class)); + assertTrue(argument.getAllValues().get(0).contains("5.2.5")); + assertTrue(argument.getAllValues().get(1).contains("5.2.4")); + } +} diff --git a/src/test/java/org/openecomp/modelloader/entity/model/ModelArtifactParserTest.java b/src/test/java/org/openecomp/modelloader/entity/model/ModelArtifactParserTest.java new file mode 100644 index 0000000..448e5d3 --- /dev/null +++ b/src/test/java/org/openecomp/modelloader/entity/model/ModelArtifactParserTest.java @@ -0,0 +1,151 @@ +/*- + * ============LICENSE_START======================================================= + * MODEL LOADER SERVICE + * ================================================================================ + * 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.modelloader.entity.model; + +import static org.junit.Assert.assertTrue; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; + +import org.junit.Test; +import org.openecomp.modelloader.entity.Artifact; + +public class ModelArtifactParserTest { + + @Test + public void testParseModelFileNoDeps() throws Exception { + final String MODEL_FILE = "src/test/resources/models/vnf-model.xml"; + + try { + byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE)); + + ModelArtifactParser parser = new ModelArtifactParser(); + List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact"); + + assertTrue(modelList.size() == 1); + + ModelArtifact model = (ModelArtifact) modelList.get(0); + System.out.println(model.toString()); + + assertTrue(model.getNameVersionId().equalsIgnoreCase("model-vid")); + assertTrue(model.getType().toString().equalsIgnoreCase("MODEL")); + assertTrue(model.getDependentModelIds().size() == 0); + } catch (Exception e) { + e.printStackTrace(); + assertTrue(false); + } + } + + @Test + public void testParseModelFileDeps() throws Exception { + final String MODEL_FILE = "src/test/resources/models/wan-connector-model.xml"; + + try { + byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE)); + + ModelArtifactParser parser = new ModelArtifactParser(); + List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact"); + + assertTrue(modelList.size() == 1); + + ModelArtifact model = (ModelArtifact) modelList.get(0); + System.out.println(model.toString()); + + assertTrue(model.getNameVersionId().equalsIgnoreCase("93d9d45d-7eec-4371-9083-675e4c353de3")); + assertTrue(model.getType().toString().equalsIgnoreCase("MODEL")); + assertTrue(model.getDependentModelIds().size() == 7); + assertTrue(model.getDependentModelIds().contains("d09dd9da-0148-46cd-a947-591afc844d24")); + assertTrue(model.getDependentModelIds().contains("ae16244f-4d29-4801-a559-e25f2db2a4c3")); + assertTrue(model.getDependentModelIds().contains("a6d9de88-4046-4b78-a59e-5691243d292a")); + } catch (Exception e) { + e.printStackTrace(); + assertTrue(false); + } + } + + @Test + public void testParseCompleteModel() throws Exception { + final String MODEL_FILE = "src/test/resources/models/complete-model.xml"; + + try { + byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE)); + + ModelArtifactParser parser = new ModelArtifactParser(); + List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact"); + + for (Artifact art : modelList) { + ModelArtifact model = (ModelArtifact) art; + System.out.println(model.toString()); + } + + assertTrue(modelList.size() == 14); + + ModelArtifact modelVdc = (ModelArtifact) modelList.get(0); + assertTrue( + modelVdc.getNameVersionId().equalsIgnoreCase("997fc7-fca1-451f-b953-9a1e6197b4d6")); + assertTrue(modelVdc.getType().toString().equalsIgnoreCase("MODEL")); + assertTrue(modelVdc.getDependentModelIds().size() == 1); + assertTrue(modelVdc.getDependentModelIds().contains("93d9d45d-7eec-4371-9083-675e4c353de3")); + + ModelArtifact modelPserver = (ModelArtifact) modelList.get(9); + assertTrue( + modelPserver.getNameVersionId().equalsIgnoreCase("f2b24d95-c582-48d5-b2d6-c5b3a94ce812")); + assertTrue(modelPserver.getType().toString().equalsIgnoreCase("MODEL")); + assertTrue(modelPserver.getDependentModelIds().size() == 2); + assertTrue( + modelPserver.getDependentModelIds().contains("35be1acf-1298-48c6-a128-66850083b8bd")); + assertTrue( + modelPserver.getDependentModelIds().contains("759dbd4a-2473-46f3-a932-48d987c9b4a1")); + } catch (Exception e) { + e.printStackTrace(); + assertTrue(false); + } + } + + @Test + public void testParseNamedQuery() throws Exception { + final String MODEL_FILE = "src/test/resources/models/named-query-wan-connector.xml"; + + try { + byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE)); + + ModelArtifactParser parser = new ModelArtifactParser(); + List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact"); + + assertTrue(modelList.size() == 1); + + ModelArtifact model = (ModelArtifact) modelList.get(0); + System.out.println(model.toString()); + + assertTrue(model.getNameVersionId().equalsIgnoreCase("94cac189-8d88-4d63-a194-f44214e080ff")); + assertTrue(model.getType().toString().equalsIgnoreCase("NAMED_QUERY")); + assertTrue(model.getDependentModelIds().size() == 4); + assertTrue(model.getDependentModelIds().contains("d09dd9da-0148-46cd-a947-591afc844d24")); + assertTrue(model.getDependentModelIds().contains("997fc7-fca1-451f-b953-9a1e6197b4d6")); + assertTrue(model.getDependentModelIds().contains("897df7ea-8938-42b0-bc57-46e913a4d93b")); + assertTrue(model.getDependentModelIds().contains("f2b24d95-c582-48d5-b2d6-c5b3a94ce812")); + } catch (Exception e) { + e.printStackTrace(); + assertTrue(false); + } + } +} diff --git a/src/test/java/org/openecomp/modelloader/entity/model/ModelSorterTest.java b/src/test/java/org/openecomp/modelloader/entity/model/ModelSorterTest.java new file mode 100644 index 0000000..dea537f --- /dev/null +++ b/src/test/java/org/openecomp/modelloader/entity/model/ModelSorterTest.java @@ -0,0 +1,133 @@ +/*- + * ============LICENSE_START======================================================= + * MODEL LOADER SERVICE + * ================================================================================ + * 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.modelloader.entity.model; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.junit.Test; +import org.openecomp.modelloader.entity.Artifact; + +public class ModelSorterTest { + + @Test + public void noModels() { + + List<Artifact> emptyList = Collections.emptyList(); + + ModelSorter sorter = new ModelSorter(); + sorter = new ModelSorter(); + + List<Artifact> sortedList = sorter.sort(emptyList); + assertNotNull(sortedList); + assertEquals(0, sortedList.size()); + + } + + @Test + public void singleModel() { + + List<Artifact> modelList = new ArrayList<Artifact>(); + + ModelArtifact model = new ModelArtifact(); + model.setNameVersionId("aaaaa"); + model.addDependentModelId("xyz"); + modelList.add(model); + + ModelSorter sorter = new ModelSorter(); + sorter = new ModelSorter(); + + List<Artifact> sortedList = sorter.sort(modelList); + assertNotNull(sortedList); + assertEquals(1, sortedList.size()); + + } + + /** + * + * depends on depends on B ------> A -------> C + * + * + * Input list = a, b, c Sorted list = c, a, b + * + */ + @Test + public void multipleModels() { + + List<Artifact> modelList = new ArrayList<Artifact>(); + + ModelArtifact aaaa = new ModelArtifact(); + aaaa.setNameVersionId("aaaa"); + aaaa.addDependentModelId("cccc"); + + ModelArtifact bbbb = new ModelArtifact(); + bbbb.setNameVersionId("bbbb"); + bbbb.addDependentModelId("aaaa"); + + ModelArtifact cccc = new ModelArtifact(); + cccc.setNameVersionId("cccc"); + + modelList.add(aaaa); + modelList.add(bbbb); + modelList.add(cccc); + + ModelSorter sorter = new ModelSorter(); + sorter = new ModelSorter(); + + List<Artifact> sortedList = sorter.sort(modelList); + assertNotNull(sortedList); + assertEquals(3, sortedList.size()); + + assertEquals(cccc, sortedList.get(0)); + assertEquals(aaaa, sortedList.get(1)); + assertEquals(bbbb, sortedList.get(2)); + } + + @Test(expected = RuntimeException.class) + public void circularDependency() { + + List<Artifact> modelList = new ArrayList<Artifact>(); + + ModelArtifact aaaa = new ModelArtifact(); + aaaa.setNameVersionId("aaaa"); + aaaa.addDependentModelId("bbbb"); + + ModelArtifact bbbb = new ModelArtifact(); + bbbb.setNameVersionId("bbbb"); + bbbb.addDependentModelId("aaaa"); + + modelList.add(aaaa); + modelList.add(bbbb); + + ModelSorter sorter = new ModelSorter(); + sorter = new ModelSorter(); + + List<Artifact> sortedList = sorter.sort(modelList); + assertNotNull(sortedList); + assertEquals(3, sortedList.size()); + + } + +} diff --git a/src/test/java/org/openecomp/modelloader/restclient/AAIRestClientTest.java b/src/test/java/org/openecomp/modelloader/restclient/AAIRestClientTest.java new file mode 100644 index 0000000..08d7afe --- /dev/null +++ b/src/test/java/org/openecomp/modelloader/restclient/AAIRestClientTest.java @@ -0,0 +1,119 @@ +/*- + * ============LICENSE_START======================================================= + * MODEL LOADER SERVICE + * ================================================================================ + * 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.modelloader.restclient; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import org.openecomp.modelloader.config.ModelLoaderConfig; +import org.openecomp.modelloader.entity.ArtifactType; +import org.openecomp.modelloader.entity.model.ModelArtifact; + +public class AAIRestClientTest { + + // This test requires a running A&AI system. Uncomment to test locally. + /* + * @Test public void testRestClient() throws Exception { final String + * MODEL_FILE = "src/test/resources/models/vnf-model.xml"; + * + * Properties props = new Properties(); + * props.setProperty("ml.distribution.ARTIFACT_TYPES", + * "MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG"); + * props.setProperty("ml.aai.BASE_URL", "https://127.0.0.1:4321"); + * props.setProperty("ml.aai.MODEL_URL", + * "/aai/v8/service-design-and-creation/models/model/"); + * props.setProperty("ml.aai.KEYSTORE_FILE", "aai-client-cert.p12"); + * props.setProperty("ml.aai.KEYSTORE_PASSWORD", + * "OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o"); + * + * ModelLoaderConfig config = new ModelLoaderConfig(props, ""); + * + * String payload = readFile(MODEL_FILE); System.out.println("FILE:" + + * payload); + * + * File xmlFile = new File(MODEL_FILE); DocumentBuilderFactory dbFactory = + * DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = + * dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(xmlFile); + * + * // Get the ID of the model String modelId = null; NodeList nodeList = + * doc.getDocumentElement().getChildNodes(); for (int i = 0; i < + * nodeList.getLength(); i++) { Node currentNode = nodeList.item(i); if + * (currentNode.getNodeName().equals("model-name-version-id")) { modelId = + * currentNode.getTextContent(); break; } } + * + * // Add the model try { ModelArtifact model = new ModelArtifact(); + * model.setNameVersionId(modelId); model.setType(ArtifactType.MODEL); + * model.setPayload(payload); + * + * AAIRestClient aaiClient = new AAIRestClient(config); + * + * // GET model System.out.println("Calling GET API ..."); ClientResponse + * getResponse = aaiClient.getResource(getURL(model, config), + * "example-trans-id-0", AAIRestClient.MimeType.XML); System.out.println( + * "GET result: " + getResponse.getStatus()); + * assertTrue(getResponse.getStatus() == + * Response.Status.NOT_FOUND.getStatusCode()); + * + * // Add the model System.out.println("Calling PUT API ..."); ClientResponse + * res = aaiClient.putResource(getURL(model, config), model.getPayload(), + * "example-trans-id-1", AAIRestClient.MimeType.XML); System.out.println( + * "PUT result: " + res.getStatus()); assertTrue(res.getStatus() == + * Response.Status.CREATED.getStatusCode()); + * + * // Delete the model System.out.println("Calling DELETE API ..."); res = + * aaiClient.getAndDeleteResource(getURL(model, config), + * "example-trans-id-3"); System.out.println("DELETE result: " + + * res.getStatus()); assertTrue(res.getStatus() == + * Response.Status.NO_CONTENT.getStatusCode()); } catch (Exception e) { + * e.printStackTrace(); } } + */ + + static String readFile(String path) throws IOException { + byte[] encoded = Files.readAllBytes(Paths.get(path)); + return new String(encoded); + } + + private String getURL(ModelArtifact model, ModelLoaderConfig config) { + String baseURL = config.getAaiBaseUrl().trim(); + String subURL = null; + if (model.getType().equals(ArtifactType.MODEL)) { + subURL = config.getAaiModelUrl().trim(); + } else { + subURL = config.getAaiNamedQueryUrl().trim(); + } + + if ((!baseURL.endsWith("/")) && (!subURL.startsWith("/"))) { + baseURL = baseURL + "/"; + } + + if (baseURL.endsWith("/") && subURL.startsWith("/")) { + baseURL = baseURL.substring(0, baseURL.length() - 1); + } + + if (!subURL.endsWith("/")) { + subURL = subURL + "/"; + } + + String url = baseURL + subURL + model.getNameVersionId(); + return url; + } +} diff --git a/src/test/java/org/openecomp/modelloader/service/ModelLoaderServiceTest.java b/src/test/java/org/openecomp/modelloader/service/ModelLoaderServiceTest.java new file mode 100644 index 0000000..c2893a9 --- /dev/null +++ b/src/test/java/org/openecomp/modelloader/service/ModelLoaderServiceTest.java @@ -0,0 +1,115 @@ +/*- + * ============LICENSE_START======================================================= + * MODEL LOADER SERVICE + * ================================================================================ + * 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.modelloader.service; + +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 org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Matchers; +import org.openecomp.modelloader.config.ModelLoaderConfig; +import org.openecomp.modelloader.notification.EventCallback; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + +import org.openecomp.sdc.api.IDistributionClient; +import org.openecomp.sdc.api.results.IDistributionClientResult; +import org.openecomp.sdc.impl.DistributionClientFactory; +import org.openecomp.sdc.utils.DistributionActionResultEnum; + +@PrepareForTest({ DistributionClientFactory.class }) +@RunWith(PowerMockRunner.class) +public class ModelLoaderServiceTest { + + /* + * //TODO this should be re-added once we come up with a strategy to fail + * gracefully + * + * @Test public void testNonExistentConfiguration(){ + * ModelLoaderService.CONFIG_LOCATION = "FAKELOCATION"; + * + * try{ new ModelLoaderService().start(); }catch(RuntimeException e){ + * assertTrue("Got unexpected message from error log", + * e.getMessage().contains("Failed to load configuration")); return; } + * + * fail("Expecting runtime exception"); } + */ + + @Test + public void testConfigureStartDistributionClient() { + PowerMockito.mockStatic(DistributionClientFactory.class); + + IDistributionClient mockClient = mock(IDistributionClient.class); + ModelLoaderConfig mockConfig = mock(ModelLoaderConfig.class); + + when(DistributionClientFactory.createDistributionClient()).thenReturn(mockClient); + + IDistributionClientResult result = mock(IDistributionClientResult.class); + + when(result.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS); + when(mockClient.init(Matchers.<ModelLoaderConfig> any(), Matchers.<EventCallback> any())) + .thenReturn(result); + when(mockClient.start()).thenReturn(result); + + new ModelLoaderService().init(); + + // Validate that the client was initialized and started + verify(mockClient, times(1)).init(Matchers.<ModelLoaderConfig> any(), + Matchers.<EventCallback> any()); + verify(mockClient, times(1)).start(); + } + + @Test + public void testInitializeButNotStarted() { + PowerMockito.mockStatic(DistributionClientFactory.class); + + IDistributionClient mockClient = mock(IDistributionClient.class); + ModelLoaderConfig mockConfig = mock(ModelLoaderConfig.class); + + DistributionActionResultEnum failureReason = DistributionActionResultEnum.ASDC_CONNECTION_FAILED; + + when(DistributionClientFactory.createDistributionClient()).thenReturn(mockClient); + + IDistributionClientResult initResult = mock(IDistributionClientResult.class); + when(initResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS); + IDistributionClientResult startResult = mock(IDistributionClientResult.class); + when(startResult.getDistributionActionResult()).thenReturn(failureReason); + + when(mockClient.init(Matchers.<ModelLoaderConfig> any(), Matchers.<EventCallback> any())) + .thenReturn(initResult); + when(mockClient.start()).thenReturn(startResult); + + // TODO this should be re-added once we come up with a strategy to fail + // gracefully + /* + * try{ new ModelLoaderService().init(mockConfig); }catch(RuntimeException + * e){ assertTrue(e.getMessage().contains(failureReason.toString())); + * return; } + * + * fail("Expecting runtime exception with failure: " + + * failureReason.toString()); + */ + } +} diff --git a/src/test/java/org/openecomp/modelloader/util/JsonXmlConverterTest.java b/src/test/java/org/openecomp/modelloader/util/JsonXmlConverterTest.java new file mode 100644 index 0000000..4654c93 --- /dev/null +++ b/src/test/java/org/openecomp/modelloader/util/JsonXmlConverterTest.java @@ -0,0 +1,79 @@ +/*- + * ============LICENSE_START======================================================= + * MODEL LOADER SERVICE + * ================================================================================ + * 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.modelloader.util; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayInputStream; +import java.nio.file.Files; +import java.nio.file.Paths; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.junit.Test; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +public class JsonXmlConverterTest { + + @Test + public void testConversion() throws Exception { + final String XML_MODEL_FILE = "src/test/resources/models/vnf-model.xml"; + final String JSON_MODEL_FILE = "src/test/resources/models/vnf-model.json"; + + try { + byte[] encoded = Files.readAllBytes(Paths.get(XML_MODEL_FILE)); + String originalXML = new String(encoded); + + assertFalse(JsonXmlConverter.isValidJson(originalXML)); + + encoded = Files.readAllBytes(Paths.get(JSON_MODEL_FILE)); + String originalJSON = new String(encoded); + + assertTrue(JsonXmlConverter.isValidJson(originalJSON)); + + String xmlFromJson = JsonXmlConverter.convertJsonToXml(originalJSON); + + // Spot check one of the attributes + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document doc = builder.parse(new ByteArrayInputStream(xmlFromJson.getBytes())); + NodeList nodeList = doc.getDocumentElement().getChildNodes(); + + String modelVid = "notFound"; + for (int i = 0; i < nodeList.getLength(); i++) { + Node currentNode = nodeList.item(i); + if (currentNode.getNodeName().equals("model-name-version-id")) { + modelVid = currentNode.getTextContent(); + break; + } + } + + assertTrue(modelVid.equals("model-vid")); + } catch (Exception e) { + e.printStackTrace(); + assertTrue(false); + } + } +} diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml new file mode 100644 index 0000000..1252135 --- /dev/null +++ b/src/test/resources/logback-test.xml @@ -0,0 +1,37 @@ +<!-- + ============LICENSE_START======================================================= + MODEL LOADER SERVICE + ================================================================================ + 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 debug="false"> + + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <!-- encoders are by default assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder --> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> + </encoder> + </appender> + + <logger name="com.att.eelf" level="DEBUG" additivity="false"> + <appender-ref ref="STDOUT" /> + </logger> + + <root level="debug"> + <appender-ref ref="STDOUT" /> + </root> +</configuration> diff --git a/src/test/resources/model-loader-empty-auth-password.properties b/src/test/resources/model-loader-empty-auth-password.properties new file mode 100644 index 0000000..69f3da1 --- /dev/null +++ b/src/test/resources/model-loader-empty-auth-password.properties @@ -0,0 +1,43 @@ +### +# ============LICENSE_START======================================================= +# MODEL LOADER SERVICE +# ================================================================================ +# 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========================================================= +### + +# Model Loader Distribution Client Configuration +ml.distribution.ACTIVE_SERVER_TLS_AUTH=false +ml.distribution.ASDC_ADDRESS= +ml.distribution.CONSUMER_GROUP=aai-ml-group-test +ml.distribution.CONSUMER_ID=aai-ml-id-test +ml.distribution.ENVIRONMENT_NAME= +ml.distribution.KEYSTORE_PASSWORD= +ml.distribution.KEYSTORE_FILE=asdc-client.jks +ml.distribution.PASSWORD= +ml.distribution.POLLING_INTERVAL=30 +ml.distribution.POLLING_TIMEOUT=20 +ml.distribution.USER=ci +ml.distribution.ARTIFACT_TYPES=MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG + +# Model Loader AAI REST Client Configuration +ml.aai.BASE_URL= +ml.aai.MODEL_URL=/aai/v8/service-design-and-creation/models/model/ +ml.aai.NAMED_QUERY_URL=/aai/v8/service-design-and-creation/named-queries/named-query/ +ml.aai.VNF_IMAGE_URL=/aai/v8/service-design-and-creation/vnf-images +ml.aai.KEYSTORE_FILE=aai-client-cert.p12 +ml.aai.KEYSTORE_PASSWORD= +ml.aai.AUTH_USER=ModelLoader +ml.aai.AUTH_PASSWORD= diff --git a/src/test/resources/model-loader-no-auth-password.properties b/src/test/resources/model-loader-no-auth-password.properties new file mode 100644 index 0000000..8d59db1 --- /dev/null +++ b/src/test/resources/model-loader-no-auth-password.properties @@ -0,0 +1,41 @@ +### +# ============LICENSE_START======================================================= +# MODEL LOADER SERVICE +# ================================================================================ +# 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========================================================= +### + +# Model Loader Distribution Client Configuration +ml.distribution.ACTIVE_SERVER_TLS_AUTH=false +ml.distribution.ASDC_ADDRESS= +ml.distribution.CONSUMER_GROUP=aai-ml-group-test +ml.distribution.CONSUMER_ID=aai-ml-id-test +ml.distribution.ENVIRONMENT_NAME= +ml.distribution.KEYSTORE_PASSWORD= +ml.distribution.KEYSTORE_FILE=asdc-client.jks +ml.distribution.PASSWORD= +ml.distribution.POLLING_INTERVAL=30 +ml.distribution.POLLING_TIMEOUT=20 +ml.distribution.USER=ci +ml.distribution.ARTIFACT_TYPES=MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG + +# Model Loader AAI REST Client Configuration +ml.aai.BASE_URL= +ml.aai.MODEL_URL=/aai/v8/service-design-and-creation/models/model/ +ml.aai.NAMED_QUERY_URL=/aai/v8/service-design-and-creation/named-queries/named-query/ +ml.aai.VNF_IMAGE_URL=/aai/v8/service-design-and-creation/vnf-images +ml.aai.KEYSTORE_FILE=aai-client-cert.p12 +ml.aai.KEYSTORE_PASSWORD= diff --git a/src/test/resources/model-loader.properties b/src/test/resources/model-loader.properties new file mode 100644 index 0000000..69f3da1 --- /dev/null +++ b/src/test/resources/model-loader.properties @@ -0,0 +1,43 @@ +### +# ============LICENSE_START======================================================= +# MODEL LOADER SERVICE +# ================================================================================ +# 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========================================================= +### + +# Model Loader Distribution Client Configuration +ml.distribution.ACTIVE_SERVER_TLS_AUTH=false +ml.distribution.ASDC_ADDRESS= +ml.distribution.CONSUMER_GROUP=aai-ml-group-test +ml.distribution.CONSUMER_ID=aai-ml-id-test +ml.distribution.ENVIRONMENT_NAME= +ml.distribution.KEYSTORE_PASSWORD= +ml.distribution.KEYSTORE_FILE=asdc-client.jks +ml.distribution.PASSWORD= +ml.distribution.POLLING_INTERVAL=30 +ml.distribution.POLLING_TIMEOUT=20 +ml.distribution.USER=ci +ml.distribution.ARTIFACT_TYPES=MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG + +# Model Loader AAI REST Client Configuration +ml.aai.BASE_URL= +ml.aai.MODEL_URL=/aai/v8/service-design-and-creation/models/model/ +ml.aai.NAMED_QUERY_URL=/aai/v8/service-design-and-creation/named-queries/named-query/ +ml.aai.VNF_IMAGE_URL=/aai/v8/service-design-and-creation/vnf-images +ml.aai.KEYSTORE_FILE=aai-client-cert.p12 +ml.aai.KEYSTORE_PASSWORD= +ml.aai.AUTH_USER=ModelLoader +ml.aai.AUTH_PASSWORD= diff --git a/src/test/resources/models/complete-model.xml b/src/test/resources/models/complete-model.xml new file mode 100644 index 0000000..f6aaf1e --- /dev/null +++ b/src/test/resources/models/complete-model.xml @@ -0,0 +1,500 @@ +<!-- + ============LICENSE_START======================================================= + MODEL LOADER SERVICE + ================================================================================ + 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========================================================= + --> + +<models xmlns="http://org.openecomp.aai.inventory/v7"> + <model> + <model-name-version-id>997fc7-fca1-451f-b953-9a1e6197b4d6 + </model-name-version-id> + <model-type>widget</model-type> + <model-name>vdc</model-name> + <model-id>897df7ea-8938-42b0-bc57-46e913a4d93b</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175188</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/ccb3a5a4-1722-4213-8785-2b6b5527d453/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>ccb3a5a4-1722-4213-8785-2b6b5527d453 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>df2e4cc0-18ca-4046-9c1b-2abec86a58d6 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>93d9d45d-7eec-4371-9083-675e4c353de3 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>8da97b81-e0e9-4157-a4cd-af3ba52871d6 + </model-name-version-id> + <model-type>resource</model-type> + <model-name>vDbe</model-name> + <model-id>77b83c95-7707-4624-8bfe-9110b9c2dc88</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175188</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/fc3a2260-d0ee-4c8e-b7e9-74791d7c5721/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>fc3a2260-d0ee-4c8e-b7e9-74791d7c5721 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>element-choice-set.element-choice-set-uuid + </relationship-key> + <relationship-value>646ee687-1475-419d-bd10-f3760d5430dc + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>constrained-element-set.constrained-element-set-uuid + </relationship-key> + <relationship-value>999</relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>df2e4cc0-18ca-4046-9c1b-2abec86a58d6 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>93d9d45d-7eec-4371-9083-675e4c353de3 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>d09dd9da-0148-46cd-a947-591afc844d24 + </model-name-version-id> + <model-type>widget</model-type> + <model-name>connector</model-name> + <model-id>63ac2806-4d47-467f-bf9d-5a8a83a13cac</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175188</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/df2e4cc0-18ca-4046-9c1b-2abec86a58d6/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>df2e4cc0-18ca-4046-9c1b-2abec86a58d6 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>93d9d45d-7eec-4371-9083-675e4c353de3 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>93a6166f-b3d5-4f06-b4ba-aed48d009ad9 + </model-name-version-id> + <model-type>widget</model-type> + <model-name>generic-vnf</model-name> + <model-id>acc6edd8-a8d4-4b93-afaa-0994068be14c</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175177</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/88a0e5fd-0254-41dc-a9d5-7a7db446f2f3/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>88a0e5fd-0254-41dc-a9d5-7a7db446f2f3 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>8da97b81-e0e9-4157-a4cd-af3ba52871d6 + </relationship-value> + </relationship-data> + </relationship> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/baefe75b-30f2-43d2-bd73-553f65ea1405/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>baefe75b-30f2-43d2-bd73-553f65ea1405 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>a6d9de88-4046-4b78-a59e-5691243d292a + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>759dbd4a-2473-46f3-a932-48d987c9b4a1 + </model-name-version-id> + <model-type>resource</model-type> + <model-name>ipe</model-name> + <model-id>323ac9c1-b345-44a2-9d07-dd7653137705</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175188</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/746b864c-333b-4da9-806e-c70f883f8c9d/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>746b864c-333b-4da9-806e-c70f883f8c9d + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>element-choice-set.element-choice-set-uuid + </relationship-key> + <relationship-value>1c69d7dc-ddf1-4cf3-86dd-929aa886429c + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>constrained-element-set.constrained-element-set-uuid + </relationship-key> + <relationship-value>999</relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>df2e4cc0-18ca-4046-9c1b-2abec86a58d6 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>93d9d45d-7eec-4371-9083-675e4c353de3 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>93d9d45d-7eec-4371-9083-675e4c353de3 + </model-name-version-id> + <model-type>service</model-type> + <model-name>wan-connector</model-name> + <model-id>e4a9901b-6c94-4e07-b8d8-b877d3df554c</model-id> + <model-version>v1.0</model-version> + <model-description>Connects a customer vpn to the border elements of + an AT&T product</model-description> + <resource-version>1463175188</resource-version> + <relationship-list /> + </model> + <model> + <model-name-version-id>35be1acf-1298-48c6-a128-66850083b8bd + </model-name-version-id> + <model-type>resource</model-type> + <model-name>pBgf</model-name> + <model-id>897fb848-3b38-4d0d-a6a7-2543070fc450</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175188</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/d985355f-a162-493b-8cb9-0b5b948bb7b0/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>d985355f-a162-493b-8cb9-0b5b948bb7b0 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>element-choice-set.element-choice-set-uuid + </relationship-key> + <relationship-value>646ee687-1475-419d-bd10-f3760d5430dc + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>constrained-element-set.constrained-element-set-uuid + </relationship-key> + <relationship-value>999</relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>df2e4cc0-18ca-4046-9c1b-2abec86a58d6 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>93d9d45d-7eec-4371-9083-675e4c353de3 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>a6d9de88-4046-4b78-a59e-5691243d292a + </model-name-version-id> + <model-type>resource</model-type> + <model-name>vSbg</model-name> + <model-id>326690fa-9747-4ebd-9d9f-a5ef02943e1a</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175188</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/b989a7b6-907a-431d-b54e-262d29c45b6f/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>b989a7b6-907a-431d-b54e-262d29c45b6f + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>element-choice-set.element-choice-set-uuid + </relationship-key> + <relationship-value>646ee687-1475-419d-bd10-f3760d5430dc + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>constrained-element-set.constrained-element-set-uuid + </relationship-key> + <relationship-value>999</relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>df2e4cc0-18ca-4046-9c1b-2abec86a58d6 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>93d9d45d-7eec-4371-9083-675e4c353de3 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>ae16244f-4d29-4801-a559-e25f2db2a4c3 + </model-name-version-id> + <model-type>resource</model-type> + <model-name>l2-bridge-for-wan-connector</model-name> + <model-id>9494e925-04a0-4f52-983b-36fa8f75d97e</model-id> + <model-version>v1.0</model-version> + <model-description>An l2-bridge used by a wan connector connects an + ipe to a product border element</model-description> + <resource-version>1463175188</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/061f2f1d-d76f-4b4a-810c-1f9a452a4db3/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>061f2f1d-d76f-4b4a-810c-1f9a452a4db3 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>df2e4cc0-18ca-4046-9c1b-2abec86a58d6 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>93d9d45d-7eec-4371-9083-675e4c353de3 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>f2b24d95-c582-48d5-b2d6-c5b3a94ce812 + </model-name-version-id> + <model-type>widget</model-type> + <model-name>pserver</model-name> + <model-id>a033a95f-93af-4dc6-811e-f818baf13ef1</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175178</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/5eab2693-78ec-446a-afe4-14332e348246/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>5eab2693-78ec-446a-afe4-14332e348246 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>35be1acf-1298-48c6-a128-66850083b8bd + </relationship-value> + </relationship-data> + </relationship> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/f7659dac-6311-45b6-b483-60b39364a85a/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>f7659dac-6311-45b6-b483-60b39364a85a + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>759dbd4a-2473-46f3-a932-48d987c9b4a1 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>53be71b0-c689-4841-9fe6-c7fab529d310 + </model-name-version-id> + <model-type>widget</model-type> + <model-name>p-interface</model-name> + <model-id>759dbd4a-2473-46f3-a932-48d987c9b4a1</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175178</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/f118b348-1231-4895-ad26-0b227253cdf0/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>f118b348-1231-4895-ad26-0b227253cdf0 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>f7659dac-6311-45b6-b483-60b39364a85a + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>759dbd4a-2473-46f3-a932-48d987c9b4a1 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>706c7e05-8faf-4258-acca-8e4cf556961d + </model-name-version-id> + <model-type>widget</model-type> + <model-name>l-interface</model-name> + <model-id>92e579cc-eb63-490f-b9eb-16b7af2660c7</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175178</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/82f1cf8a-470b-4aaa-a1eb-27b83ba8f176/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>82f1cf8a-470b-4aaa-a1eb-27b83ba8f176 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>f7659dac-6311-45b6-b483-60b39364a85a + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>759dbd4a-2473-46f3-a932-48d987c9b4a1 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> + <model> + <model-name-version-id>897df7ea-8938-42b0-bc57-46e913a4d93b + </model-name-version-id> + <model-type>widget</model-type> + <model-name>logical-link</model-name> + <model-id>c575bd11-6907-4b44-82d8-f55294fff63f</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175143</resource-version> + <relationship-list /> + </model> + <model> + <model-name-version-id>f749dc48-4f58-4601-9d3e-605a06a0899e + </model-name-version-id> + <model-type>widget</model-type> + <model-name>vlan</model-name> + <model-id>76544264-9287-45c6-871b-6e7a456a9f32</model-id> + <model-version>v1.0</model-version> + <resource-version>1463175178</resource-version> + <relationship-list> + <relationship> + <related-to>model-element</related-to> + <related-link>https://localhost:8443/aai/v7/service-design-and-creation/model-elements/model-element/fd994cef-bc62-460f-bd21-cc8c07fbccc4/ + </related-link> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>fd994cef-bc62-460f-bd21-cc8c07fbccc4 + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model-element.model-element-uuid + </relationship-key> + <relationship-value>f7659dac-6311-45b6-b483-60b39364a85a + </relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>759dbd4a-2473-46f3-a932-48d987c9b4a1 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model> +</models> diff --git a/src/test/resources/models/named-query-wan-connector.xml b/src/test/resources/models/named-query-wan-connector.xml new file mode 100644 index 0000000..d0d5a05 --- /dev/null +++ b/src/test/resources/models/named-query-wan-connector.xml @@ -0,0 +1,90 @@ +<!-- + ============LICENSE_START======================================================= + MODEL LOADER SERVICE + ================================================================================ + 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========================================================= + --> + +<named-query xmlns="http://org.openecomp.aai.inventory/v7"> + <named-query-uuid>94cac189-8d88-4d63-a194-f44214e080ff + </named-query-uuid> + <named-query-name>wan-connector</named-query-name> + <named-query-version>v1.0</named-query-version> + <description>Named Query - Wan Connector</description> + <named-query-elements> + <named-query-element> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- connector --> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>d09dd9da-0148-46cd-a947-591afc844d24 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + <named-query-elements> + <named-query-element> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- vdc --> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>997fc7-fca1-451f-b953-9a1e6197b4d6 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + <named-query-elements> + <named-query-element> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- logical-link --> + <relationship-key>model.model-name-version-id + </relationship-key> + <relationship-value>897df7ea-8938-42b0-bc57-46e913a4d93b + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + <named-query-elements> + <named-query-element> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- pserver --> + <relationship-key>model.model-name-version-id + </relationship-key> + <relationship-value>f2b24d95-c582-48d5-b2d6-c5b3a94ce812 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </named-query-element> + </named-query-elements> + </named-query-element> + </named-query-elements> + </named-query-element> + </named-query-elements> + </named-query-element> + </named-query-elements> +</named-query> + diff --git a/src/test/resources/models/vnf-model.json b/src/test/resources/models/vnf-model.json new file mode 100644 index 0000000..5bebe59 --- /dev/null +++ b/src/test/resources/models/vnf-model.json @@ -0,0 +1,10 @@ +{ + "model": + { + "model-name-version-id":"model-vid", + "model-type":"widget", + "model-version":"v1.0", + "model-id":"model-id", + "model-name":"generic-vnf" + } +} diff --git a/src/test/resources/models/vnf-model.xml b/src/test/resources/models/vnf-model.xml new file mode 100644 index 0000000..616f4b9 --- /dev/null +++ b/src/test/resources/models/vnf-model.xml @@ -0,0 +1,27 @@ +<!-- + ============LICENSE_START======================================================= + MODEL LOADER SERVICE + ================================================================================ + 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========================================================= + --> + +<model xmlns="http://org.openecomp.aai.inventory/v7"> + <model-id>model-id</model-id> + <model-type>widget</model-type> + <model-name>generic-vnf</model-name> + <model-version>v1.0</model-version> + <model-name-version-id>model-vid</model-name-version-id> +</model> diff --git a/src/test/resources/models/wan-connector-model.xml b/src/test/resources/models/wan-connector-model.xml new file mode 100644 index 0000000..5e3ff10 --- /dev/null +++ b/src/test/resources/models/wan-connector-model.xml @@ -0,0 +1,186 @@ +<!-- + ============LICENSE_START======================================================= + MODEL LOADER SERVICE + ================================================================================ + 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========================================================= + --> + +<model xmlns="http://org.openecomp.aai.inventory/v7"> + <model-id>e4a9901b-6c94-4e07-b8d8-b877d3df554c</model-id> + <model-type>service</model-type> + <model-name>wan-connector</model-name> + <model-version>v1.0</model-version> + <model-name-version-id>93d9d45d-7eec-4371-9083-675e4c353de3 + </model-name-version-id> + <model-description>Connects a customer vpn to the border elements of an + AT&T product</model-description> + <metadata> + <metadatum> + <metaname>a</metaname> + <metaval>vpn-id</metaval> + </metadatum> + <metadatum> + <metaname>b</metaname> + <metaval>product</metaval> + </metadatum> + </metadata> + <model-elements> + <model-element> + <new-data-del-flag>true</new-data-del-flag> + <cardinality>unbounded</cardinality> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- connector --> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>d09dd9da-0148-46cd-a947-591afc844d24 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + <model-elements> + <model-element> + <new-data-del-flag>true</new-data-del-flag> + <cardinality>unbounded</cardinality> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- vdc --> + <relationship-key>model.model-name-version-id</relationship-key> + <relationship-value>997fc7-fca1-451f-b953-9a1e6197b4d6 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + <model-elements> + <model-element> + <new-data-del-flag>true</new-data-del-flag> + <cardinality>unbounded</cardinality> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- l2-bridge-for-wan-connector --> + <relationship-key>model.model-name-version-id + </relationship-key> + <relationship-value>ae16244f-4d29-4801-a559-e25f2db2a4c3 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + <model-constraint> + <constrained-element-sets> + <constrained-element-set> + <path>logical-link</path> + <constrained-element-set-uuid>999 + </constrained-element-set-uuid> + <constraint-type>combination</constraint-type> + <check-type>AND</check-type> + <element-choice-sets> + <element-choice-set> + <element-choice-set-name>A</element-choice-set-name> + <cardinality>1</cardinality> + <model-elements> + <model-element> + <cardinality>unbounded</cardinality> + <new-data-del-flag>false</new-data-del-flag> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- ipe --> + <relationship-key>model.model-name-version-id + </relationship-key> + <relationship-value>759dbd4a-2473-46f3-a932-48d987c9b4a1 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + <linkage-points> + <linkage-point>l-interface|p-interface|pserver + </linkage-point> + </linkage-points> + </model-element> + </model-elements> + </element-choice-set> + <element-choice-set> + <element-choice-set-name>B</element-choice-set-name> + <cardinality>1</cardinality> + <model-elements> + <model-element> + <cardinality>unbounded</cardinality> + <new-data-del-flag>false</new-data-del-flag> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- vDbe --> + <relationship-key>model.model-name-version-id + </relationship-key> + <relationship-value>8da97b81-e0e9-4157-a4cd-af3ba52871d6 + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model-element> + <model-element> + <cardinality>unbounded</cardinality> + <new-data-del-flag>false</new-data-del-flag> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- vSbg --> + <relationship-key>model.model-name-version-id + </relationship-key> + <relationship-value>a6d9de88-4046-4b78-a59e-5691243d292a + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model-element> + <model-element> + <cardinality>unbounded</cardinality> + <new-data-del-flag>false</new-data-del-flag> + <relationship-list> + <relationship> + <related-to>model</related-to> + <relationship-data> + <!-- pBgf --> + <relationship-key>model.model-name-version-id + </relationship-key> + <relationship-value>35be1acf-1298-48c6-a128-66850083b8bd + </relationship-value> + </relationship-data> + </relationship> + </relationship-list> + </model-element> + </model-elements> + </element-choice-set> + </element-choice-sets> + </constrained-element-set> + </constrained-element-sets> + </model-constraint> + </model-element> + </model-elements> + </model-element> + </model-elements> + </model-element> + </model-elements> +</model> + diff --git a/src/test/resources/vnfcatalogexample.xml b/src/test/resources/vnfcatalogexample.xml new file mode 100644 index 0000000..1557efa --- /dev/null +++ b/src/test/resources/vnfcatalogexample.xml @@ -0,0 +1,1878 @@ +<!-- + ============LICENSE_START======================================================= + MODEL LOADER SERVICE + ================================================================================ + 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========================================================= + --> + +<vnf-catalog> + <part-number-list> + <att-part-number>FortiGate-VM00</att-part-number> + <vnf-type>FW</vnf-type> + <vendor-info> + <vendor-name>FORTINET</vendor-name> + <vendor-part-number>FortiGate-VM00</vendor-part-number> + <vendor-model>VM00</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>1</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>1</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>1</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>1</vmemory-min> + <vmemory-max>1</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>2</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>2</vdisk-min> + <vdisk-max>32</vdisk-max> + </vdisk> + <software-version-list> + <software-version>5.2.7</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>1c59a521885c465004456f74d003726c</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.7.qcow2</software-filename> + </software-version-list> + <software-version-list> + <software-version>5.2.5</software-version> + <software-version-state>1</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>C4D2CBE51669796E48623E006782F7DC</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.5.qcow2</software-filename> + </software-version-list> + <software-version-list> + <software-version>5.2.4</software-version> + <software-version-state>2</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>4987E1E743FD641C879E1D3C5D50BCE0</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.4.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>APPID</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>IPS-IDS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>URLF</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Anti-Virus</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>FortiGate-VM00</license-assignment-group> + <license-required>FALSE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>FortiGate-VM01</att-part-number> + <vnf-type>FW</vnf-type> + <vendor-info> + <vendor-name>FORTINET</vendor-name> + <vendor-part-number>FortiGate-VM01</vendor-part-number> + <vendor-model>VM01</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>1</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>1</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>2</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>1</vmemory-min> + <vmemory-max>2</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>2</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>2</vdisk-min> + <vdisk-max>32</vdisk-max> + </vdisk> + <software-version-list> + <software-version>5.2.7</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>1c59a521885c465004456f74d003726c</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.7.qcow2</software-filename> + </software-version-list> + <software-version-list> + <software-version>5.2.5</software-version> + <software-version-state>1</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>C4D2CBE51669796E48623E006782F7DC</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.5.qcow2</software-filename> + </software-version-list> + <software-version-list> + <software-version>5.2.4</software-version> + <software-version-state>2</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>4987E1E743FD641C879E1D3C5D50BCE0</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.4.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>APPID</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>IPS-IDS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>URLF</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Anti-Virus</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>FortiGate-VM01</license-assignment-group> + <license-required>FALSE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>FortiGate-VM02</att-part-number> + <vnf-type>FW</vnf-type> + <vendor-info> + <vendor-name>FORTINET</vendor-name> + <vendor-part-number>FortiGate-VM02</vendor-part-number> + <vendor-model>VM02</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>1</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>4</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>2</vdisk-min> + <vdisk-max>32</vdisk-max> + </vdisk> + <software-version-list> + <software-version>5.2.7</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>1c59a521885c465004456f74d003726c</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.7.qcow2</software-filename> + </software-version-list> + <software-version-list> + <software-version>5.2.5</software-version> + <software-version-state>1</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>C4D2CBE51669796E48623E006782F7DC</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.5.qcow2</software-filename> + </software-version-list> + <software-version-list> + <software-version>5.2.4</software-version> + <software-version-state>2</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>4987E1E743FD641C879E1D3C5D50BCE0</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.4.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>APPID</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>IPS-IDS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>URLF</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Anti-Virus</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>FortiGate-VM02</license-assignment-group> + <license-required>FALSE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>FortiGate-VM04</att-part-number> + <vnf-type>FW</vnf-type> + <vendor-info> + <vendor-name>FORTINET</vendor-name> + <vendor-part-number>FortiGate-VM04</vendor-part-number> + <vendor-model>VM04</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>4</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>4</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>6</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>1</vmemory-min> + <vmemory-max>6</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>8</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>2</vdisk-min> + <vdisk-max>32</vdisk-max> + </vdisk> + <software-version-list> + <software-version>5.2.7</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>1c59a521885c465004456f74d003726c</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.7.qcow2</software-filename> + </software-version-list> + <software-version-list> + <software-version>5.2.5</software-version> + <software-version-state>1</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>C4D2CBE51669796E48623E006782F7DC</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.5.qcow2</software-filename> + </software-version-list> + <software-version-list> + <software-version>5.2.4</software-version> + <software-version-state>2</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>4987E1E743FD641C879E1D3C5D50BCE0</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.4.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>APPID</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>IPS-IDS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>URLF</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Anti-Virus</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>FortiGate-VM04</license-assignment-group> + <license-required>FALSE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>FortiGate-VM08</att-part-number> + <vnf-type>FW</vnf-type> + <vendor-info> + <vendor-name>FORTINET</vendor-name> + <vendor-part-number>FortiGate-VM08</vendor-part-number> + <vendor-model>VM08</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>8</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>8</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>12</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>1</vmemory-min> + <vmemory-max>12</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>16</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>2</vdisk-min> + <vdisk-max>32</vdisk-max> + </vdisk> + <software-version-list> + <software-version>5.2.7</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>1c59a521885c465004456f74d003726c</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.7.qcow2</software-filename> + </software-version-list> + <software-version-list> + <software-version>5.2.5</software-version> + <software-version-state>1</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>C4D2CBE51669796E48623E006782F7DC</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.5.qcow2</software-filename> + </software-version-list> + <software-version-list> + <software-version>5.2.4</software-version> + <software-version-state>2</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>4987E1E743FD641C879E1D3C5D50BCE0</file-md5-value> + <software-filename>fortinet-FW-IMG-5.2.4.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>APPID</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>IPS-IDS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>URLF</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Anti-Virus</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>FortiGate-VM08</license-assignment-group> + <license-required>FALSE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>L-CSR-10M-APP-1Y</att-part-number> + <vnf-type>RT</vnf-type> + <vendor-info> + <vendor-name>CISCO</vendor-name> + <vendor-part-number>L-CSR-10M-APP-1Y</vendor-part-number> + <vendor-model>L-CSR-10M-APP-1Y</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>1</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>1</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>8</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>8</vdisk-min> + <vdisk-max>8</vdisk-max> + </vdisk> + <software-version-list> + <software-version>3.16.1aS</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <software-filename>cisco-RT-IMG-csr1000v-universalk9.03.16.01a.S.155-3.S1a-ext.qcow2</software-filename> + <file-md5-value>D034E0BC74A84EFFE667113E5ABAC6E1</file-md5-value> + </software-version-list> + + <vnf-features-list> + <vnf-feature>IPv6</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NetFLOW v9</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NTP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>SNMP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>GRE Tunnel</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Border Gateway Protocol (BGP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Open Shortest Path First (OSPF)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Enhanced Interior Gateway Routing Protocol (EIGRP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NAT</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Server</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Relay</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRF-Lite</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>COS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Multicast</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>HSRP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRRP</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>L-CSR-10M-APP-1Y</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>L-CSR-50M-APP-1Y</att-part-number> + <vnf-type>RT</vnf-type> + <vendor-info> + <vendor-name>CISCO</vendor-name> + <vendor-part-number>L-CSR-50M-APP-1Y</vendor-part-number> + <vendor-model>L-CSR-50M-APP-1Y</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>1</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>1</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>8</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>8</vdisk-min> + <vdisk-max>8</vdisk-max> + </vdisk> + <software-version-list> + <software-version>3.16.1aS</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <software-filename>cisco-RT-IMG-csr1000v-universalk9.03.16.01a.S.155-3.S1a-ext.qcow2</software-filename> + <file-md5-value>D034E0BC74A84EFFE667113E5ABAC6E1</file-md5-value> + </software-version-list> + + <vnf-features-list> + <vnf-feature>IPv6</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NetFLOW v9</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NTP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>SNMP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>GRE Tunnel</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Border Gateway Protocol (BGP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Open Shortest Path First (OSPF)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Enhanced Interior Gateway Routing Protocol (EIGRP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NAT</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Server</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Relay</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRF-Lite</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>COS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Multicast</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>HSRP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRRP</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>L-CSR-50M-APP-1Y</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>L-CSR-100M-APP-1Y</att-part-number> + <vnf-type>RT</vnf-type> + <vendor-info> + <vendor-name>CISCO</vendor-name> + <vendor-part-number>L-CSR-100M-APP-1Y</vendor-part-number> + <vendor-model>L-CSR-100M-APP-1Y</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>1</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>1</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>8</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>8</vdisk-min> + <vdisk-max>8</vdisk-max> + </vdisk> + <software-version-list> + <software-version>3.16.1aS</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <software-filename>cisco-RT-IMG-csr1000v-universalk9.03.16.01a.S.155-3.S1a-ext.qcow2</software-filename> + <file-md5-value>D034E0BC74A84EFFE667113E5ABAC6E1</file-md5-value> + </software-version-list> + + <vnf-features-list> + <vnf-feature>IPv6</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NetFLOW v9</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NTP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>SNMP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>GRE Tunnel</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Border Gateway Protocol (BGP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Open Shortest Path First (OSPF)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Enhanced Interior Gateway Routing Protocol (EIGRP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NAT</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Server</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Relay</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRF-Lite</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>COS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Multicast</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>HSRP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRRP</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>L-CSR-100M-APP-1Y</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>L-CSR-250M-APP-1Y</att-part-number> + <vnf-type>RT</vnf-type> + <vendor-info> + <vendor-name>CISCO</vendor-name> + <vendor-part-number>L-CSR-250M-APP-1Y</vendor-part-number> + <vendor-model>L-CSR-250M-APP-1Y</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>1</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>1</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>8</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>8</vdisk-min> + <vdisk-max>8</vdisk-max> + </vdisk> + <software-version-list> + <software-version>3.16.1aS</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <software-filename>cisco-RT-IMG-csr1000v-universalk9.03.16.01a.S.155-3.S1a-ext.qcow2</software-filename> + <file-md5-value>D034E0BC74A84EFFE667113E5ABAC6E1</file-md5-value> + </software-version-list> + + <vnf-features-list> + <vnf-feature>IPv6</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NetFLOW v9</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NTP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>SNMP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>GRE Tunnel</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Border Gateway Protocol (BGP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Open Shortest Path First (OSPF)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Enhanced Interior Gateway Routing Protocol (EIGRP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NAT</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Server</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Relay</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRF-Lite</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>COS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Multicast</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>HSRP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRRP</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>L-CSR-250M-APP-1Y</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>L-CSR-500M-APP-1Y</att-part-number> + <vnf-type>RT</vnf-type> + <vendor-info> + <vendor-name>CISCO</vendor-name> + <vendor-part-number>L-CSR-500M-APP-1Y</vendor-part-number> + <vendor-model>L-CSR-500M-APP-1Y</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>1</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>1</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>8</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>8</vdisk-min> + <vdisk-max>8</vdisk-max> + </vdisk> + <software-version-list> + <software-version>3.16.1aS</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <software-filename>cisco-RT-IMG-csr1000v-universalk9.03.16.01a.S.155-3.S1a-ext.qcow2</software-filename> + <file-md5-value>D034E0BC74A84EFFE667113E5ABAC6E1</file-md5-value> + </software-version-list> + + <vnf-features-list> + <vnf-feature>IPv6</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NetFLOW v9</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NTP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>SNMP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>GRE Tunnel</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Border Gateway Protocol (BGP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Open Shortest Path First (OSPF)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Enhanced Interior Gateway Routing Protocol (EIGRP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NAT</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Server</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Relay</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRF-Lite</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>COS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Multicast</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>HSRP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRRP</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>L-CSR-500M-APP-1Y</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>L-CSR-1G-APP-1Y</att-part-number> + <vnf-type>RT</vnf-type> + <vendor-info> + <vendor-name>CISCO</vendor-name> + <vendor-part-number>L-CSR-1G-APP-1Y</vendor-part-number> + <vendor-model>L-CSR-1G-APP-1Y</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>1</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>1</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>8</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>8</vdisk-min> + <vdisk-max>8</vdisk-max> + </vdisk> + <software-version-list> + <software-version>3.16.1aS</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <software-filename>cisco-RT-IMG-csr1000v-universalk9.03.16.01a.S.155-3.S1a-ext.qcow2</software-filename> + <file-md5-value>D034E0BC74A84EFFE667113E5ABAC6E1</file-md5-value> + </software-version-list> + + <vnf-features-list> + <vnf-feature>IPv6</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NetFLOW v9</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NTP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>SNMP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>GRE Tunnel</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Border Gateway Protocol (BGP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Open Shortest Path First (OSPF)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Enhanced Interior Gateway Routing Protocol (EIGRP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NAT</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Server</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Relay</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRF-Lite</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>COS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Multicast</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>HSRP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRRP</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>L-CSR-1G-APP-1Y</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>L-CSR-2.5G-APP-1Y</att-part-number> + <vnf-type>RT</vnf-type> + <vendor-info> + <vendor-name>CISCO</vendor-name> + <vendor-part-number>L-CSR-2.5G-APP-1Y</vendor-part-number> + <vendor-model>L-CSR-2.5G-APP-1Y</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>1</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>1</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>8</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>8</vdisk-min> + <vdisk-max>8</vdisk-max> + </vdisk> + <software-version-list> + <software-version>3.16.1aS</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <software-filename>cisco-RT-IMG-csr1000v-universalk9.03.16.01a.S.155-3.S1a-ext.qcow2</software-filename> + <file-md5-value>D034E0BC74A84EFFE667113E5ABAC6E1</file-md5-value> + </software-version-list> + + <vnf-features-list> + <vnf-feature>IPv6</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NetFLOW v9</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NTP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>SNMP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>GRE Tunnel</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Border Gateway Protocol (BGP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Open Shortest Path First (OSPF)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Enhanced Interior Gateway Routing Protocol (EIGRP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NAT</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Server</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Relay</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRF-Lite</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>COS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Multicast</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>HSRP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRRP</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>L-CSR-2.5G-APP-1Y</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00255-U</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00255-U</vendor-part-number> + <vendor-model>VCX-SUB-00255-U</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>2</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>2</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>50</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>50</vdisk-min> + <vdisk-max>50</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00255-U</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00255-L</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00255-L</vendor-part-number> + <vendor-model>VCX-SUB-00255-L</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>2</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>2</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>50</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>50</vdisk-min> + <vdisk-max>50</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00255-L</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00255-M</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00255-M</vendor-part-number> + <vendor-model>VCX-SUB-00255-M</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>2</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>2</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>50</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>50</vdisk-min> + <vdisk-max>50</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00255-M</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00255-H</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00255-H</vendor-part-number> + <vendor-model>VCX-SUB-00255-H</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>2</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>2</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>50</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>50</vdisk-min> + <vdisk-max>50</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00255-H</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00555-L</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00555-L</vendor-part-number> + <vendor-model>VCX-SUB-00555-L</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>80</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>80</vdisk-min> + <vdisk-max>80</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00555-L</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00555-M</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00555-M</vendor-part-number> + <vendor-model>VCX-SUB-00555-M</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>80</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>80</vdisk-min> + <vdisk-max>80</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00555-M</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00555-H</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00555-H</vendor-part-number> + <vendor-model>VCX-SUB-00555-H</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>80</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>80</vdisk-min> + <vdisk-max>80</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00555-H</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00755-L</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00755-L</vendor-part-number> + <vendor-model>VCX-SUB-00755-L</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>4</vcpu-default> + <vcpu-min>2</vcpu-min> + <vcpu-max>4</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>8</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>8</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>150</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>150</vdisk-min> + <vdisk-max>150</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00755-L</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00755-M</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00755-M</vendor-part-number> + <vendor-model>VCX-SUB-00755-M</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>4</vcpu-default> + <vcpu-min>2</vcpu-min> + <vcpu-max>4</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>8</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>8</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>150</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>150</vdisk-min> + <vdisk-max>150</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00755-M</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00755-H</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00755-H</vendor-part-number> + <vendor-model>VCX-SUB-00755-H</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>4</vcpu-default> + <vcpu-min>2</vcpu-min> + <vcpu-max>4</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>8</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>8</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>150</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>150</vdisk-min> + <vdisk-max>150</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00755-H</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00255-UB</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00255-UB</vendor-part-number> + <vendor-model>VCX-SUB-00255-UB</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>2</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>2</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>50</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>50</vdisk-min> + <vdisk-max>50</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00255-UB</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00255-LB</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00255-LB</vendor-part-number> + <vendor-model>VCX-SUB-00255-LB</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>2</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>2</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>50</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>50</vdisk-min> + <vdisk-max>50</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00255-LB</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00255-MB</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00255-MB</vendor-part-number> + <vendor-model>VCX-SUB-00255-MB</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>2</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>2</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>50</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>50</vdisk-min> + <vdisk-max>50</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00255-MB</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00255-HB</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00255-HB</vendor-part-number> + <vendor-model>VCX-SUB-00255-HB</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>2</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>2</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>50</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>50</vdisk-min> + <vdisk-max>50</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00255-HB</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00555-LB</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00555-LB</vendor-part-number> + <vendor-model>VCX-SUB-00555-LB</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>80</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>80</vdisk-min> + <vdisk-max>80</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00555-LB</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00555-MB</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00555-MB</vendor-part-number> + <vendor-model>VCX-SUB-00555-MB</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>80</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>80</vdisk-min> + <vdisk-max>80</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00555-MB</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00555-HB</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00555-HB</vendor-part-number> + <vendor-model>VCX-SUB-00555-HB</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>1</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>2</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>80</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>80</vdisk-min> + <vdisk-max>80</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00555-HB</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00755-LB</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00755-LB</vendor-part-number> + <vendor-model>VCX-SUB-00755-LB</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>4</vcpu-default> + <vcpu-min>2</vcpu-min> + <vcpu-max>4</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>8</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>8</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>150</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>150</vdisk-min> + <vdisk-max>150</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00755-LB</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00755-MB</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00755-MB</vendor-part-number> + <vendor-model>VCX-SUB-00755-MB</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>4</vcpu-default> + <vcpu-min>2</vcpu-min> + <vcpu-max>4</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>8</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>8</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>150</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>150</vdisk-min> + <vdisk-max>150</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00755-MB</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>VCX-SUB-00755-HB</att-part-number> + <vnf-type>WX</vnf-type> + <vendor-info> + <vendor-name>RIVERBED</vendor-name> + <vendor-part-number>VCX-SUB-00755-HB</vendor-part-number> + <vendor-model>VCX-SUB-00755-HB</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>4</vcpu-default> + <vcpu-min>2</vcpu-min> + <vcpu-max>4</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>8</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>8</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>150</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>150</vdisk-min> + <vdisk-max>150</vdisk-max> + </vdisk> + <software-version-list> + <software-version>9.2.0</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <file-md5-value>386CF5D3482F068EC9C480B51F6BCE42</file-md5-value> + <software-filename>riverbed-WX-IMG-9.2.0.qcow2</software-filename> + </software-version-list> + <vnf-features-list> + <vnf-feature>TCP OPTIMIZATION</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>APPLICATION OPTIMIZATION</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>VCX-SUB-00755-HB</license-assignment-group> + <license-required>TRUE</license-required> + </license-list> + </part-number-list> + <part-number-list> + <att-part-number>JUN-vSRX-15X</att-part-number> + <vnf-type>RT</vnf-type> + <vendor-info> + <vendor-name>JUNIPER</vendor-name> + <vendor-part-number>JUN-vSRX-15X</vendor-part-number> + <vendor-model>VSRX</vendor-model> + </vendor-info> + <vcpu> + <vcpu-default>2</vcpu-default> + <vcpu-min>2</vcpu-min> + <vcpu-max>2</vcpu-max> + </vcpu> + <vmemory> + <vmemory-default>4</vmemory-default> + <vmemory-units>GB</vmemory-units> + <vmemory-min>4</vmemory-min> + <vmemory-max>4</vmemory-max> + </vmemory> + <vdisk> + <vdisk-default>8</vdisk-default> + <vdisk-units>GB</vdisk-units> + <vdisk-min>8</vdisk-min> + <vdisk-max>8</vdisk-max> + </vdisk> + <software-version-list> + <software-version>15.1X49-D40.6</software-version> + <software-version-state>0</software-version-state> + <software-filetype>IMAGE</software-filetype> + <software-filename>media-vsrx-vmdisk-15.1X49-D40.6.qcow2</software-filename> + <file-md5-value>4b874dbd75fc83dc2494b90b2012d514</file-md5-value> + </software-version-list> + <vnf-features-list> + <vnf-feature>IPv6</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NetFLOW v9</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NTP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>SNMP</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>GRE Tunnel</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Border Gateway Protocol (BGP)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Open Shortest Path First (OSPF)</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>NAT</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Server</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>DHCP Relay</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRF-Lite</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>COS</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>Multicast</vnf-feature> + </vnf-features-list> + <vnf-features-list> + <vnf-feature>VRRP</vnf-feature> + </vnf-features-list> + <license-list> + <license-assignment-group>JUN-vSRX-15X</license-assignment-group> + <license-required>FALSE</license-required> + </license-list> + </part-number-list> +</vnf-catalog> |