Feature-9904: Enhancing NG-UI to enable Juju operational view dashboard 85/10485/5
authorksaikiranr <saikiran.k@tataelxsi.co.in>
Wed, 17 Mar 2021 06:11:22 +0000 (11:41 +0530)
committerrbara <barath.r@tataelxsi.co.in>
Thu, 18 Mar 2021 15:45:35 +0000 (16:45 +0100)
Added unit tests for vca status refresh in lcm

Change-Id: Ic2009a321991526f284d88858fd6ee19a2eed960
Signed-off-by: gspri <priyadharshini.g@tataelxsi.co.in>
Signed-off-by: ksaikiranr <saikiran.k@tataelxsi.co.in>
osm_lcm/tests/test_db_descriptors.py
osm_lcm/tests/test_ns.py

index 6b4be6a..9decd4e 100644 (file)
@@ -231,6 +231,7 @@ db_nsrs_text = """
 -   _admin:
         created: 1566823354.3716335
         deployed:
+            K8s: []
             RO:
                 nsd_id: 876573b5-968d-40b9-b52b-91bf5c5844f7
                 nsr_id: c9fe9908-3180-430d-b633-fca2f68db008
@@ -287,6 +288,446 @@ db_nsrs_text = """
     create-time: 1566823354.36234
     datacenter: ea958ba5-4e58-4405-bf42-6e3be15d4c3a
     description: default description
