Moved auxiliary_functions.py from utils package to the main package
[osm/RO.git] / nfvo.py
diff --git a/nfvo.py b/nfvo.py
index 1c76984..c793226 100644 (file)
--- a/nfvo.py
+++ b/nfvo.py
@@ -30,7 +30,7 @@ __date__ ="$16-sep-2014 22:05:01$"
 import imp
 #import json
 import yaml
-from utils import auxiliary_functions as af
+import utils
 from nfvo_db import HTTP_Unauthorized, HTTP_Bad_Request, HTTP_Internal_Server_Error, HTTP_Not_Found,\
     HTTP_Conflict, HTTP_Method_Not_Allowed
 import console_proxy_thread as cli
@@ -140,14 +140,11 @@ def get_vim(mydb, nfvo_tenant=None, datacenter_id=None, datacenter_name=None, vi
                 return -HTTP_Bad_Request, "Unknown vim type %s" % vim["type"]
 
         try:
-            tenant=vim.get('vim_tenant_id')
-            if not tenant:
-                tenant=vim.get('vim_tenant_name')
             #if not tenant:
             #    return -HTTP_Bad_Request, "You must provide a valid tenant name or uuid for VIM  %s" % ( vim["type"])
             vim_dict[ vim['datacenter_id'] ] = vimconn_imported[ vim["type"] ].vimconnector(
                             uuid=vim['datacenter_id'], name=vim['datacenter_name'],
-                            tenant=tenant, 
+                            tenant_id=vim.get('vim_tenant_id'), tenant_name=vim.get('vim_tenant_name'),
                             url=vim['vim_url'], url_admin=vim['vim_url_admin'], 
                             user=vim.get('user'), passwd=vim.get('passwd'),
                             config=extra
@@ -1094,12 +1091,15 @@ def new_scenario(mydb, tenant_id, topo):
 
 #2: insert scenario. filling tables scenarios,sce_vnfs,sce_interfaces,sce_nets
     r,c = mydb.new_scenario( { 'vnfs':vnfs, 'nets':net_list,
-        'tenant_id':tenant_id, 'name':topo['name'], 'description':topo.get('description',topo['name']) } )
+        'tenant_id':tenant_id, 'name':topo['name'],
+         'description':topo.get('description',topo['name']),
+         'public': topo.get('public', False)
+         })
     
     return r,c
 
-def new_scenario_v02(mydb, tenant_id, scenario):
-
+def new_scenario_v02(mydb, tenant_id, scenario_dict):
+    scenario = scenario_dict["scenario"]
     if tenant_id != "any":
         if not check_tenant(mydb, tenant_id): 
             print 'nfvo.new_scenario_v02() tenant %s not found' % tenant_id
@@ -1119,9 +1119,9 @@ def new_scenario_v02(mydb, tenant_id, scenario):
         if 'vnf_id' in vnf:
             error_text += " 'vnf_id' " +  vnf['vnf_id']
             WHERE_['uuid'] = vnf['vnf_id']
-        if 'vnf_model' in vnf:
-            error_text += " 'vnf_model' " +  vnf['vnf_model']
-            WHERE_['name'] = vnf['vnf_model']
+        if 'vnf_name' in vnf:
+            error_text += " 'vnf_name' " +  vnf['vnf_name']
+            WHERE_['name'] = vnf['vnf_name']
         if len(WHERE_) == 0:
             return -HTTP_Bad_Request, "needed a 'vnf_id' or 'VNF model' at " + error_pos
         r,vnf_db = mydb.get_table(SELECT=('uuid','name','description'), FROM='vnfs', WHERE=WHERE_)
