summaryrefslogtreecommitdiffstats
path: root/share/common/utils/restcall.py
diff options
context:
space:
mode:
Diffstat (limited to 'share/common/utils/restcall.py')
-rw-r--r--share/common/utils/restcall.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/share/common/utils/restcall.py b/share/common/utils/restcall.py
index ec3abb30..eb4cb008 100644
--- a/share/common/utils/restcall.py
+++ b/share/common/utils/restcall.py
@@ -25,6 +25,8 @@ import uuid
from rest_framework import status
from django.conf import settings
+from common.utils import aai_cache
+
rest_no_auth, rest_oneway_auth, rest_bothway_auth = 0, 1, 2
HTTP_200_OK, HTTP_201_CREATED = '200', '201'
HTTP_204_NO_CONTENT, HTTP_202_ACCEPTED = '204', '202'
@@ -124,7 +126,7 @@ def req_to_vim(base_url, resource, method, extra_headers='', content=''):
resource, method, extra_headers, content)
-def req_to_aai(resource, method, content='', appid=settings.MULTICLOUD_APP_ID):
+def req_to_aai(resource, method, content='', appid=settings.MULTICLOUD_APP_ID, nocache=False):
tmp_trasaction_id = '9003' #str(uuid.uuid1())
headers = {
'X-FromAppId': appid,
@@ -133,8 +135,22 @@ def req_to_aai(resource, method, content='', appid=settings.MULTICLOUD_APP_ID):
'accept': 'application/json'
}
- return _call_req(settings.AAI_BASE_URL, settings.AAI_USERNAME, settings.AAI_PASSWORD, rest_no_auth,
- resource, method, content=json.dumps(content), extra_headers=headers)
+ # hook to flush cache
+ if method.upper() in ["PUT", "POST", "PATCH", "DELETE"]:
+ aai_cache.flush_cache_by_url(resource)
+ elif method.upper in ["GET"] and not nocache:
+ content = aai_cache.get_cache_by_url(resource)
+ if content:
+ return content
+
+ ret, resp_body, resp_status = _call_req(
+ settings.AAI_BASE_URL, settings.AAI_USERNAME, settings.AAI_PASSWORD, rest_no_auth,
+ resource, method, content=json.dumps(content), extra_headers=headers)
+
+ if method.upper() in ["GET"] and ret == 0 and not nocache:
+ aai_cache.set_cache_by_url(resource, [ret, resp_body, resp_status])
+
+ return [ret, resp_body, resp_status]
def _combine_url(base_url, resource):