| """ |
| Deploy a multi-vdu, multi-charm VNF |
| """ |
| |
| import asyncio |
| import logging |
| import pytest |
| from .. import base |
| |
| |
| # @pytest.mark.serial |
| class TestCharm(base.TestN2VC): |
| |
| NSD_YAML = """ |
| nsd:nsd-catalog: |
| nsd: |
| - id: multivdumulticharm-ns |
| name: multivdumulticharm-ns |
| short-name: multivdumulticharm-ns |
| description: NS with 1 VNF connected by datanet and mgmtnet VLs |
| version: '1.0' |
| logo: osm.png |
| constituent-vnfd: |
| - vnfd-id-ref: multivdumulticharm-vnf |
| member-vnf-index: '1' |
| vld: |
| - id: mgmtnet |
| name: mgmtnet |
| short-name: mgmtnet |
| type: ELAN |
| mgmt-network: 'true' |
| vim-network-name: mgmt |
| vnfd-connection-point-ref: |
| - vnfd-id-ref: multivdumulticharm-vnf |
| member-vnf-index-ref: '1' |
| vnfd-connection-point-ref: vnf-mgmt |
| - vnfd-id-ref: multivdumulticharm-vnf |
| member-vnf-index-ref: '2' |
| vnfd-connection-point-ref: vnf-mgmt |
| - id: datanet |
| name: datanet |
| short-name: datanet |
| type: ELAN |
| vnfd-connection-point-ref: |
| - vnfd-id-ref: multivdumulticharm-vnf |
| member-vnf-index-ref: '1' |
| vnfd-connection-point-ref: vnf-data |
| - vnfd-id-ref: multivdumulticharm-vnf |
| member-vnf-index-ref: '2' |
| vnfd-connection-point-ref: vnf-data |
| """ |
| |
| VNFD_YAML = """ |
| vnfd:vnfd-catalog: |
| vnfd: |
| - id: multivdumulticharm-vnf |
| name: multivdumulticharm-vnf |
| short-name: multivdumulticharm-vnf |
| version: '1.0' |
| description: A VNF consisting of 1 VDUs w/proxy charm |
| logo: osm.png |
| connection-point: |
| - id: vnf-mgmt |
| name: vnf-mgmt |
| short-name: vnf-mgmt |
| type: VPORT |
| - id: vnf-data |
| name: vnf-data |
| short-name: vnf-data |
| type: VPORT |
| mgmt-interface: |
| cp: vnf-mgmt |
| internal-vld: |
| - id: internal |
| name: internal |
| short-name: internal |
| type: ELAN |
| internal-connection-point: |
| - id-ref: mgmtVM-internal |
| - id-ref: dataVM-internal |
| vdu: |
| - id: mgmtVM |
| name: mgmtVM |
| image: xenial |
| count: '1' |
| vm-flavor: |
| vcpu-count: '1' |
| memory-mb: '1024' |
| storage-gb: '10' |
| interface: |
| - name: mgmtVM-eth0 |
| position: '1' |
| type: EXTERNAL |
| virtual-interface: |
| type: VIRTIO |
| external-connection-point-ref: vnf-mgmt |
| - name: mgmtVM-eth1 |
| position: '2' |
| type: INTERNAL |
| virtual-interface: |
| type: VIRTIO |
| internal-connection-point-ref: mgmtVM-internal |
| internal-connection-point: |
| - id: mgmtVM-internal |
| name: mgmtVM-internal |
| short-name: mgmtVM-internal |
| type: VPORT |
| cloud-init-file: cloud-config.txt |
| vdu-configuration: |
| juju: |
| charm: proxy-ci |
| proxy: true |
| initial-config-primitive: |
| - seq: '1' |
| name: test |
| - id: dataVM |
| name: dataVM |
| image: xenial |
| count: '1' |
| vm-flavor: |
| vcpu-count: '1' |
| memory-mb: '1024' |
| storage-gb: '10' |
| interface: |
| - name: dataVM-eth0 |
| position: '1' |
| type: EXTERNAL |
| virtual-interface: |
| type: VIRTIO |
| external-connection-point-ref: vnf-mgmt |
| - name: dataVM-eth1 |
| position: '2' |
| type: INTERNAL |
| virtual-interface: |
| type: VIRTIO |
| internal-connection-point-ref: dataVM-internal |
| internal-connection-point: |
| - id: dataVM-internal |
| name: dataVM-internal |
| short-name: dataVM-internal |
| type: VPORT |
| cloud-init-file: cloud-config.txt |
| vdu-configuration: |
| juju: |
| charm: proxy-ci |
| proxy: true |
| initial-config-primitive: |
| - seq: '1' |
| name: test |
| |
| """ |
| |
| # @pytest.mark.serial |
| @pytest.mark.asyncio |
| async def test_multivdu_multicharm(self, event_loop): |
| """Deploy and execute the initial-config-primitive of a VNF.""" |
| |
| if self.nsd and self.vnfd: |
| vnf_index = 0 |
| |
| for config in self.get_config(): |
| juju = config['juju'] |
| charm = juju['charm'] |
| |
| await self.deploy( |
| vnf_index, |
| charm, |
| config, |
| event_loop, |
| ) |
| vnf_index += 1 |
| |
| while await self.running(): |
| logging.debug("Waiting for test to finish...") |
| await asyncio.sleep(15) |
| # assert False |
| logging.debug("test_multivdu_multicharm stopped") |
| |
| return 'ok' |