Upgrade API for capacity_check 39/60439/2
authorBin Yang <bin.yang@windriver.com>
Tue, 14 Aug 2018 07:35:52 +0000 (07:35 +0000)
committerBin Yang <bin.yang@windriver.com>
Tue, 14 Aug 2018 07:35:52 +0000 (07:35 +0000)
Change-Id: If53c734294907eb4a4d108a2c7e81d537c53eb8f
Issue-ID: MULTICLOUD-297
Signed-off-by: Bin Yang <bin.yang@windriver.com>
share/common/msapi/extsys.py
windriver/titanium_cloud/resource/views/capacity.py
windriver/titanium_cloud/urls.py
windriver/titanium_cloud/vesagent/vesagent_ctrl.py

index 772a526..c0cc7f2 100644 (file)
@@ -19,6 +19,7 @@ from common.utils import restcall
 
 logger = logging.getLogger(__name__)
 
+
 def get_vim_by_id(vim_id):
 
     cloud_owner,cloud_region_id = decode_vim_id(vim_id)
@@ -93,6 +94,25 @@ def delete_vim_by_id(vim_id):
     # return non zero if failed to decode cloud owner and region id
     return 1
 
+def encode_vim_id(cloud_owner, cloud_region_id):
+    '''
+    compose vim_id by cloud_owner and cloud_region, make sure the vimid can be converted back when talking to AAI,etc.
+    This is a backward compatibility design to reuse the existing implementation code
+    :param cloud_owner:
+    :param cloud_region:
+    :return:
+    '''
+
+    # since the {cloud_owner}/{cloud_region_id"} is globally unique, the concatenated one as below will be unique as well.
+    vim_id = cloud_owner + "_" + cloud_region_id
+
+    #other options:
+    #1, store it into cache so the decode and just look up the cache for decoding
+    #2, use other delimiter in case '_' is used by cloud owner/cloud region id
+    # , e.g. '.', '#', hence the decode need to try more than one time
+
+    return vim_id
+
 def decode_vim_id(vim_id):
     m = re.search(r'^([0-9a-zA-Z-]+)_([0-9a-zA-Z_-]+)$', vim_id)
     cloud_owner, cloud_region_id = m.group(1), m.group(2)
index 6adb878..26a673c 100644 (file)
@@ -140,3 +140,16 @@ class CapacityCheck(APIView):
             return Response(data={'result': hasEnoughResource, 'error': str(e)},
                             status=status.HTTP_500_INTERNAL_SERVER_ERROR)
 
+
+
+class CapacityCheckV1(APIView):
+
+    def __init__(self):
+        self._logger = logger
+
+    def post(self, request, cloud_owner="", cloud_region_id=""):
+        self._logger.info("vimid, data> %s,%s, %s" % (cloud_owner, cloud_region_id, request.data))
+        self._logger.debug("META> %s" % request.META)
+
+        vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
+        return super(CapacityCheckV1, self).post(request, vimid)
index cc538d6..f1ee90a 100644 (file)
@@ -58,8 +58,8 @@ urlpatterns = [
 #    url(r'^api/multicloud-titanium_cloud/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/'
 #        '(?P<tenantid>[0-9a-zA-Z_-]{20,})/', include('titanium_cloud.requests.urls')),
     # CapacityCheck
-#    url(r'^api/multicloud-titanium_cloud/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/capacity_check/?$',
-#        capacity.CapacityCheck.as_view()),
+    url(r'^api/multicloud-titanium_cloud/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/capacity_check/?$',
+        capacity.CapacityCheckV1.as_view()),
     # events
 #    url(r'^api/multicloud-titanium_cloud/v1/(?P<cloud_owner>[0-9a-zA-Z_-]+)/(?P<cloud_region_id>[0-9a-zA-Z_-]+)/events_check/?$',
 #        events.EventsCheck.as_view()),
index 207ae56..d93ccc2 100644 (file)
@@ -423,5 +423,5 @@ class VesAgentCtrlV1(VesAgentCtrl):
         self._logger.debug("with META: %s" % request.META)
 
         #temp realization for API upgrading only, assume cloud_owner does not contains "_" , refactor it later
-        vimid = cloud_owner+"_"+cloud_region_id
+        vimid = extsys.encode_vim_id(cloud_owner, cloud_region_id)
         return super(VesAgentCtrlV1,self).get(request, vimid)