Add lock for create net and subnet
[vfc/gvnfm/vnflcm.git] / lcm / lcm / pub / vimapi / api.py
index cebd7fc..1679a56 100644 (file)
 # limitations under the License.
 
 import json
+from multiprocessing import Lock
 
+from lcm.pub.msapi.aai import delete_aai_flavor
 from lcm.pub.utils.restcall import req_by_msb
 from .exceptions import VimException
 
-VIM_DRIVER_BASE_URL = "api/multivim/v1"
+VIM_DRIVER_BASE_URL = "api/multicloud/v0"
+MUTEX_NET = Lock()
+MUTEX_SUBNET = Lock()
 
 
 def call(vim_id, tenant_id, res, method, data=''):
@@ -55,7 +59,8 @@ def list_image(vim_id, tenant_id):
 
 
 def create_network(vim_id, tenant_id, data):
-    return call(vim_id, tenant_id, "networks", "POST", data)
+    with MUTEX_NET:
+        return call(vim_id, tenant_id, "networks", "POST", data)
 
 
 def delete_network(vim_id, tenant_id, network_id):
@@ -73,7 +78,8 @@ def list_network(vim_id, tenant_id):
 
 
 def create_subnet(vim_id, tenant_id, data):
-    return call(vim_id, tenant_id, "subnets", "POST", data)
+    with MUTEX_SUBNET:
+        return call(vim_id, tenant_id, "subnets", "POST", data)
 
 
 def delete_subnet(vim_id, tenant_id, subnet_id):
@@ -113,7 +119,10 @@ def create_flavor(vim_id, tenant_id, data):
 
 
 def delete_flavor(vim_id, tenant_id, flavor_id):
-    return call(vim_id, tenant_id, "flavors/%s" % flavor_id, "DELETE")
+    # first delete aai register info
+    ret = delete_aai_flavor(vim_id, tenant_id, flavor_id)
+    if ret:
+        return call(vim_id, tenant_id, "flavors/%s" % flavor_id, "DELETE")
 
 
 def get_flavor(vim_id, tenant_id, flavor_id):
@@ -141,6 +150,11 @@ def get_vm(vim_id, tenant_id, vm_id):
 def list_vm(vim_id, tenant_id):
     return call(vim_id, tenant_id, "servers", "GET")
 
+
+# Used to start/stop/restart a vm
+def action_vm(vim_id, tenant_id, vm_id, data):
+    return call(vim_id, tenant_id, "servers/%s/action" % vm_id, "POST", data)
+
 ######################################################################