X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_openvim%2Fovim.py;h=c9990497ee241bf294ccd22000a85e6ce04d4509;hb=e0c28c1feee0fac059bad64eb8601e9c6e47fefc;hp=e7a8b490d0d6092f0fe8d314817e526b23e81d3a;hpb=95a9e837dff140602ae27ee01edd489c94633227;p=osm%2Fopenvim.git diff --git a/osm_openvim/ovim.py b/osm_openvim/ovim.py index e7a8b49..c999049 100755 --- a/osm_openvim/ovim.py +++ b/osm_openvim/ovim.py @@ -42,9 +42,9 @@ import openflow_conn __author__ = "Alfonso Tierno, Leonardo Mirabal" __date__ = "$06-Feb-2017 12:07:15$" -__version__ = "0.5.12-r528" +__version__ = "0.5.13-r529" version_date = "May 2017" -database_version = 17 #needed database schema version +database_version = 18 #needed database schema version HTTP_Bad_Request = 400 HTTP_Unauthorized = 401 @@ -100,8 +100,6 @@ class ovim(): self.logger = logging.getLogger(self.logger_name) self.db = None self.db = self._create_database_connection() - self.db_lock = None - self.db_of = None self.of_test_mode = False def _create_database_connection(self): @@ -189,10 +187,8 @@ class ovim(): 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 - self.db_of = self._create_database_connection() - self.config["db"] = self.db_of - self.db_lock = threading.Lock() - self.config["db_lock"] = self.db_lock + self.config["db"] = self._create_database_connection() + self.config["db_lock"] = threading.Lock() self.of_test_mode = False if self.config['mode'] == 'normal' or self.config['mode'] == "OF only" else True # precreate interfaces; [bridge:, VLAN used at Host, uuid of network camping in this bridge, @@ -236,7 +232,8 @@ class ovim(): dhcp_params = self.config.get("dhcp_server") if dhcp_params: thread = dt.dhcp_thread(dhcp_params=dhcp_params, test=host_test_mode, dhcp_nets=self.config["dhcp_nets"], - db=self.db_of, db_lock=self.db_lock, logger_name=self.logger_name + ".dhcp", + db=self.config["db"], db_lock=self.config["db_lock"], + logger_name=self.logger_name + ".dhcp", debug=self.config.get('log_level_of')) thread.start() self.config['dhcp_thread'] = thread @@ -254,9 +251,11 @@ class ovim(): self.config['host_threads'] = {} for host in hosts: host['image_path'] = '/opt/VNF/images/openvim' - thread = ht.host_thread(name=host['name'], user=host['user'], host=host['ip_name'], db=self.db_of, - db_lock=self.db_lock, test=host_test_mode, image_path=self.config['image_path'], - version=self.config['version'], host_id=host['uuid'], develop_mode=host_develop_mode, + thread = ht.host_thread(name=host['name'], user=host['user'], host=host['ip_name'], db=self.config["db"], + db_lock=self.config["db_lock"], test=host_test_mode, + image_path=self.config['image_path'], + version=self.config['version'], host_id=host['uuid'], + develop_mode=host_develop_mode, develop_bridge_iface=host_develop_bridge_iface, logger_name=self.logger_name + ".host." + host['name'], debug=self.config.get('log_level_host')) @@ -417,8 +416,11 @@ class ovim(): # ofc_net_same_vlan = False ofc_net_same_vlan = False - thread = oft.openflow_thread(ofc_uuid, of_conn, of_test=self.of_test_mode, db=self.db_of, db_lock=self.db_lock, - pmp_with_same_vlan=ofc_net_same_vlan, debug=self.config['log_level_of']) + thread = oft.openflow_thread(ofc_uuid, of_conn, of_test=self.of_test_mode, db=self.config["db"], + db_lock=self.config["db_lock"], + pmp_with_same_vlan=ofc_net_same_vlan, + logger_name=self.logger_name + ".ofc." + ofc_uuid, + debug=self.config.get('log_level_of')) #r, c = thread.OF_connector.obtain_port_correspondence() #if r < 0: # raise ovimException("Cannot get openflow information %s", c) @@ -507,6 +509,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 @@ -602,8 +605,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': @@ -612,6 +620,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) @@ -1350,13 +1359,13 @@ class ovim(): host_develop_mode = True if self.config['mode'] == 'development' else False dhcp_host = ht.host_thread(name='openvim_controller', user=ovs_controller_user, host=controller_ip, - db=self.db_of, - db_lock=self.db_lock, test=host_test_mode, + db=self.config["db"], db_lock=self.config["db_lock"], test=host_test_mode, image_path=self.config['image_path'], version=self.config['version'], host_id='openvim_controller', develop_mode=host_develop_mode, - develop_bridge_iface=bridge_ifaces, logger_name=self.logger_name + ".host.controller", + develop_bridge_iface=bridge_ifaces, + logger_name=self.logger_name + ".host.controller", debug=self.config.get('log_level_host')) - + dhcp_host.start() self.config['host_threads']['openvim_controller'] = dhcp_host if not host_test_mode: dhcp_host.ssh_connect()