minor change to avoid deleting a non existing element from dictionary
[osm/openvim.git] / ovim.py
diff --git a/ovim.py b/ovim.py
index 15bde75..3166972 100644 (file)
--- a/ovim.py
+++ b/ovim.py
@@ -28,6 +28,9 @@ Two thread will be launched, with normal and administrative permissions.
 
 __author__ = "Alfonso Tierno, Leonardo Mirabal"
 __date__ = "$06-Feb-2017 12:07:15$"
+__version__ = "0.5.8-r524"
+version_date = "March 2017"
+database_version = "0.15"      #expected database schema version
 
 import threading
 import vim_db
@@ -109,6 +112,18 @@ class ovim():
                                                                                 self.config['db_host']) )
         return db
 
+    @staticmethod
+    def get_version():
+        return __version__
+
+    @staticmethod
+    def get_version_date():
+        return version_date
+
+    @staticmethod
+    def get_database_version():
+        return database_version
+
     @staticmethod
     def _check_dhcp_data_integrity(network):
         """
@@ -149,15 +164,16 @@ class ovim():
         Start ovim services
         :return:
         """
+        global database_version
         # if self.running_info:
         #    return  #TODO service can be checked and rebuild broken threads
         r = self.db.get_db_version()
         if r[0] < 0:
             raise ovimException("DATABASE is not a VIM one or it is a '0.0' version. Try to upgrade to version '{}' with "\
-                                "'./database_utils/migrate_vim_db.sh'".format(self.config["database_version"]) )
-        elif r[1] != self.config["database_version"]:
+                                "'./database_utils/migrate_vim_db.sh'".format(database_version) )
+        elif r[1] != database_version:
             raise ovimException("DATABASE wrong version '{}'. Try to upgrade/downgrade to version '{}' with "\
-                                "'./database_utils/migrate_vim_db.sh'".format(r[1], self.config["database_version"]) )
+                                "'./database_utils/migrate_vim_db.sh'".format(r[1], database_version) )
 
         # create database connection for openflow threads
         self.db_of = self._create_database_connection()
@@ -884,9 +900,12 @@ class ovim():
         port_data['switch_mac'] = port_mapping_data[0]['switch_mac']
 
         # remove from compute_node, region and pci of_port_data to adapt to 'ports' structure
-        del port_data['compute_node']
-        del port_data['region']
-        del port_data['pci']
+        if 'region' in port_data:
+            del port_data['region']
+        if 'pci' in port_data:
+            del port_data['pci']
+        if 'compute_node' in port_data:
+            del port_data['compute_node']
 
         result, uuid = self.db.new_row('ports', port_data, True, True)
         if result > 0:
@@ -939,7 +958,7 @@ class ovim():
                     r, c = ofc_t[switch_dpid].insert_task("update-net", net_id)
 
         if r < 0:
-            message = "Cannot insert a task for updating network '$s', %s", net_id, c
+            message = "Cannot insert a task for updating network '{}', {}".format(net_id, c)
             self.logger.error(message)
             raise ovimException(message, HTTP_Internal_Server_Error)