Revert "Removing deprecated/unused/outdated code"
[osm/RO.git] / RO / osm_ro / wim / persistence.py
index f0f1ac3..6fbaf8f 100644 (file)
@@ -40,11 +40,12 @@ No domain logic/architectural concern should be present in this file.
 """
 import json
 import logging
+import string
 from contextlib import contextmanager
 from hashlib import sha1
 from itertools import groupby
 from operator import itemgetter
-from sys import exc_info
+from sys import exc_info
 # from time import time
 from uuid import uuid1 as generate_uuid
 
@@ -128,16 +129,16 @@ _PORT_MAPPING_SELECT = ('wim_port_mapping.*', )
 _CONFIDENTIAL_FIELDS = ('password', 'passwd')
 
 _SERIALIZED_FIELDS = ('config', 'vim_info', 'wim_info', 'conn_info', 'extra',
-                      'wan_service_mapping_info')
+                      'service_mapping_info')
 
 UNIQUE_PORT_MAPPING_INFO_FIELDS = {
-    'dpid-port': ('wan_switch_dpid', 'wan_switch_port')
+    'dpid-port': ('switch_dpid', 'switch_port')
 }
 """Fields that should be unique for each port mapping that relies on
-wan_service_mapping_info.
+service_mapping_info.
 
 For example, for port mappings of type 'dpid-port', each combination of
-wan_switch_dpid and wan_switch_port should be unique (the same switch cannot
+switch_dpid and switch_port should be unique (the same switch cannot
 be connected to two different places using the same port)
 """
 
@@ -307,6 +308,11 @@ class WimPersistence(object):
         if "config" in wim_descriptor:
             wim_descriptor["config"] = _serialize(wim_descriptor["config"])
 
+        url = wim_descriptor["wim_url"]
+        wim_descriptor["wim_url"] = url.strip(string.whitespace + "/")
+        # ^  This avoid the common problem caused by trailing spaces/slashes in
+        #    the URL (due to CTRL+C/CTRL+V)
+
         return self.db.new_row(
             "wims", wim_descriptor, add_uuid=True, confidential_data=True)
 
@@ -362,6 +368,7 @@ class WimPersistence(object):
     def get_wim_accounts(self, **kwargs):
         """Retrieve all the accounts from the database"""
         kwargs.setdefault('postprocess', _postprocess_wim_account)
+        kwargs.setdefault('WHERE', {"sdn": "false"})
         return self.query(FROM=_WIM_ACCOUNT_JOIN, **kwargs)
 
     def get_wim_account(self, uuid_or_name, **kwargs):
@@ -507,14 +514,14 @@ class WimPersistence(object):
         return self.get_datacenters_by(datacenter, tenant, **kwargs)[0]
 
     def _create_single_port_mapping(self, properties):
-        info = properties.setdefault('wan_service_mapping_info', {})
-        endpoint_id = properties.get('wan_service_endpoint_id')
+        info = properties.setdefault('service_mapping_info', {})
+        endpoint_id = properties.get('service_endpoint_id')
 
         if info.get('mapping_type') and not endpoint_id:
-            properties['wan_service_endpoint_id'] = (
+            properties['service_endpoint_id'] = (
                 self._generate_port_mapping_id(info))
 
-        properties['wan_service_mapping_info'] = _serialize(info)
+        properties['service_mapping_info'] = _serialize(info)
 
         try:
             self.db.new_row('wim_port_mappings', properties,
@@ -523,10 +530,10 @@ class WimPersistence(object):
             self.logger.exception(old_exception)
             ex = InvalidParameters(
                 "The mapping must contain the "
-                "'pop_switch_dpid', 'pop_switch_port',  and "
-                "wan_service_mapping_info: "
-                "('wan_switch_dpid' and 'wan_switch_port') or "
-                "'wan_service_endpoint_id}'")
+                "'device_id', 'device_interface_id',  and "
+                "service_mapping_info: "
+                "('switch_dpid' and 'switch_port') or "
+                "'service_endpoint_id}'")
             raise ex from old_exception
 
         return properties
@@ -627,12 +634,12 @@ class WimPersistence(object):
         original = self.query_one('wim_port_mappings', WHERE={'id': id})
 
         mapping_info = remove_none_items(merge_dicts(
-            original.get('wan_service_mapping_info') or {},
-            properties.get('wan_service_mapping_info') or {}))
+            original.get('service_mapping_info') or {},
+            properties.get('service_mapping_info') or {}))
 
         updates = preprocess_record(
             merge_dicts(original, remove_none_items(properties),
-                        wan_service_mapping_info=mapping_info))
+                        service_mapping_info=mapping_info))
 
         num_changes = self.db.update_rows('wim_port_mappings',
                                           UPDATE=updates, WHERE={'id': id})
@@ -727,7 +734,7 @@ class WimPersistence(object):
         kwargs.setdefault('error_if_none', False)
 
         criteria_fields = ('uuid', 'instance_scenario_id', 'sce_net_id',
-                           'wim_id', 'wim_account_id')
+                           'wim_id', 'wim_account_id', 'sdn')
         criteria = remove_none_items(filter_dict_keys(kwargs, criteria_fields))
         kwargs = filter_out_dict_keys(kwargs, criteria_fields)
 
@@ -863,10 +870,7 @@ def _preprocess_wim_account(wim_account):
     """
     wim_account = preprocess_record(wim_account)
 
-    created = wim_account.get('created')
-    wim_account['created'] = (
-        'true' if created is True or created == 'true' else 'false')
-
+    wim_account['sdn'] = False
     return wim_account
 
 
@@ -912,8 +916,8 @@ def _postprocess_wim_account(wim_account, hide=_CONFIDENTIAL_FIELDS):
 
 def _postprocess_wim_port_mapping(mapping, hide=_CONFIDENTIAL_FIELDS):
     mapping = _postprocess_record(mapping, hide=hide)
-    mapping_info = mapping.get('wan_service_mapping_info', None) or {}
-    mapping['wan_service_mapping_info'] = mapping_info
+    mapping_info = mapping.get('service_mapping_info', None) or {}
+    mapping['service_mapping_info'] = mapping_info
     return mapping