+    vcaStatus:
+        8c707f16-2d9b-49d6-af5e-2ce9985b2adf:
+            applications:
+                app-vnf-1fb8538dfc39:
+                    can_upgrade_to: ''
+                    charm: 'local:xenial/simple-1'
+                    charm_profile: ''
+                    charm_version: ''
+                    endpoint_bindings: null
+                    err: null
+                    exposed: false
+                    int_: null
+                    life: ''
+                    meter_statuses: { }
+                    provider_id: null
+                    public_address: ''
+                    relations: { }
+                    series: xenial
+                    status:
+                        data: { }
+                        err: null
+                        info: Ready!
+                        kind: ''
+                        life: ''
+                        since: '2021-02-17T08:39:54.239185095Z'
+                        status: active
+                        unknown_fields: { }
+                        version: ''
+                    subordinate_to: [ ]
+                    units:
+                        app-vnf-1fb8538dfc39/0:
+                            address: null
+                            agent_status:
+                                data: { }
+                                err: null
+                                info: ''
+                                kind: ''
+                                life: ''
+                                since: '2021-02-17T08:52:18.077155028Z'
+                                status: idle
+                                unknown_fields: { }
+                                version: 2.8.1
+                            charm: ''
+                            leader: true
+                            machine: '0'
+                            opened_ports: null
+                            provider_id: null
+                            public_address: 10.151.40.53
+                            subordinates: { }
+                            unknown_fields: { }
+                            workload_status:
+                                data: { }
+                                err: null
+                                info: Ready!
+                                kind: ''
+                                life: ''
+                                since: '2021-02-17T08:39:54.239185095Z'
+                                status: active
+                                unknown_fields: { }
+                                version: ''
+                            workload_version: ''
+                    unknown_fields:
+                        charm-verion: ''
+                    workload_version: ''
+                    actions:
+                        generate-ssh-key: >-
+                            Generate a new SSH keypair for this unit. This will replace any
+                            existing previously generated keypair.
+                        get-ssh-public-key: Get the public SSH key for this unit.
+                        reboot: Reboot the VNF virtual machine.
+                        restart: Stop the service on the VNF.
+                        run: Run an arbitrary command
+                        start: Stop the service on the VNF.
+                        stop: Stop the service on the VNF.
+                        touch: Touch a file on the VNF.
+                        upgrade: Upgrade the software on the VNF.
+                        verify-ssh-credentials: >-
+                            Verify that this unit can authenticate with server specified by
+                            ssh-hostname and ssh-username.
+                    configs:
+                        boolean-option:
+                            default: false
+                            description: A short description of the configuration option
+                            source: default
+                            type: boolean
+                            value: false
+                        int-option:
+                            default: 9001
+                            description: A short description of the configuration option
+                            source: default
+                            type: int
+                            value: 9001
+                        ssh-hostname:
+                            default: ''
+                            description: The hostname or IP address of the machine to
+                            source: user
+                            type: string
+                            value: 192.168.61.90
+                        ssh-key-bits:
+                            default: 4096
+                            description: The number of bits to use for the SSH key.
+                            source: default
+                            type: int
+                            value: 4096
+                        ssh-key-type:
+                            default: rsa
+                            description: The type of encryption to use for the SSH key.
+                            source: default
+                            type: string
+                            value: rsa
+                        ssh-password:
+                            default: ''
+                            description: The password used to authenticate.
+                            source: user
+                            type: string
+                            value: osm4u
+                        ssh-private-key:
+                            default: ''
+                            description: DEPRECATED. The private ssh key to be used to authenticate.
+                            source: default
+                            type: string
+                            value: ''
+                        ssh-public-key:
+                            default: ''
+                            description: The public key of this unit.
+                            source: default
+                            type: string
+                            value: ''
+                        ssh-username:
+                            default: ''
+                            description: The username to login as.
+                            source: user
+                            type: string
+                            value: ubuntu
+                        string-option:
+                            default: Default Value
+                            description: A short description of the configuration option
+                            source: default
+                            type: string
+                            value: Default Value
+                app-vnf-943ab4274bb6:
+                    can_upgrade_to: ''
+                    charm: 'local:xenial/simple-0'
+                    charm_profile: ''
+                    charm_version: ''
+                    endpoint_bindings: null
+                    err: null
+                    exposed: false
+                    int_: null
+                    life: ''
+                    meter_statuses: { }
+                    provider_id: null
+                    public_address: ''
+                    relations: { }
+                    series: xenial
+                    status:
+                        data: { }
+                        err: null
+                        info: Ready!
+                        kind: ''
+                        life: ''
+                        since: '2021-02-17T08:39:15.165682713Z'
+                        status: active
+                        unknown_fields: { }
+                        version: ''
+                    subordinate_to: [ ]
+                    units:
+                        app-vnf-943ab4274bb6/0:
+                            address: null
+                            agent_status:
+                                data: { }
+                                err: null
+                                info: ''
+                                kind: ''
+                                life: ''
+                                since: '2021-02-17T08:46:06.473054303Z'
+                                status: idle
+                                unknown_fields: { }
+                                version: 2.8.1
+                            charm: ''
+                            leader: true
+                            machine: '1'
+                            opened_ports: null
+                            provider_id: null
+                            public_address: 10.151.40.117
+                            subordinates: { }
+                            unknown_fields: { }
+                            workload_status:
+                                data: { }
+                                err: null
+                                info: Ready!
+                                kind: ''
+                                life: ''
+                                since: '2021-02-17T08:39:15.165682713Z'
+                                status: active
+                                unknown_fields: { }
+                                version: ''
+                            workload_version: ''
+                    unknown_fields:
+                        charm-verion: ''
+                    workload_version: ''
+                    actions:
+                        generate-ssh-key: >-
+                            Generate a new SSH keypair for this unit. This will replace any
+                            existing previously generated keypair.
+                        get-ssh-public-key: Get the public SSH key for this unit.
+                        reboot: Reboot the VNF virtual machine.
+                        restart: Stop the service on the VNF.
+                        run: Run an arbitrary command
+                        start: Stop the service on the VNF.
+                        stop: Stop the service on the VNF.
+                        touch: Touch a file on the VNF.
+                        upgrade: Upgrade the software on the VNF.
+                        verify-ssh-credentials: >-
+                            Verify that this unit can authenticate with server specified by
+                            ssh-hostname and ssh-username.
+                    configs:
+                        boolean-option:
+                            default: false
+                            description: A short description of the configuration option
+                            source: default
+                            type: boolean
+                            value: false
+                        int-option:
+                            default: 9001
+                            description: A short description of the configuration option
+                            source: default
+                            type: int
+                            value: 9001
+                        ssh-hostname:
+                            default: ''
+                            description: The hostname or IP address of the machine to
+                            source: user
+                            type: string
+                            value: 192.168.61.72
+                        ssh-key-bits:
+                            default: 4096
+                            description: The number of bits to use for the SSH key.
+                            source: default
+                            type: int
+                            value: 4096
+                        ssh-key-type:
+                            default: rsa
+                            description: The type of encryption to use for the SSH key.
+                            source: default
+                            type: string
+                            value: rsa
+                        ssh-password:
+                            default: ''
+                            description: The password used to authenticate.
+                            source: user
+                            type: string
+                            value: osm4u
+                        ssh-private-key:
+                            default: ''
+                            description: DEPRECATED. The private ssh key to be used to authenticate.
+                            source: default
+                            type: string
+                            value: ''
+                        ssh-public-key:
+                            default: ''
+                            description: The public key of this unit.
+                            source: default
+                            type: string
+                            value: ''
+                        ssh-username:
+                            default: ''
+                            description: The username to login as.
+                            source: user
+                            type: string
+                            value: ubuntu
+                        string-option:
+                            default: Default Value
+                            description: A short description of the configuration option
+                            source: default
+                            type: string
+                            value: Default Value
+            branches: { }
+            controller_timestamp: '2021-02-17T09:17:38.006569064Z'
+            machines:
+                '0':
+                    agent_status:
+                        data: { }
+                        err: null
+                        info: ''
+                        kind: ''
+                        life: ''
+                        since: '2021-02-17T08:37:46.637167056Z'
+                        status: started
+                        unknown_fields: { }
+                        version: 2.8.1
+                    constraints: ''
+                    containers: { }
+                    display_name: ''
+                    dns_name: 10.151.40.53
+                    hardware: arch=amd64 cores=0 mem=0M
+                    has_vote: false
+                    id_: '0'
+                    instance_id: juju-0f027b-0
+                    instance_status:
+                        data: { }
+                        err: null
+                        info: Running
+                        kind: ''
+                        life: ''
+                        since: '2021-02-17T08:35:58.435458338Z'
+                        status: running
+                        unknown_fields: { }
+                        version: ''
+                    ip_addresses:
+                        - 10.151.40.53
+                    jobs:
+                        - JobHostUnits
+                    lxd_profiles: { }
+                    modification_status:
+                        data: { }
+                        err: null
+                        info: ''
+                        kind: ''
+                        life: ''
+                        since: '2021-02-17T08:35:34.663795891Z'
+                        status: idle
+                        unknown_fields: { }
+                        version: ''
+                    network_interfaces:
+                        eth0:
+                            dns_nameservers: null
+                            gateway: 10.151.40.1
+                            ip_addresses:
+                                - 10.151.40.53
+                            is_up: true
+                            mac_address: '00:16:3e:99:bf:c7'
+                            space: null
+                            unknown_fields: { }
+                    primary_controller_machine: null
+                    series: xenial
+                    unknown_fields: { }
+
+                    wants_vote: false
+                '1':
+                    agent_status:
+                        data: { }
+                        err: null
+                        info: ''
+                        kind: ''
+                        life: ''
+                        since: '2021-02-17T08:37:00.893313184Z'
+                        status: started
+                        unknown_fields: { }
+                        version: 2.8.1
+                    constraints: ''
+                    containers: { }
+                    display_name: ''
+                    dns_name: 10.151.40.117
+                    hardware: arch=amd64 cores=0 mem=0M
+                    has_vote: false
+                    id_: '1'
+                    instance_id: juju-0f027b-1
+                    instance_status:
+                        data: { }
+                        err: null
+                        info: Running
+                        kind: ''
+                        life: ''
+                        since: '2021-02-17T08:36:23.354547217Z'
+                        status: running
+                        unknown_fields: { }
+                        version: ''
+                    ip_addresses:
+                        - 10.151.40.117
+                    jobs:
+                        - JobHostUnits
+                    lxd_profiles: { }
+                    modification_status:
+                        data: { }
+                        err: null
+                        info: ''
+                        kind: ''
+                        life: ''
+                        since: '2021-02-17T08:35:34.768829507Z'
+                        status: idle
+                        unknown_fields: { }
+                        version: ''
+                    network_interfaces:
+                        eth0:
+                            dns_nameservers: null
+                            gateway: 10.151.40.1
+                            ip_addresses:
+                                - 10.151.40.117
+                            is_up: true
+                            mac_address: '00:16:3e:99:fe:1c'
+                            space: null
+                            unknown_fields: { }
+                    primary_controller_machine: null
+                    series: xenial
+                    unknown_fields: { }
+                    wants_vote: false
+            model:
+                available_version: ''
+                cloud_tag: cloud-localhost
+                migration: null
+                name: 7c707f16-2d9b-49d6-af5e-2ce9985b2adf
+                region: localhost
+                unknown_fields:
+                    meter-status:
+                        color: ''
+                        message: ''
+                    model-status:
+                        data: { }
+                        info: ''
+                        kind: ''
+
+                        life: ''
+                        since: '2021-02-17T08:35:31.856691457Z'
+                        status: available
+                        version: ''
+                    sla: unsupported
+                    type: iaas
+                version: 2.8.1
+            offers: { }
+            relations: [ ]
+            remote_applications: { }
+            unknown_fields: { }
+            executedActions:
+                -   id: '6'
+                    action: touch
+                    status: completed
+                    Code: '0'
+                    output: ''
+                -   id: '4'
+                    action: touch
+                    status: completed
+                    Code: '0'
+                    output: ''
+                -   id: '2'
+                    action: verify-ssh-credentials
+                    status: completed
+                    Code: '0'
+                    output: ALF-1-mgmtvm-1
+                    verified: 'True'
     detailed-status: 'ERROR executing proxy charm initial primitives for member_vnf_index=1
         vdu_id=None: charm error executing primitive verify-ssh-credentials for member_vnf_index=1
         vdu_id=None: ''timeout after 600 seconds'''
@@ -423,6 +864,7 @@ db_nsrs_text = """
     create-time: 1575034636.9990137
     datacenter: ea958ba5-4e58-4405-bf42-6e3be15d4c3a
     description: default description
+    vcaStatus: {}
     detailed-status: done
     id: 0bcb701c-ee4d-41ab-8ee6-f4156f7f114d
     instantiate_params:
index c0dda15..28b8fbe 100644 (file)
@@ -342,6 +342,25 @@ class TestMyNS(asynctest.TestCase):
         self.assertEqual(return_value, expected_value)
         # print("scale_result: {}".format(self.db.get_one("nslcmops", {"_id": nslcmop_id}).get("detailed-status")))
 
+    async def test_vca_status_refresh(self):
+        nsr_id = descriptors.test_ids["TEST-A"]["ns"]
+        nslcmop_id = descriptors.test_ids["TEST-A"]["instantiate"]
+        await self.my_ns.vca_status_refresh(nsr_id, nslcmop_id)
+        expected_value = dict()
+        return_value = dict()
+        vnf_descriptors = self.db.get_list("vnfds")
+        for i, _ in enumerate(vnf_descriptors):
+            for j, value in enumerate(vnf_descriptors[i]["df"]):
+                if "lcm-operations-configuration" in vnf_descriptors[i]["df"][j]:
+                    if "day1-2" in value["lcm-operations-configuration"]["operate-vnf-op-config"]:
+                        for k, v in enumerate(value["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"]):
+                            if "juju" in v["execution-environment-list"][k]:
+                                expected_value = self.db.get_list("nsrs")[i]["vcaStatus"]
+                                await self.my_ns._on_update_n2vc_db("nsrs", {"_id": nsr_id},
+                                                                    "_admin.deployed.VCA.0", {})
+                                return_value = self.db.get_list("nsrs")[i]["vcaStatus"]
+        self.assertEqual(return_value, expected_value)
+
     # Test _retry_or_skip_suboperation()
     # Expected result:
     # - if a suboperation's 'operationState' is marked as 'COMPLETED', SUBOPERATION_STATUS_SKIP is expected