diff options
-rw-r--r-- | ocata/ocata/registration/tests/test_registration.py | 65 | ||||
-rw-r--r-- | ocata/ocata/registration/views/registration.py | 33 |
2 files changed, 82 insertions, 16 deletions
diff --git a/ocata/ocata/registration/tests/test_registration.py b/ocata/ocata/registration/tests/test_registration.py index ffad2b91..fa920cd4 100644 --- a/ocata/ocata/registration/tests/test_registration.py +++ b/ocata/ocata/registration/tests/test_registration.py @@ -21,6 +21,32 @@ from newton_base.tests import mock_info from newton_base.tests import test_base from newton_base.util import VimDriverUtils +OCATA_MOCK_VIM_INFO = { + "createTime": "2017-04-01 02:22:27", + "domain": "Default", + "name": "TiS_R4", + "password": "admin", + "tenant": "admin", + "type": "openstack", + "url": "http://128.224.180.14:5000/v3", + "userName": "admin", + "vendor": "WindRiver", + "version": "newton", + "vimId": "windriver-hudson-dc_RegionOne", + 'cloud_owner': 'windriver-hudson-dc', + 'cloud_region_id': 'RegionOne', + 'cloud_extra_info': + '{' + '"ovsDpdk":{' + '"version": "v1",' + '"arch": "Intel64",' + '"libname":"dataProcessingAccelerationLibrary",' + '"libvalue":"v12.1",' + '}' + '}', + 'insecure': 'True', +} + MOCK_GET_TENANT_RESPONSE = { "projects":[ {"id": "1", "name": "project"}, @@ -147,6 +173,15 @@ MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS2_RESPONSE = { } } +# HPA UT3: mem_page_size +MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS3_RESPONSE = { + "extra_specs": { + "aggregate_instance_extra_specs:storage": "local_image", + "capabilities:cpu_info:model": "Haswell", + "hw:mem_page_size": "large" + } +} + MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS_RESPONSE = { "extra_specs": { "aggregate_instance_extra_specs:storage": "local_image", @@ -288,3 +323,33 @@ class TestRegistration(test_base.TestRequest): self.assertEquals(status.HTTP_202_ACCEPTED, response.status_code) + @mock.patch.object(VimDriverUtils, 'get_session') + @mock.patch.object(VimDriverUtils, 'get_vim_info') + def test_register_hpa_hugepage_successfully( + self, mock_get_vim_info, mock_get_session): + restcall.req_to_aai = mock.Mock() + restcall.req_to_aai.return_value = (0, {}, status.HTTP_200_OK) + mock_get_vim_info.return_value = mock_info.MOCK_VIM_INFO + mock_get_session.return_value = test_base.get_mock_session( + ["get"], { + "side_effect": [ + self._get_mock_response(MOCK_GET_TENANT_RESPONSE), + self._get_mock_response(MOCK_GET_HPA_FLAVOR_LIST1_RESPONSE), + self._get_mock_response(MOCK_GET_HPA_FLAVOR_onap_mini_EXTRA_SPECS3_RESPONSE), + self._get_mock_response(MOCK_GET_IMAGE_RESPONSE), + self._get_mock_response(), + self._get_mock_response(MOCK_GET_AZ_RESPONSE), + self._get_mock_response(MOCK_HYPERVISOR_RESPONSE), + self._get_mock_response(MOCK_GET_SNAPSHOT_RESPONSE), + self._get_mock_response(MOCK_GET_HYPERVISOR_RESPONSE) + ] + }) + + response = self.client.post(( + "/api/multicloud-ocata/v0/windriver-hudson-dc_RegionOne/" + "registry"), TEST_REGISTER_ENDPOINT_REQUEST, + HTTP_X_AUTH_TOKEN=mock_info.MOCK_TOKEN_ID) + + self.assertEquals(status.HTTP_202_ACCEPTED, + response.status_code) + diff --git a/ocata/ocata/registration/views/registration.py b/ocata/ocata/registration/views/registration.py index 6f2f4f24..74b73b3b 100644 --- a/ocata/ocata/registration/views/registration.py +++ b/ocata/ocata/registration/views/registration.py @@ -38,10 +38,6 @@ class Registry(newton_registration.Registry): def _discover_flavors(self, vimid="", session=None, viminfo=None): try: cloud_owner, cloud_region_id = extsys.decode_vim_id(vimid) - cloud_extra_info_str = viminfo.get('cloud_extra_info') - if cloud_extra_info_str: - cloud_extra_info = json.loads(cloud_extra_info_str) - cloud_dpdk_info = cloud_extra_info.get("ovsDpdk") for flavor in self._get_list_resources( "/flavors/detail", "compute", session, viminfo, vimid, @@ -68,7 +64,7 @@ class Registry(newton_registration.Registry): req_resouce = "/flavors/%s/os-extra_specs" % flavor['id'] extraResp = self._get_list_resources(req_resouce, "compute", session, viminfo, vimid, "extra_specs") - hpa_capabilities = self._get_hpa_capabilities(flavor, extraResp, cloud_dpdk_info) + hpa_capabilities = self._get_hpa_capabilities(flavor, extraResp, viminfo) flavor_info['hpa_capabilities'] = hpa_capabilities self._update_resoure( @@ -85,7 +81,7 @@ class Registry(newton_registration.Registry): self._logger.error(traceback.format_exc()) return - def _get_hpa_capabilities(self, flavor, extra_specs, cloud_dpdk_info): + def _get_hpa_capabilities(self, flavor, extra_specs, viminfo): hpa_caps = [] # Basic capabilties @@ -137,7 +133,7 @@ class Registry(newton_registration.Registry): hpa_caps.append(caps_dict) # ovsdpdk capabilities - caps_dict = self._get_ovsdpdk_capabilities(cloud_dpdk_info) + caps_dict = self._get_ovsdpdk_capabilities(viminfo) if len(caps_dict) > 0: self._logger.debug("ovsdpdk_capabilities_info: %s" % caps_dict) hpa_caps.append(caps_dict) @@ -304,16 +300,21 @@ class Registry(newton_registration.Registry): return instruction_capability - def _get_ovsdpdk_capabilities(self, cloud_dpdk_info): + def _get_ovsdpdk_capabilities(self, viminfo): ovsdpdk_capability = {} feature_uuid = uuid.uuid4() - ovsdpdk_capability['hpaCapabilityID'] = str(feature_uuid) - ovsdpdk_capability['hpaFeature'] = 'ovsDpdk' - ovsdpdk_capability['hardwareArchitecture'] = 'Intel64' - ovsdpdk_capability['version'] = 'v1' - - ovsdpdk_capability['attributes'] = [] - ovsdpdk_capability['attributes'].append({'hpa-attribute-key': str(cloud_dpdk_info.get("libname")), - 'hpa-attribute-value':{'value': str(cloud_dpdk_info.get("libversion"))}}) + cloud_extra_info_str = viminfo.get('cloud_extra_info') + if cloud_extra_info_str : + cloud_extra_info = json.loads(cloud_extra_info_str) + cloud_dpdk_info = cloud_extra_info.get("ovsDpdk") + if cloud_dpdk_info : + ovsdpdk_capability['hpaCapabilityID'] = str(feature_uuid) + ovsdpdk_capability['hpaFeature'] = 'ovsDpdk' + ovsdpdk_capability['hardwareArchitecture'] = 'Intel64' + ovsdpdk_capability['version'] = 'v1' + + ovsdpdk_capability['attributes'] = [] + ovsdpdk_capability['attributes'].append({'hpa-attribute-key': str(cloud_dpdk_info.get("libname")), + 'hpa-attribute-value':{'value': str(cloud_dpdk_info.get("libversion"))}}) return ovsdpdk_capability |