@@ -1201,7 +1201,7 @@ def start_scenario(mydb, tenant_id, scenario_id, instance_scenario_name, instanc
     datacenter_id = None
     datacenter_name=None
     if datacenter != None:
-        if af.check_valid_uuid(datacenter): 
+        if utils.check_valid_uuid(datacenter): 
             datacenter_id = datacenter
         else:
             datacenter_name = datacenter
@@ -1215,7 +1215,7 @@ def start_scenario(mydb, tenant_id, scenario_id, instance_scenario_name, instanc
         print "start_scenario error. Several datacenters available, you must concrete"
         return -HTTP_Bad_Request, "Several datacenters available, you must concrete"
     myvim = vims.values()[0]
-    myvim_tenant = myvim['tenant']
+    myvim_tenant = myvim['tenant_id']
     datacenter_id = myvim['id']
     datacenter_name = myvim['name']
     datacenter_tenant_id = myvim['config']['datacenter_tenant_id']
@@ -1446,7 +1446,7 @@ def create_instance(mydb, tenant_id, instance_dict):
     datacenter_name=None
     datacenter = instance_dict.get("datacenter")
     if datacenter:
-        if af.check_valid_uuid(datacenter): 
+        if utils.check_valid_uuid(datacenter): 
             datacenter_id = datacenter
         else:
             datacenter_name = datacenter
@@ -1460,7 +1460,7 @@ def create_instance(mydb, tenant_id, instance_dict):
         print "start_scenario error. Several datacenters available, you must concrete"
         return -HTTP_Bad_Request, "Several datacenters available, you must concrete"
     myvim = vims.values()[0]
-    #myvim_tenant = myvim['tenant']
+    #myvim_tenant = myvim['tenant_id']
     datacenter_id = myvim['id']
     datacenter_name = myvim['name']
     datacenter_tenant_id = myvim['config']['datacenter_tenant_id']
@@ -1517,7 +1517,7 @@ def create_instance(mydb, tenant_id, instance_dict):
                     lookfor_network = False
                     if "netmap-use" in descriptor_net:
                         lookfor_network = True
-                        if af.check_valid_uuid(descriptor_net["netmap-use"]):
+                        if utils.check_valid_uuid(descriptor_net["netmap-use"]):
                             filter_text = "scenario id '%s'" % descriptor_net["netmap-use"]
                             lookfor_filter["id"] = descriptor_net["netmap-use"]
                         else: 
@@ -2051,7 +2051,7 @@ def delete_datacenter(mydb, datacenter):
 
 def associate_datacenter_to_tenant(mydb, nfvo_tenant, datacenter, vim_tenant_id=None, vim_tenant_name=None, vim_username=None, vim_password=None):
     #get datacenter info
-    if af.check_valid_uuid(datacenter): 
+    if utils.check_valid_uuid(datacenter): 
         result, vims = get_vim(mydb, datacenter_id=datacenter)
     else:
         result, vims = get_vim(mydb, datacenter_name=datacenter)
@@ -2132,7 +2132,7 @@ def associate_datacenter_to_tenant(mydb, nfvo_tenant, datacenter, vim_tenant_id=
 
 def deassociate_datacenter_to_tenant(mydb, tenant_id, datacenter, vim_tenant_id=None):
     #get datacenter info
-    if af.check_valid_uuid(datacenter): 
+    if utils.check_valid_uuid(datacenter): 
         result, vims = get_vim(mydb, datacenter_id=datacenter)
     else:
         result, vims = get_vim(mydb, datacenter_name=datacenter)
@@ -2192,7 +2192,7 @@ def deassociate_datacenter_to_tenant(mydb, tenant_id, datacenter, vim_tenant_id=
 def datacenter_action(mydb, tenant_id, datacenter, action_dict):
     #DEPRECATED
     #get datacenter info    
-    if af.check_valid_uuid(datacenter): 
+    if utils.check_valid_uuid(datacenter): 
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_id=datacenter)
     else:
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_name=datacenter)
@@ -2232,13 +2232,13 @@ def datacenter_action(mydb, tenant_id, datacenter, action_dict):
         return 200, result
     elif 'net-edit' in action_dict:
         net = action_dict['net-edit'].pop('net')
-        what = 'vim_net_id' if af.check_valid_uuid(net) else 'name'
+        what = 'vim_net_id' if utils.check_valid_uuid(net) else 'name'
         result, content = mydb.update_rows('datacenter_nets', action_dict['net-edit'], 
                                 WHERE={'datacenter_id':datacenter_id, what: net})
         return result, content
     elif 'net-delete' in action_dict:
         net = action_dict['net-deelte'].get('net')
-        what = 'vim_net_id' if af.check_valid_uuid(net) else 'name'
+        what = 'vim_net_id' if utils.check_valid_uuid(net) else 'name'
         result, content = mydb.delete_row_by_dict(FROM='datacenter_nets', 
                                 WHERE={'datacenter_id':datacenter_id, what: net})
         return result, content
@@ -2248,7 +2248,7 @@ def datacenter_action(mydb, tenant_id, datacenter, action_dict):
 
 def datacenter_edit_netmap(mydb, tenant_id, datacenter, netmap, action_dict):
     #get datacenter info
-    if af.check_valid_uuid(datacenter): 
+    if utils.check_valid_uuid(datacenter): 
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_id=datacenter)
     else:
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_name=datacenter)
@@ -2262,14 +2262,14 @@ def datacenter_edit_netmap(mydb, tenant_id, datacenter, netmap, action_dict):
         return -HTTP_Conflict, "More than one datacenters found, try to identify with uuid"
     datacenter_id=vims.keys()[0]
 
