X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=RO-VIM-openvim%2Fosm_rovim_openvim%2Fvimconn_openvim.py;h=9490485536074a520d50b267ca65729b560cfb08;hb=277bf0f8bb1fd4ebf7732360e418b6fc0f97c260;hp=c89a3037abdf599bb6c789e5a22336bb6d65805e;hpb=7d782eff123e5b44d41437377ccca66ad1e8b21b;p=osm%2FRO.git diff --git a/RO-VIM-openvim/osm_rovim_openvim/vimconn_openvim.py b/RO-VIM-openvim/osm_rovim_openvim/vimconn_openvim.py index c89a3037..94904855 100644 --- a/RO-VIM-openvim/osm_rovim_openvim/vimconn_openvim.py +++ b/RO-VIM-openvim/osm_rovim_openvim/vimconn_openvim.py @@ -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":