Fix bug in service proxy 73/11573/1
authorBin Yang <bin.yang@windriver.com>
Mon, 11 Sep 2017 06:49:30 +0000 (14:49 +0800)
committerBin Yang <bin.yang@windriver.com>
Mon, 11 Sep 2017 06:49:30 +0000 (14:49 +0800)
fix bug in service proxy, along with unittests

Change-Id: I946af21f4b8384ae920c322245741bf990515f1a
Issue-Id: MULTICLOUD-58
Signed-off-by: Bin Yang <bin.yang@windriver.com>
newton/newton/proxy/tests/test_service_proxy.py
newton/newton/proxy/views/services.py
newton/newton/registration/views/registration.py

index e9f2691..2dd558d 100644 (file)
@@ -698,6 +698,7 @@ MOCK_PATCH_IMAGE_RESPONSE = {
 
 class mock_get_servers_response_specs(object):
    status_code = 200
+   content = ''
 
    def json(self):
       pass
@@ -735,6 +736,7 @@ class TestServiceProxy(unittest.TestCase):
        mock_session = mock.Mock(name='mock_session', spec=mock_session_specs)
        mock_get_servers_response_obj = mock.Mock(spec=mock_get_servers_response_specs)
        mock_get_servers_response_obj.status_code=200
+       mock_get_servers_response_obj.content = MOCK_GET_SERVERS_RESPONSE
        mock_get_servers_response_obj.json.return_value=MOCK_GET_SERVERS_RESPONSE
        mock_session.get.return_value = mock_get_servers_response_obj
 
@@ -782,6 +784,7 @@ class TestServiceProxy(unittest.TestCase):
        mock_session = mock.Mock(name='mock_session', spec=mock_session_specs)
        mock_post_server_response_obj = mock.Mock(spec=mock_get_servers_response_specs)
        mock_post_server_response_obj.status_code=202
+       mock_post_server_response_obj.content = MOCK_POST_SERVER_RESPONSE
        mock_post_server_response_obj.json.return_value=MOCK_POST_SERVER_RESPONSE
        mock_session.post.return_value = mock_post_server_response_obj
 
index 1a478f3..85de3aa 100644 (file)
@@ -72,7 +72,8 @@ class Services(APIView):
             resp = sess.head(req_resource, endpoint_filter=service)
             #update token cache in case the token was required during the requests
             tmp_auth_token = VimDriverUtils.update_token_cache(vim, sess, tmp_auth_token, tmp_auth_state)
-            content = resp.json()
+            content = resp.json() if resp.content else None
+
             return Response(headers={'X-Subject-Token': tmp_auth_token}, data=content, status=resp.status_code)
             #return resp
         except VimDriverNewtonException as e:
@@ -142,13 +143,13 @@ class Services(APIView):
             resp = sess.get(req_resource, endpoint_filter=service)
             #update token cache in case the token was required during the requests
             tmp_auth_token = VimDriverUtils.update_token_cache(vim, sess, tmp_auth_token, tmp_auth_state)
-            content = resp.json()
-
-            #filter the resp content and replace all endpoint prefix
-            tmp_content = json.dumps(content)
-            tmp_pattern = re.compile(real_prefix)
-            tmp_content = tmp_pattern.sub(proxy_prefix, tmp_content)
-            content = json.loads(tmp_content)
+            content = resp.json() if resp.content else None
+            if content:
+                #filter the resp content and replace all endpoint prefix
+                tmp_content = json.dumps(content)
+                tmp_pattern = re.compile(real_prefix)
+                tmp_content = tmp_pattern.sub(proxy_prefix, tmp_content)
+                content = json.loads(tmp_content)
 
             return Response(headers={'X-Subject-Token': tmp_auth_token}, data=content, status=resp.status_code)
             #return resp
@@ -220,13 +221,13 @@ class Services(APIView):
             resp = sess.post(req_resource, data=json.JSONEncoder().encode(request.data),endpoint_filter=service)
             # update token cache in case the token was required during the requests
             tmp_auth_token = VimDriverUtils.update_token_cache(vim, sess, tmp_auth_token, tmp_auth_state)
-            content = resp.json()
-
-            #filter the resp content and replace all endpoint prefix
-            tmp_content = json.dumps(content)
-            tmp_pattern = re.compile(real_prefix)
-            tmp_content = tmp_pattern.sub(proxy_prefix, tmp_content)
-            content = json.loads(tmp_content)
+            content = resp.json() if resp.content else None
+            if content:
+                #filter the resp content and replace all endpoint prefix
+                tmp_content = json.dumps(content)
+                tmp_pattern = re.compile(real_prefix)
+                tmp_content = tmp_pattern.sub(proxy_prefix, tmp_content)
+                content = json.loads(tmp_content)
 
             return Response(headers={'X-Subject-Token': tmp_auth_token}, data=content, status=resp.status_code)
 
@@ -298,13 +299,13 @@ class Services(APIView):
             resp = sess.put(req_resource, data=json.JSONEncoder().encode(request.data),endpoint_filter=service)
             # update token cache in case the token was required during the requests
             tmp_auth_token = VimDriverUtils.update_token_cache(vim, sess, tmp_auth_token, tmp_auth_state)
-            content = resp.json()
-
-            #filter the resp content and replace all endpoint prefix
-            tmp_content = json.dumps(content)
-            tmp_pattern = re.compile(real_prefix)
-            tmp_content = tmp_pattern.sub(proxy_prefix, tmp_content)
-            content = json.loads(tmp_content)
+            content = resp.json() if resp.content else None
+            if content:
+                #filter the resp content and replace all endpoint prefix
+                tmp_content = json.dumps(content)
+                tmp_pattern = re.compile(real_prefix)
+                tmp_content = tmp_pattern.sub(proxy_prefix, tmp_content)
+                content = json.loads(tmp_content)
 
             return Response(headers={'X-Subject-Token': tmp_auth_token}, data=content, status=resp.status_code)
 
@@ -377,13 +378,13 @@ class Services(APIView):
             resp = sess.patch(req_resource, data=json.JSONEncoder().encode(request.data),endpoint_filter=service)
             # update token cache in case the token was required during the requests
             tmp_auth_token = VimDriverUtils.update_token_cache(vim, sess, tmp_auth_token, tmp_auth_state)
-            content = resp.json()
-
-            #filter the resp content and replace all endpoint prefix
-            tmp_content = json.dumps(content)
-            tmp_pattern = re.compile(real_prefix)
-            tmp_content = tmp_pattern.sub(proxy_prefix, tmp_content)
-            content = json.loads(tmp_content)
+            content = resp.json() if resp.content else None
+            if content:
+                #filter the resp content and replace all endpoint prefix
+                tmp_content = json.dumps(content)
+                tmp_pattern = re.compile(real_prefix)
+                tmp_content = tmp_pattern.sub(proxy_prefix, tmp_content)
+                content = json.loads(tmp_content)
 
             return Response(headers={'X-Subject-Token': tmp_auth_token}, data=content, status=resp.status_code)
 
index fa388b7..131a58e 100644 (file)
@@ -387,7 +387,7 @@ class Registry(APIView):
             ret = self.update_az(cloud_owner, cloud_region_id, vg_info)
             if ret != 0:
                 # failed to update image
-                self._logger.debug("failed to populate az info into AAI: %s, volume-group-id: %s, ret:%s"
+                self._logger.debug("failed to populate volumegroup info into AAI: %s, volume-group-id: %s, ret:%s"
                                    % (vimid, vg_info['volume-group-id'], ret))
             continue
         pass
@@ -454,7 +454,7 @@ class Registry(APIView):
             ret = self.update_az(cloud_owner, cloud_region_id, snapshot_info)
             if ret != 0:
                 # failed to update image
-                self._logger.debug("failed to populate az info into AAI: %s, snapshot-id: %s, ret:%s"
+                self._logger.debug("failed to populate snapshot info into AAI: %s, snapshot-id: %s, ret:%s"
                                    % (vimid, snapshot_info['snapshot-id'], ret))
             continue
         pass
@@ -554,7 +554,7 @@ class Registry(APIView):
                     req_to_aai("/cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship"
                                % (pserverinfo['hostname']), "PUT", content=relationship_data)
 
-                self._logger.debug("update_snapshot,vimid:%s_%s req_to_aai: %s, return %s, %s, %s"
+                self._logger.debug("update_pserver,vimid:%s_%s req_to_aai: %s, return %s, %s, %s"
                                    % (cloud_owner, cloud_region_id, pserverinfo['hostname'], retcode, content,
                                       status_code))
                 pass
@@ -578,7 +578,7 @@ class Registry(APIView):
         for hypervisor in content.get('hypervisors'):
             hypervisor_info = {
                 'hostname': hypervisor['hypervisor_hostname'],
-                'in-maint': hypervisor['name'],
+                'in-maint': hypervisor['state'],
 
                 'pserver-id': hypervisor.get('id'),
                 'ptnii-equip-name': hypervisor.get('id'),