Merge "Add basic SDC simulator"
authorGary Wu <gary.i.wu@huawei.com>
Fri, 31 Aug 2018 15:45:38 +0000 (15:45 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 31 Aug 2018 15:45:38 +0000 (15:45 +0000)
test/csit/tests/vid/resources/docker-compose.yml
test/csit/tests/vid/resources/simulators/SDC.py [new file with mode: 0644]
test/csit/tests/vid/resources/simulators/SDC_simulator [new file with mode: 0644]
test/csit/tests/vid/resources/simulators/cert.pem [new file with mode: 0644]
test/csit/tests/vid/resources/simulators/key.pem [new file with mode: 0644]
test/csit/tests/vid/resources/simulators/sdc_get_response.json [new file with mode: 0644]

index 8f6d4a7..93b3170 100644 (file)
@@ -5,12 +5,14 @@ services:
         environment:
             - VID_MYSQL_DBNAME=vid_openecomp_epsdk
             - VID_MYSQL_PASS=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+            - ASDC_CLIENT_REST_HOST=localhost
+            - ASDC_CLIENT_REST_PORT=8443
         ports:
             - "8080:8080"
         container_name: vid-server
         links:
             - vid-mariadb:vid-mariadb-docker-instance
-            
+
     vid-mariadb:
         image: mariadb:10
         environment:
@@ -23,3 +25,11 @@ services:
             - ${WORKSPACE}/data/clone/vid/lf_config/vid-my.cnf:/etc/mysql/my.cnf
             - ${WORKSPACE}/data/clone/vid/lf_config/vid-schema.sql:/docker-entrypoint-initdb.d/vid-schema.sql
             - /var/lib/mysql
+
+    sdc_simulator:
+        build:
+            context: simulators
+            dockerfile: SDC_simulator
+        ports:
+        - "8443:8443"
+        container_name: sdc_simulator
\ No newline at end of file
diff --git a/test/csit/tests/vid/resources/simulators/SDC.py b/test/csit/tests/vid/resources/simulators/SDC.py
new file mode 100644 (file)
index 0000000..e99a0bd
--- /dev/null
@@ -0,0 +1,37 @@
+import ssl
+from http.server import BaseHTTPRequestHandler, HTTPServer
+
+from sys import argv
+
+DEFAULT_PORT = 8443
+
+
+class SDCHandler(BaseHTTPRequestHandler):
+
+    def __init__(self, request, client_address, server):
+        self.response_on_get = self._read_on_get_response()
+        super().__init__(request, client_address, server)
+
+    def do_GET(self):
+        self.send_response(200)
+        self._set_headers()
+
+        self.wfile.write(self.response_on_get.encode("utf-8"))
+        return
+
+    def _set_headers(self):
+        self.send_header('Content-Type', 'application/json')
+        self.end_headers()
+
+    @staticmethod
+    def _read_on_get_response():
+        with open('sdc_get_response.json', 'r') as file:
+            return file.read()
+
+
+if __name__ == '__main__':
+    SDCHandler.protocol_version = "HTTP/1.1"
+
+    httpd = HTTPServer(('', DEFAULT_PORT), SDCHandler)
+    httpd.socket = ssl.wrap_socket(httpd.socket, server_side=True, certfile='cert.pem', keyfile='key.pem')
+    httpd.serve_forever()
diff --git a/test/csit/tests/vid/resources/simulators/SDC_simulator b/test/csit/tests/vid/resources/simulators/SDC_simulator
new file mode 100644 (file)
index 0000000..ec67e9f
--- /dev/null
@@ -0,0 +1,7 @@
+FROM python:3
+
+ADD SDC.py /
+
+EXPOSE 8443
+
+CMD [ "python", "./SDC.py" ]
diff --git a/test/csit/tests/vid/resources/simulators/cert.pem b/test/csit/tests/vid/resources/simulators/cert.pem
new file mode 100644 (file)
index 0000000..cea1e37
--- /dev/null
@@ -0,0 +1,74 @@
+Bag Attributes
+    friendlyName: 1
+    localKeyID: 54 69 6D 65 20 31 35 33 35 36 31 39 34 30 35 39 30 38
+subject=/C=US/ST=Michigan/L=Southfield/O=ATT Services, Inc./OU=ASDC/CN=mtanjv9sdcf51.aic.cip.att.com
+issuer=/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4
+-----BEGIN CERTIFICATE-----
+MIIGDzCCBPegAwIBAgIQfZLBdhhGhkOBcXuI5oF0gTANBgkqhkiG9w0BAQsFADB+
+MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAd
+BgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxLzAtBgNVBAMTJlN5bWFudGVj
+IENsYXNzIDMgU2VjdXJlIFNlcnZlciBDQSAtIEc0MB4XDTE1MTIwOTAwMDAwMFoX
+DTE2MTIwODIzNTk1OVowgYkxCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhNaWNoaWdh
+bjETMBEGA1UEBwwKU291dGhmaWVsZDEbMBkGA1UECgwSQVRUIFNlcnZpY2VzLCBJ
+bmMuMQ0wCwYDVQQLDARBU0RDMSYwJAYDVQQDDB1tdGFuanY5c2RjZjUxLmFpYy5j
+aXAuYXR0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOup99Ff
+gk02lwXv535Y1FCCE8vL47BKj96h6to8rXwwN+9W+xiVEIgDXKOWBC7W8iEP2tOd
+Smzi3wsZIivaFh2yPGtj1z0a7WuA7wNw1fJF4WGr4VFaxHbMBaPOZHa3D+iIduWP
+H/t6ECEzfGRRtTt+mVCpV8Rx+v/q8d0yO114u/WBtbGGlIPDJcrHLRODnjM+mkjq
+EwfoR9qqqjbJhjUkUujGM/qVKm3YAjMIZ1ldteRXUew4xI/Foo6u3hqJwbYIJf3r
+fzWCt+fIyktDsm/c1w9HcX+8R0alK90bjC2D5auukIfbmhxd4MR9NBAH0SFleQtw
+SQLN6GYMVexhUEECAwEAAaOCAnswggJ3MCgGA1UdEQQhMB+CHW10YW5qdjlzZGNm
+NTEuYWljLmNpcC5hdHQuY29tMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0G
+A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBhBgNVHSAEWjBYMFYGBmeBDAEC
+AjBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2NwczAlBggrBgEF
+BQcCAjAZGhdodHRwczovL2Quc3ltY2IuY29tL3JwYTAfBgNVHSMEGDAWgBRfYM9h
+kFXfhEMUimAqsvV69EMY7zArBgNVHR8EJDAiMCCgHqAchhpodHRwOi8vc3Muc3lt
+Y2IuY29tL3NzLmNybDBXBggrBgEFBQcBAQRLMEkwHwYIKwYBBQUHMAGGE2h0dHA6
+Ly9zcy5zeW1jZC5jb20wJgYIKwYBBQUHMAKGGmh0dHA6Ly9zcy5zeW1jYi5jb20v
+c3MuY3J0MIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHYA3esdK3oNT6Ygi4GtgWhw
+fi6OnQHVXIiNPRHEzbbsvswAAAFRh4XRnAAABAMARzBFAiBXZqph5qeHUUnY8OkH
+jJLo454/8c9IBB7asjEYWYoBPQIhAKAwvP8KfqilgawBkuRV7r41P8Xd3Yi72RQO
+1Dvpi8rkAHcApLkJkLQYWBSHuxOizGdwCjw1mAT5G9+443fNDsgN3BAAAAFRh4XR
+3AAABAMASDBGAiEAon+cZcRpSsuo1aiCtaN3aAG0EqJb/1jJ4m4Q/qo1nEoCIQCr
+KrBNyywa4OTmSVSAsyazbnMr5ldimxNORhhtyGeFLDANBgkqhkiG9w0BAQsFAAOC
+AQEAG3/Mq8F0wbCpOOMCq4dZwgLENBjor9b9UljQZ+sgt7Nn00bfGdxY4MKtOTiK
+9ks/nV9sW0KyvhsZvLPPgdSCnu0MZogWQsKqQDkIkJoHtFRSaYTT1vLAIoKz/dN+
+SBS71EzFH92lMfiFtAjfTrFady0/6z7lp4VZwbXLWjHw6LQESENc29Xw1jpCVkg8
+iB2n/qCFfyw3HuvP+eW2TLmnHOl0tda1vrYKCXT2n7HepiJM3g9yLjb/w3MuxEmw
+dj1DqRemXtOUJW0mQXn1mRBjXEunzHoCr3GaeSU6G3RbIzXr34Hsv4IbggkhRula
+gQIYidtDmw0PS1kyaFvlhZkd1g==
+-----END CERTIFICATE-----
+Bag Attributes
+    friendlyName: CN=Symantec Class 3 Secure Server CA - G4,OU=Symantec Trust Network,O=Symantec Corporation,C=US
+subject=/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4
+issuer=/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
+-----BEGIN CERTIFICATE-----
+MIIFODCCBCCgAwIBAgIQUT+5dDhwtzRAQY0wkwaZ/zANBgkqhkiG9w0BAQsFADCB
+yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
+ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
+U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
+ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
+aG9yaXR5IC0gRzUwHhcNMTMxMDMxMDAwMDAwWhcNMjMxMDMwMjM1OTU5WjB+MQsw
+CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV
+BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxLzAtBgNVBAMTJlN5bWFudGVjIENs
+YXNzIDMgU2VjdXJlIFNlcnZlciBDQSAtIEc0MIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAstgFyhx0LbUXVjnFSlIJluhL2AzxaJ+aQihiw6UwU35VEYJb
+A3oNL+F5BMm0lncZgQGUWfm893qZJ4Itt4PdWid/sgN6nFMl6UgfRk/InSn4vnlW
+9vf92Tpo2otLgjNBEsPIPMzWlnqEIRoiBAMnF4scaGGTDw5RgDMdtLXO637QYqzu
+s3sBdO9pNevK1T2p7peYyo2qRA4lmUoVlqTObQJUHypqJuIGOmNIrLRM0XWTUP8T
+L9ba4cYY9Z/JJV3zADreJk20KQnNDz0jbxZKgRb78oMQw7jW2FUyPfG9D72MUpVK
+Fpd6UiFjdS8W+cRmvvW1Cdj/JwDNRHxvSz+w9wIDAQABo4IBYzCCAV8wEgYDVR0T
+AQH/BAgwBgEB/wIBADAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vczEuc3ltY2Iu
+Y29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB/wQEAwIBBjAvBggrBgEFBQcBAQQjMCEw
+HwYIKwYBBQUHMAGGE2h0dHA6Ly9zMi5zeW1jYi5jb20wawYDVR0gBGQwYjBgBgpg
+hkgBhvhFAQc2MFIwJgYIKwYBBQUHAgEWGmh0dHA6Ly93d3cuc3ltYXV0aC5jb20v
+Y3BzMCgGCCsGAQUFBwICMBwaGmh0dHA6Ly93d3cuc3ltYXV0aC5jb20vcnBhMCkG
+A1UdEQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0xLTUzNDAdBgNVHQ4E
+FgQUX2DPYZBV34RDFIpgKrL1evRDGO8wHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnz
+Qzn6Aq8zMTMwDQYJKoZIhvcNAQELBQADggEBAF6UVkndji1l9cE2UbYD49qecxny
+H1mrWH5sJgUs+oHXXCMXIiw3k/eG7IXmsKP9H+IyqEVv4dn7ua/ScKAyQmW/hP4W
+Ko8/xabWo5N9Q+l0IZE1KPRj6S7t9/Vcf0uatSDpCr3gRRAMFJSaXaXjS5HoJJtG
+QGX0InLNmfiIEfXzf+YzguaoxX7+0AjiJVgIcWjmzaLmFN5OUiQt/eV5E1PnXi8t
+TRttQBVSK/eHiXgSgW7ZTaoteNTCLD0IX4eRnh8OsN4wUmSGiaqdZpwOdgyA8nTY
+Kvi4Os7X1g8RvmurFPW9QaAiY4nxug9vKWNmLT+sjHLF+8fk1A/yO0+MKcc=
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/test/csit/tests/vid/resources/simulators/key.pem b/test/csit/tests/vid/resources/simulators/key.pem
new file mode 100644 (file)
index 0000000..641d13f
--- /dev/null
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDrqffRX4JNNpcF
+7+d+WNRQghPLy+OwSo/eoeraPK18MDfvVvsYlRCIA1yjlgQu1vIhD9rTnUps4t8L
+GSIr2hYdsjxrY9c9Gu1rgO8DcNXyReFhq+FRWsR2zAWjzmR2tw/oiHbljx/7ehAh
+M3xkUbU7fplQqVfEcfr/6vHdMjtdeLv1gbWxhpSDwyXKxy0Tg54zPppI6hMH6Efa
+qqo2yYY1JFLoxjP6lSpt2AIzCGdZXbXkV1HsOMSPxaKOrt4aicG2CCX96381grfn
+yMpLQ7Jv3NcPR3F/vEdGpSvdG4wtg+WrrpCH25ocXeDEfTQQB9EhZXkLcEkCzehm
+DFXsYVBBAgMBAAECggEBAOkwoYCzIktnFh+Q2R9DpKsZW59QXDfoP95LmAlk+0Gk
+sOSKzCHx9o6vzO4uFmuG08Z1WtIElU2TXKMttotv3Gx8Hp8hBy12xLGYvmlIMNvv
+2+n62xTWXQs0LOx+4Rg7Yml1Bzl1227KxMUlnhPiahO53NldB/Th2D197OA0wVtl
+o3d753CNs+vVk1Z8RTUWrW1ZNHdfQNa1zrNo3Q5/evnlt+mAhFbUIKB3FgMk4N4/
+EjnTH6d+MEUD1sVCNruxqv8PZzRzzJEU/8gzy0WAPFAGOOC7hgU3n7dIEEkjvoIw
+HlZD5c6I+3AzYq08CtUwWI09pNVlznqoOY6d548YusUCgYEA9cHOUXiafXFupqpT
+HwE18Yk5sqISpPwS8yip4NPPUv+W9qvCpdkFvV3HRMlICWJGoerRsALEQYY5fsvY
+7lk1avunprbIa9XLUrvb4ydJYynFhKjXkfTAmyCmbvH8t10BfDNuXT098+4M4HpG
+YW2Arl9Db7RoOBwQtPFX2RmYOM8CgYEA9Xx4TbsbT1C6c49aDZmuFeBXDEaMTDYS
+CC50MqMQpfoqS5QVyjl7JzP/dIz9CcUExFz7MOmYCp8yocXnLwxGDrZjZMkwEz15
+8WUGj4WMpSpUSRmGEVnoVE5bRazq37vhbOwh8gcKhF1ifVgwm+Rjs+4g6DwmSR8l
+4CVK6lWrCe8CgYEA5QR7kR6z0Wywse4N0dnd/D1mIFq6xzcFLcZaMOMR1IXMmAjO
+NqF8oNDQjwCH+f60VdWvHLgnTeyYjdnHSa6mghEMVecF9L/iXzIjopaM5DUcFRkG
+8sRD7QxLLR6i4/lvFeAT3B3jKvtO0q4AAnD6NwUdoe5cJNW6l/REalNYsK8CgYBw
+n7lF2CiwW9YevE7RXIc8rB7jl943/LqLHFzc+mjh7QLIh9jzXSm+E6IIY8KXX9dP
+C2WGzDSf8ue0xmnI8PWXPGAfVhoDSboPYI0A/YFIKUJgAyC6ByiKvSQstCdRnA3Q
+/giY1Fgj4AAWh4ZNjxua6g4Y3bem5m5nBlT3a3Q76wKBgQDSMFNfVNWautPQvcYB
+iu9oQhbXVkjh+ToFWq6pW4VaWhEf/6hqvihc6PcB7FXJ1v1/ybko6cIgVmFUt43s
+it1q5aLy3v6GTS/UnDZI3r5oECEuLeUqnHm3qilbatUtwvxghgdwGK+YG0yTfS3y
+GqdNDH5YdJJMyiLdQlLIzJb/XQ==
+-----END PRIVATE KEY-----
diff --git a/test/csit/tests/vid/resources/simulators/sdc_get_response.json b/test/csit/tests/vid/resources/simulators/sdc_get_response.json
new file mode 100644 (file)
index 0000000..9f7e118
--- /dev/null
@@ -0,0 +1,301 @@
+{
+  "service": {
+    "uuid": "2763bc78-8523-482f-895b-0c0db7364224",
+    "invariantUuid": "abb2dc66-b211-49d2-ab2f-8774694136fa",
+    "name": "Bare2",
+    "version": "1.0",
+    "toscaModelURL": null,
+    "category": "Network L1-3",
+    "serviceType": "",
+    "serviceRole": "",
+    "description": "Bare2",
+    "serviceEcompNaming": "true",
+    "instantiationType": "ClientConfig",
+    "inputs": {}
+  },
+  "vnfs": {
+    "95e654c0-676b-4386-8a69 0": {
+      "uuid": "d6395498-7ecb-4eba-bf84-4380f6e9cdcf",
+      "invariantUuid": "16262b97-bcb1-4033-8f9f-a3016eaf1ec3",
+      "description": "vendor software product",
+      "name": "95e654c0-676b-4386-8a69",
+      "version": "1.0",
+      "customizationUuid": "34a3b91d-8d73-4412-bf4e-c6456741007f",
+      "inputs": {},
+      "commands": {},
+      "properties": {
+        "vf_module_id": "vTrafficPNG",
+        "repo_url_blob": "https://nexus.onap.org/content/sites/raw",
+        "unprotected_private_subnet_id": "zdfw1fwl01_unprotected_sub",
+        "public_net_id": "PUT THE PUBLIC NETWORK ID HERE",
+        "vfw_private_ip_0": "192.168.10.100",
+        "onap_private_subnet_id": "PUT THE ONAP PRIVATE NETWORK NAME HERE",
+        "onap_private_net_cidr": "10.0.0.0/16",
+        "image_name": "PUT THE VM IMAGE NAME HERE (UBUNTU 1404)",
+        "flavor_name": "PUT THE VM FLAVOR NAME HERE (m1.medium suggested)",
+        "vnf_id": "vPNG_Firewall_demo_app",
+        "vpg_name_0": "zdfw1fwl01pgn01",
+        "vpg_private_ip_1": "10.0.100.2",
+        "vsn_private_ip_0": "192.168.20.250",
+        "vpg_private_ip_0": "192.168.10.200",
+        "protected_private_net_cidr": "192.168.20.0/24",
+        "unprotected_private_net_cidr": "192.168.10.0/24",
+        "nf_naming": "{ecomp_generated_naming=true}",
+        "multi_stage_design": "false",
+        "onap_private_net_id": "PUT THE ONAP PRIVATE NETWORK NAME HERE",
+        "unprotected_private_net_id": "zdfw1fwl01_unprotected",
+        "availability_zone_max_count": "1",
+        "demo_artifacts_version": "1.2.1",
+        "pub_key": "PUT YOUR PUBLIC KEY HERE",
+        "key_name": "vfw_key",
+        "repo_url_artifacts": "https://nexus.onap.org/content/repositories/releases",
+        "install_script_version": "1.2.1",
+        "cloud_env": "PUT openstack OR rackspace HERE"
+      },
+      "type": "VF",
+      "modelCustomizationName": "95e654c0-676b-4386-8a69 0",
+      "vfModules": {
+        "95e654c0676b43868a690..95e654c0676b43868a69..base_vpkg..module-0": {
+          "uuid": "12082e9d-a854-48cc-8243-e24b26199856",
+          "invariantUuid": "239419df-3375-49fe-9dd4-73b3393858ba",
+          "customizationUuid": "32c824f7-5910-4d7a-88ad-188d4905675d",
+          "description": null,
+          "name": "95e654c0676b43868a69..base_vpkg..module-0",
+          "version": "1",
+          "volumeGroupAllowed": false,
+          "commands": {},
+          "modelCustomizationName": "95e654c0676b43868a69..base_vpkg..module-0",
+          "properties": {
+            "min_vf_module_instances": {
+              "name": "min_vf_module_instances",
+              "value": 1,
+              "entrySchema": null,
+              "required": true,
+              "constraints": [],
+              "description": "The minimum instances of this VF-Module",
+              "default": null,
+              "type": "integer"
+            },
+            "vf_module_label": {
+              "name": "vf_module_label",
+              "value": "base_vpkg",
+              "entrySchema": null,
+              "required": true,
+              "constraints": [],
+              "description": "Alternate textual key used to reference this VF-Module model.  Must be unique within the VNF model\n",
+              "default": null,
+              "type": "string"
+            },
+            "max_vf_module_instances": {
+              "name": "max_vf_module_instances",
+              "value": 1,
+              "entrySchema": null,
+              "required": false,
+              "constraints": [],
+              "description": "The maximum instances of this VF-Module",
+              "default": null,
+              "type": "integer"
+            },
+            "vfc_list": {
+              "name": "vfc_list",
+              "value": null,
+              "entrySchema": {
+                "description": "<vfc_id>:<count>",
+                "type": "string"
+              },
+              "required": false,
+              "constraints": [],
+              "description": "Identifies the set of VM types and their count included in the VF-Module\n",
+              "default": null,
+              "type": "map"
+            },
+            "vf_module_type": {
+              "name": "vf_module_type",
+              "value": "Base",
+              "entrySchema": null,
+              "required": true,
+              "constraints": [],
+              "description": "",
+              "default": null,
+              "type": "string"
+            },
+            "vf_module_description": {
+              "name": "vf_module_description",
+              "value": null,
+              "entrySchema": null,
+              "required": true,
+              "constraints": [],
+              "description": "Description of the VF-modules contents and purpose   (e.g. \"Front-End\" or \"Database Cluster\")\n",
+              "default": null,
+              "type": "string"
+            },
+            "initial_count": {
+              "name": "initial_count",
+              "value": 1,
+              "entrySchema": null,
+              "required": false,
+              "constraints": [],
+              "description": "The initial count of instances of the VF-Module. The value must be in the  range between min_vfmodule_instances and max_vfmodule_instances. If no value provided the initial count is the min_vfmodule_instances.\n",
+              "default": null,
+              "type": "integer"
+            },
+            "volume_group": {
+              "name": "volume_group",
+              "value": false,
+              "entrySchema": null,
+              "required": true,
+              "constraints": [],
+              "description": "\"true\" indicates that this VF Module model requires attachment to a Volume   Group.  VID operator must select the Volume Group instance to attach to a VF-Module  at deployment time.\n",
+              "default": false,
+              "type": "boolean"
+            },
+            "availability_zone_count": {
+              "name": "availability_zone_count",
+              "value": null,
+              "entrySchema": null,
+              "required": false,
+              "constraints": [],
+              "description": "Quantity of Availability Zones needed for this VF-Module     (source: Extracted from VF-Module HEAT template)\n",
+              "default": null,
+              "type": "integer"
+            },
+            "isBase": {
+              "name": "isBase",
+              "value": false,
+              "entrySchema": null,
+              "required": true,
+              "constraints": [],
+              "description": "Whether this module should be deployed before other modules",
+              "default": false,
+              "type": "boolean"
+            }
+          }
+        }
+      },
+      "volumeGroups": {}
+    }
+  },
+  "networks": {},
+  "configurations": {},
+  "serviceProxies": {},
+  "vfModules": {
+    "95e654c0676b43868a690..95e654c0676b43868a69..base_vpkg..module-0": {
+      "uuid": "12082e9d-a854-48cc-8243-e24b26199856",
+      "invariantUuid": "239419df-3375-49fe-9dd4-73b3393858ba",
+      "customizationUuid": "32c824f7-5910-4d7a-88ad-188d4905675d",
+      "description": null,
+      "name": "95e654c0676b43868a69..base_vpkg..module-0",
+      "version": "1",
+      "volumeGroupAllowed": false,
+      "commands": {},
+      "modelCustomizationName": "95e654c0676b43868a69..base_vpkg..module-0",
+      "properties": {
+        "min_vf_module_instances": {
+          "name": "min_vf_module_instances",
+          "value": 1,
+          "entrySchema": null,
+          "required": true,
+          "constraints": [],
+          "description": "The minimum instances of this VF-Module",
+          "default": null,
+          "type": "integer"
+        },
+        "vf_module_label": {
+          "name": "vf_module_label",
+          "value": "base_vpkg",
+          "entrySchema": null,
+          "required": true,
+          "constraints": [],
+          "description": "Alternate textual key used to reference this VF-Module model.  Must be unique within the VNF model\n",
+          "default": null,
+          "type": "string"
+        },
+        "max_vf_module_instances": {
+          "name": "max_vf_module_instances",
+          "value": 1,
+          "entrySchema": null,
+          "required": false,
+          "constraints": [],
+          "description": "The maximum instances of this VF-Module",
+          "default": null,
+          "type": "integer"
+        },
+        "vfc_list": {
+          "name": "vfc_list",
+          "value": null,
+          "entrySchema": {
+            "description": "<vfc_id>:<count>",
+            "type": "string"
+          },
+          "required": false,
+          "constraints": [],
+          "description": "Identifies the set of VM types and their count included in the VF-Module\n",
+          "default": null,
+          "type": "map"
+        },
+        "vf_module_type": {
+          "name": "vf_module_type",
+          "value": "Base",
+          "entrySchema": null,
+          "required": true,
+          "constraints": [],
+          "description": "",
+          "default": null,
+          "type": "string"
+        },
+        "vf_module_description": {
+          "name": "vf_module_description",
+          "value": null,
+          "entrySchema": null,
+          "required": true,
+          "constraints": [],
+          "description": "Description of the VF-modules contents and purpose   (e.g. \"Front-End\" or \"Database Cluster\")\n",
+          "default": null,
+          "type": "string"
+        },
+        "initial_count": {
+          "name": "initial_count",
+          "value": 1,
+          "entrySchema": null,
+          "required": false,
+          "constraints": [],
+          "description": "The initial count of instances of the VF-Module. The value must be in the  range between min_vfmodule_instances and max_vfmodule_instances. If no value provided the initial count is the min_vfmodule_instances.\n",
+          "default": null,
+          "type": "integer"
+        },
+        "volume_group": {
+          "name": "volume_group",
+          "value": false,
+          "entrySchema": null,
+          "required": true,
+          "constraints": [],
+          "description": "\"true\" indicates that this VF Module model requires attachment to a Volume   Group.  VID operator must select the Volume Group instance to attach to a VF-Module  at deployment time.\n",
+          "default": false,
+          "type": "boolean"
+        },
+        "availability_zone_count": {
+          "name": "availability_zone_count",
+          "value": null,
+          "entrySchema": null,
+          "required": false,
+          "constraints": [],
+          "description": "Quantity of Availability Zones needed for this VF-Module     (source: Extracted from VF-Module HEAT template)\n",
+          "default": null,
+          "type": "integer"
+        },
+        "isBase": {
+          "name": "isBase",
+          "value": false,
+          "entrySchema": null,
+          "required": true,
+          "constraints": [],
+          "description": "Whether this module should be deployed before other modules",
+          "default": false,
+          "type": "boolean"
+        }
+      }
+    }
+  },
+  "volumeGroups": {},
+  "pnfs": {}
+}
\ No newline at end of file