summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXiaohua Zhang <xiaohua.zhang@windriver.com>2018-10-09 01:51:37 +0000
committerXiaohua Zhang <xiaohua.zhang@windriver.com>2018-10-09 01:52:52 +0000
commit5a1608bfe48b2ac2a402e70b55df6602f2638527 (patch)
tree8e3b562459929fad4087c6eba190991b0f8c354d
parent280d4850a9ed44721b25c0978a48a02072a1527c (diff)
Fix AAI update sync up issue
Read after write to make sure the update to AAI obejct has been visible to following AAI queries Change-Id: I34982e53ca2e2bad60e4740f3d8f55775dae55b9 Issue-ID: MULTICLOUD-371 Signed-off-by: Xiaohua Zhang <xiaohua.zhang@windriver.com>
-rw-r--r--windriver/titanium_cloud/registration/views/registration.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/windriver/titanium_cloud/registration/views/registration.py b/windriver/titanium_cloud/registration/views/registration.py
index 1d560e4e..57888456 100644
--- a/windriver/titanium_cloud/registration/views/registration.py
+++ b/windriver/titanium_cloud/registration/views/registration.py
@@ -100,7 +100,9 @@ class APIv1Registry(newton_registration.Registry):
"cloud-region-id": cloud_region_id,
"cloud-type": viminfo["type"],
"cloud-region-version": viminfo["version"],
- "identity-url": self.proxy_prefix + "/%s/%s/identity/v2.0" % (cloud_owner, cloud_region_id),
+ "identity-url": self.proxy_prefix + "/%s_%s/identity/v2.0" % (cloud_owner, cloud_region_id) \
+ if self.proxy_prefix[-3:] == "/v0" else \
+ self.proxy_prefix + "/%s/%s/identity/v2.0" % (cloud_owner, cloud_region_id),
"complex-name": viminfo["complex-name"],
"cloud-extra-info": viminfo["cloud_extra_info"],
"cloud-epa-caps":openstack_region_id,
@@ -156,6 +158,17 @@ class APIv1Registry(newton_registration.Registry):
"content": content,
"status_code": status_code,
})
+
+ # wait and confirm the update has been available for next AAI calls
+ while True:
+ # get cloud-region
+ retcode2, content2, status_code2 = \
+ restcall.req_to_aai(resource_url, "GET")
+ if retcode2 == 0 and content2:
+ content2 = json.JSONDecoder().decode(content2)
+ if content2.get("identity-url", None) == resource_info.get("identity-url", None):
+ break
+
return retcode
return 1 # unknown cloud owner,region_id