Merge branch 'py3' features 8029 8030
[osm/RO.git] / RO-VIM-openvim / osm_rovim_openvim / vimconn_openvim.py
index c89a303..9490485 100644 (file)
@@ -323,6 +323,7 @@ get_processor_rankings_response_schema = {
     }
 }
 
+
 class vimconnector(vimconn.vimconnector):
     def __init__(self, uuid, name, tenant_id, tenant_name, url, url_admin=None, user=None, passwd=None,
                  log_level="DEBUG", config={}, persistent_info={}):
@@ -391,13 +392,16 @@ class vimconnector(vimconn.vimconnector):
                 a= self._remove_extra_items(d, schema['items'])
                 if a is not None: deleted.append(a)
         elif type(data) is dict:
+            to_delete = []
             for k in data.keys():
                 if 'properties' not in schema or k not in schema['properties'].keys():
-                    del data[k]
+                    to_delete.append(k)
                     deleted.append(k)
                 else:
                     a = self._remove_extra_items(data[k], schema['properties'][k])
                     if a is not None:  deleted.append({k:a})
+            for k in to_delete:
+                del data[k]
         if len(deleted) == 0: return None
         elif len(deleted) == 1: return deleted[0]
         else: return deleted
@@ -484,7 +488,7 @@ class vimconnector(vimconn.vimconnector):
         except requests.exceptions.RequestException as e:
             self._format_request_exception(e)
 
-    def new_network(self,net_name, net_type, ip_profile=None, shared=False, vlan=None): #, **vim_specific):
+    def new_network(self,net_name, net_type, ip_profile=None, shared=False, provider_network_profile=None): #, **vim_specific):
         """Adds a tenant network to VIM
         Params:
             'net_name': name of the network
@@ -501,7 +505,7 @@ class vimconnector(vimconn.vimconnector):
                 'dhcp_start_address': ip_schema, first IP to grant
                 'dhcp_count': number of IPs to grant.
             'shared': if this network can be seen/use by other tenants/organization
-            'vlan': in case of a data or ptp net_type, the intended vlan tag to be used for the network
+            'provider_network_profile': (optional) contains {segmentation-id: vlan, provider-network: vim_netowrk}
         Returns a tuple with the network identifier and created_items, or raises an exception on error
             created_items can be None or a dictionary where this method can include key-values that will be passed to
             the method delete_network. Can be used to store created segments, created l2gw connections, etc.
@@ -509,6 +513,9 @@ class vimconnector(vimconn.vimconnector):
             as not present.
         """
         try:
+            vlan = None
+            if provider_network_profile:
+                vlan = provider_network_profile.get("segmentation-id")
             created_items = {}
             self._get_my_tenant()
             if net_type=="bridge":