-    what = 'uuid' if af.check_valid_uuid(netmap) else 'name'
+    what = 'uuid' if utils.check_valid_uuid(netmap) else 'name'
     result, content = mydb.update_rows('datacenter_nets', action_dict['netmap'], 
                             WHERE={'datacenter_id':datacenter_id, what: netmap})
     return result, content
 
 def datacenter_new_netmap(mydb, tenant_id, datacenter, action_dict=None):
     #get datacenter info
-    if af.check_valid_uuid(datacenter): 
+    if utils.check_valid_uuid(datacenter): 
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_id=datacenter)
     else:
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_name=datacenter)
@@ -2294,8 +2294,8 @@ def datacenter_new_netmap(mydb, tenant_id, datacenter, action_dict=None):
         filter_dict["shared"] = True
     
     result, content = myvim.get_network_list(filter_dict=filter_dict)
-    print content
-    if result != 200:
+    print result, content
+    if result <0:
         print " Not possible to get_network_list from VIM: %s " % (content)
         return -HTTP_Internal_Server_Error, content
     elif len(content)>1 and action_dict:
@@ -2327,7 +2327,7 @@ def datacenter_new_netmap(mydb, tenant_id, datacenter, action_dict=None):
 
 def vim_action_get(mydb, tenant_id, datacenter, item, name):
     #get datacenter info
-    if af.check_valid_uuid(datacenter): 
+    if utils.check_valid_uuid(datacenter): 
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_id=datacenter)
     else:
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_name=datacenter)
@@ -2343,12 +2343,12 @@ def vim_action_get(mydb, tenant_id, datacenter, item, name):
     myvim=vims[datacenter_id]
     filter_dict={}
     if name:
-        if af.check_valid_uuid(name):
+        if utils.check_valid_uuid(name):
             filter_dict["id"] = name
         else:
             filter_dict["name"] = name
     if item=="networks":
-        filter_dict['tenant_id'] = myvim["tenant"]
+        #filter_dict['tenant_id'] = myvim['tenant_id']
         result, content = myvim.get_network_list(filter_dict=filter_dict)
     elif item=="tenants":
         result, content = myvim.get_tenant_list(filter_dict=filter_dict)
@@ -2367,6 +2367,9 @@ def vim_action_get(mydb, tenant_id, datacenter, item, name):
     
 def vim_action_delete(mydb, tenant_id, datacenter, item, name):
     #get datacenter info
+    if tenant_id == "any":
+        tenant_id=None
+
     if af.check_valid_uuid(datacenter): 
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_id=datacenter)
     else:
@@ -2381,20 +2384,19 @@ def vim_action_delete(mydb, tenant_id, datacenter, item, name):
         return -HTTP_Conflict, "More than one datacenters found, try to identify with uuid"
     datacenter_id=vims.keys()[0]
     myvim=vims[datacenter_id]
-    #get uuid
-    if not af.check_valid_uuid(name):
-        result, content = vim_action_get(mydb, tenant_id, datacenter, item, name)
-        print content
-        if result < 0:
-            return result, content
-        items = content.values()[0]
-        if type(items)==list and len(items)==0:
-            return -HTTP_Not_Found, "Not found " + item
-        elif type(items)==list and len(items)>1:
-            return -HTTP_Not_Found, "Found more than one %s with this name. Use uuid." % item
-        else: # it is a dict
-            item_id = items["id"]
-            item_name = str(items.get("name"))
+    #get uuid name
+    result, content = vim_action_get(mydb, tenant_id, datacenter, item, name)
+    print content
+    if result < 0:
+        return result, content
+    items = content.values()[0]
+    if type(items)==list and len(items)==0:
+        return -HTTP_Not_Found, "Not found " + item
+    elif type(items)==list and len(items)>1:
+        return -HTTP_Not_Found, "Found more than one %s with this name. Use uuid." % item
+    else: # it is a dict
+        item_id = items["id"]
+        item_name = str(items.get("name"))
         
     if item=="networks":
         result, content = myvim.delete_tenant_network(item_id)
@@ -2410,7 +2412,10 @@ def vim_action_delete(mydb, tenant_id, datacenter, item, name):
 def vim_action_create(mydb, tenant_id, datacenter, item, descriptor):
     #get datacenter info
     print "vim_action_create descriptor", descriptor
-    if af.check_valid_uuid(datacenter): 
+    if tenant_id == "any":
+        tenant_id=None
+
+    if utils.check_valid_uuid(datacenter): 
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_id=datacenter)
     else:
         result, vims = get_vim(mydb, nfvo_tenant=tenant_id, datacenter_name=datacenter)