X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_openvim%2Fovim.py;h=c79f86a493442a3904cc4de72f16aaa4775008bc;hb=a290d8fe0a6396044d1ab3dbcaab538c20521c56;hp=f2539120f870242c062c10eba1b0d9f1968d8db3;hpb=29d80245004e3c4877aceea39b74f848e25dc9ae;p=osm%2Fopenvim.git diff --git a/osm_openvim/ovim.py b/osm_openvim/ovim.py index f253912..c79f86a 100755 --- a/osm_openvim/ovim.py +++ b/osm_openvim/ovim.py @@ -22,21 +22,16 @@ # contact with: nfvlabs@tid.es ## -''' +""" This is the thread for the http server North API. 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.10-r526" -version_date = "Apr 2017" -database_version = "0.17" #expected database schema version +""" import threading import vim_db import logging # import imp +import os.path import argparse from netaddr import IPNetwork from jsonschema import validate as js_v, exceptions as js_e @@ -45,6 +40,11 @@ import dhcp_thread as dt import openflow_thread as oft import openflow_conn +__author__ = "Alfonso Tierno, Leonardo Mirabal" +__date__ = "$06-Feb-2017 12:07:15$" +__version__ = "0.5.13-r529" +version_date = "May 2017" +database_version = 18 #needed database schema version HTTP_Bad_Request = 400 HTTP_Unauthorized = 401 @@ -172,12 +172,20 @@ class ovim(): # if self.running_info: # return #TODO service can be checked and rebuild broken threads r = self.db.get_db_version() + db_path = __file__ + db_path = db_path[:db_path.rfind("/")] + if os.path.exists(db_path + "/database_utils/migrate_vim_db.sh"): + db_path += "/database_utils" + else: + db_path += "/../database_utils" + 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(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], database_version) ) + raise ovimException("DATABASE is not valid. If you think it is corrupted, you can init it with" + " '{db_path}/init_vim_db.sh' script".format(db_path=db_path)) + elif r[0] != database_version: + raise ovimException("DATABASE wrong version '{current}'. Try to upgrade/downgrade to version '{target}'" + " with '{db_path}/migrate_vim_db.sh {target}'".format( + current=r[0], target=database_version, db_path=db_path)) self.logger.critical("Starting ovim server version: '{} {}' database version '{}'".format( self.get_version(), self.get_version_date(), self.get_database_version())) # create database connection for openflow threads @@ -499,6 +507,7 @@ class ovim(): net_vlan = network.get("vlan") net_bind_net = network.get("bind_net") net_bind_type = network.get("bind_type") + net_region = network.get("region") name = network["name"] # check if network name ends with : and network exist in order to make and automated bindning @@ -594,8 +603,13 @@ class ovim(): net_vlan = bridge_net[1] elif net_type == 'bridge_data' or net_type == 'bridge_man' and self.config['network_type'] == 'ovs': net_provider = 'OVS' + if not net_region: + if net_type == "data" or net_type == "ptp": + net_region = "__DATA__" + elif net_provider == "OVS": + net_region = "__OVS__" if not net_vlan and (net_type == "data" or net_type == "ptp" or net_provider == "OVS"): - net_vlan = self.db.get_free_net_vlan() + net_vlan = self.db.get_free_net_vlan(net_region) if net_vlan < 0: raise ovimException("Error getting an available vlan", HTTP_Internal_Server_Error) if net_provider == 'OVS': @@ -604,6 +618,7 @@ class ovim(): network['provider'] = net_provider network['type'] = net_type network['vlan'] = net_vlan + network['region'] = net_region dhcp_integrity = True if 'enable_dhcp' in network and network['enable_dhcp']: dhcp_integrity = self._check_dhcp_data_integrity(network)