From 4369058fc74040102bc7d5d41cd92b579e9027dc Mon Sep 17 00:00:00 2001 From: ksaikiranr Date: Wed, 17 Mar 2021 11:41:22 +0530 Subject: [PATCH] Feature-9904: Enhancing NG-UI to enable Juju operational view dashboard Added unit tests for vca status refresh in lcm Change-Id: Ic2009a321991526f284d88858fd6ee19a2eed960 Signed-off-by: gspri Signed-off-by: ksaikiranr --- osm_lcm/tests/test_db_descriptors.py | 442 +++++++++++++++++++++++++++ osm_lcm/tests/test_ns.py | 19 ++ 2 files changed, 461 insertions(+) diff --git a/osm_lcm/tests/test_db_descriptors.py b/osm_lcm/tests/test_db_descriptors.py index 6b4be6a..9decd4e 100644 --- a/osm_lcm/tests/test_db_descriptors.py +++ b/osm_lcm/tests/test_db_descriptors.py @@ -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: diff --git a/osm_lcm/tests/test_ns.py b/osm_lcm/tests/test_ns.py index c0dda15..28b8fbe 100644 --- a/osm_lcm/tests/test_ns.py +++ b/osm_lcm/tests/test_ns.py @@ -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 -- 2.25.1