From: garciadeblas Date: Tue, 27 Sep 2016 09:38:58 +0000 (+0200) Subject: Merge "new option --screen at basictest to force launching in a screen" X-Git-Tag: v1.0.0~25 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=70d4c7a9aa85e92a7842b06a5b2ff05e32467fb7;hp=7684184c8c34ae4e42a282bc649b89dc1d7fa795;p=osm%2FRO.git Merge "new option --screen at basictest to force launching in a screen" --- diff --git a/database_utils/init_mano_db.sh b/database_utils/init_mano_db.sh index 9fc9b753..224269bc 100755 --- a/database_utils/init_mano_db.sh +++ b/database_utils/init_mano_db.sh @@ -98,7 +98,7 @@ DBHOST_="-h$DBHOST" DBPORT_="-P$DBPORT" TEMPFILE="$(mktemp -q --tmpdir "initmanodb.XXXXXX")" -trap 'rm -f "$TEMPFILE"' EXIT SIGINT SIGTERM +trap 'rm -f "$TEMPFILE"' EXIT chmod 0600 "$TEMPFILE" cat >"$TEMPFILE" <"$TEMPFILE" < 11 [ $OPENMANO_VER_NUM -ge 4046 ] && DATABASE_TARGET_VER_NUM=12 #0.4.46=> 12 [ $OPENMANO_VER_NUM -ge 4047 ] && DATABASE_TARGET_VER_NUM=13 #0.4.47=> 13 +[ $OPENMANO_VER_NUM -ge 4057 ] && DATABASE_TARGET_VER_NUM=14 #0.4.57=> 14 #TODO ... put next versions here @@ -625,6 +626,20 @@ function downgrade_from_13(){ echo "DELETE FROM schema_version WHERE version_int='13';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1 } +function upgrade_to_14(){ + echo " upgrade database from version 0.13 to version 0.14" + echo " remove unique index vim_net_id, instance_scenario_id at table 'instance_nets'" + echo "ALTER TABLE instance_nets DROP INDEX vim_net_id_instance_scenario_id;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1 + echo "ALTER TABLE instance_nets CHANGE COLUMN external created ENUM('true','false') NOT NULL DEFAULT 'false' COMMENT 'Created or already exists at VIM' AFTER multipoint;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1 + echo "INSERT INTO schema_version (version_int, version, openmano_ver, comments, date) VALUES (14, '0.14', '0.4.57', 'remove unique index vim_net_id, instance_scenario_id', '2016-09-26');" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1 +} +function downgrade_from_14(){ + echo " downgrade database from version 0.14 to version 0.13" + echo " remove cloud_config at 'scenarios', 'instance_scenarios'" + echo "ALTER TABLE instance_nets ADD UNIQUE INDEX vim_net_id_instance_scenario_id (vim_net_id, instance_scenario_id);" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1 + echo "ALTER TABLE instance_nets CHANGE COLUMN created external ENUM('true','false') NOT NULL DEFAULT 'false' COMMENT 'If external, means that it already exists at VIM' AFTER multipoint;" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1 + echo "DELETE FROM schema_version WHERE version_int='14';" | $DBCMD || ! echo "ERROR. Aborted!" || exit -1 +} function upgrade_to_X(){ echo " change 'datacenter_nets'" diff --git a/db_base.py b/db_base.py index 265752f3..f6a5c59a 100644 --- a/db_base.py +++ b/db_base.py @@ -141,7 +141,7 @@ class db_base_Exception(Exception): class db_base(): tables_with_created_field=() - def __init__(self, host=None, user=None, passwd=None, database=None, log_name='db', log_level="ERROR"): + def __init__(self, host=None, user=None, passwd=None, database=None, log_name='db', log_level=None): self.host = host self.user = user self.passwd = passwd @@ -149,7 +149,8 @@ class db_base(): self.con = None self.log_level=log_level self.logger = logging.getLogger(log_name) - self.logger.setLevel( getattr(logging, log_level) ) + if self.log_level: + self.logger.setLevel( getattr(logging, log_level) ) def connect(self, host=None, user=None, passwd=None, database=None): '''Connect to specific data base. diff --git a/nfvo.py b/nfvo.py index c27c51e1..dd3eb55b 100644 --- a/nfvo.py +++ b/nfvo.py @@ -1320,6 +1320,7 @@ def start_scenario(mydb, tenant_id, scenario_id, instance_scenario_name, instanc sce_net['vim_id'] = network_id auxNetDict['scenario'][sce_net['uuid']] = network_id rollbackList.append({'what':'network','where':'vim','vim_id':datacenter_id,'uuid':network_id}) + sce_net["created"] = True else: if sce_net['vim_id'] == None: error_text = "Error, datacenter '%s' does not have external network '%s'." % (datacenter_name, sce_net['name']) @@ -1353,6 +1354,7 @@ def start_scenario(mydb, tenant_id, scenario_id, instance_scenario_name, instanc auxNetDict[sce_vnf['uuid']] = {} auxNetDict[sce_vnf['uuid']][net['uuid']] = network_id rollbackList.append({'what':'network','where':'vim','vim_id':datacenter_id,'uuid':network_id}) + net["created"] = True #print "auxNetDict:" #print yaml.safe_dump(auxNetDict, indent=4, default_flow_style=False) @@ -1820,6 +1822,7 @@ def create_instance(mydb, tenant_id, instance_dict): sce_net["vim_id_sites"][datacenter_id] = network_id auxNetDict['scenario'][sce_net['uuid']][datacenter_id] = network_id rollbackList.append({'what':'network', 'where':'vim', 'vim_id':datacenter_id, 'uuid':network_id}) + sce_net["created"] = True #2. Creating new nets (vnf internal nets) in the VIM" #For each vnf net, we create it and we add it to instanceNetlist. @@ -1843,6 +1846,8 @@ def create_instance(mydb, tenant_id, instance_dict): auxNetDict[sce_vnf['uuid']] = {} auxNetDict[sce_vnf['uuid']][net['uuid']] = network_id rollbackList.append({'what':'network','where':'vim','vim_id':datacenter_id,'uuid':network_id}) + net["created"] = True + #print "auxNetDict:" #print yaml.safe_dump(auxNetDict, indent=4, default_flow_style=False) @@ -2014,7 +2019,7 @@ def delete_instance(mydb, tenant_id, instance_id): #2.2 deleting NETS #net_fail_list=[] for net in instanceDict['nets']: - if net['external']: + if not net['created']: continue #skip not created nets if not myvim: continue @@ -2080,7 +2085,7 @@ def refresh_instance(mydb, nfvo_tenant, instanceDict, datacenter=None, vim_tenan if iface["type"]=="mgmt": has_mgmt_iface = True if vm_dict[vm_id]['status'] == "ACTIVE:NoMgmtIP" and not has_mgmt_iface: - vm_dict[vm_id]['status'] = "ACTIVE" + vm_dict[vm_id]['status'] = "ACTIVE" if vm['status'] != vm_dict[vm_id]['status'] or vm.get('error_msg')!=vm_dict[vm_id].get('error_msg') or vm.get('vim_info')!=vm_dict[vm_id].get('vim_info'): vm['status'] = vm_dict[vm_id]['status'] vm['error_msg'] = vm_dict[vm_id].get('error_msg') @@ -2096,16 +2101,16 @@ def refresh_instance(mydb, nfvo_tenant, instanceDict, datacenter=None, vim_tenan # 2.2. Update in openmano DB the interface VMs for interface in interfaces: #translate from vim_net_id to instance_net_id - network_id=None + network_id_list=[] for net in instanceDict['nets']: if net["vim_net_id"] == interface["vim_net_id"]: - network_id = net["uuid"] - break - if not network_id: + network_id_list.append(net["uuid"]) + if not network_id_list: continue del interface["vim_net_id"] - try: - mydb.update_rows('instance_interfaces', UPDATE=interface, WHERE={'instance_vm_id':vm["uuid"], "instance_net_id":network_id}) + try: + for network_id in network_id_list: + mydb.update_rows('instance_interfaces', UPDATE=interface, WHERE={'instance_vm_id':vm["uuid"], "instance_net_id":network_id}) except db_base_Exception as e: logger.error( "nfvo.refresh_instance error with vm=%s, interface_net_id=%s", vm["uuid"], network_id) diff --git a/nfvo_db.py b/nfvo_db.py index 5b47f1d2..9d3b6485 100644 --- a/nfvo_db.py +++ b/nfvo_db.py @@ -39,7 +39,7 @@ tables_with_createdat_field=["datacenters","instance_nets","instance_scenarios", "sce_vnfs","tenants_datacenters","datacenter_tenants","vms","vnfs", "datacenter_nets"] class nfvo_db(db_base.db_base): - def __init__(self, host=None, user=None, passwd=None, database=None, log_name='openmano.db', log_level="ERROR"): + def __init__(self, host=None, user=None, passwd=None, database=None, log_name='openmano.db', log_level=None): db_base.db_base.__init__(self, host, user, passwd, database, log_name, log_level) db_base.db_base.tables_with_created_field=tables_with_createdat_field return @@ -776,7 +776,7 @@ class nfvo_db(db_base.db_base): sce_net_id = net.get("uuid") for datacenter_site_id,vim_id in net["vim_id_sites"].iteritems(): - INSERT_={'vim_net_id': vim_id, 'external': net['external'], 'instance_scenario_id':instance_uuid } #, 'type': net['type'] + INSERT_={'vim_net_id': vim_id, 'created': net.get('created', False), 'instance_scenario_id':instance_uuid } #, 'type': net['type'] INSERT_['datacenter_id'] = datacenter_site_id INSERT_['datacenter_tenant_id'] = net.get('datacenter_tenant_id', datacenter_tenant_id) #TODO revise if sce_net_id: @@ -809,7 +809,7 @@ class nfvo_db(db_base.db_base): #instance_nets #nets intraVNF for net in vnf['nets']: net_scene2instance[ net['uuid'] ] = {} - INSERT_={'vim_net_id': net['vim_id'], 'external': 'false', 'instance_scenario_id':instance_uuid } #, 'type': net['type'] + INSERT_={'vim_net_id': net['vim_id'], 'created': net.get('created', False), 'instance_scenario_id':instance_uuid } #, 'type': net['type'] INSERT_['datacenter_id'] = net.get('datacenter_id', datacenter_site_id) INSERT_['datacenter_tenant_id'] = net.get('datacenter_tenant_id', datacenter_site_tenant_id) if net.get("uuid"): @@ -935,7 +935,7 @@ class nfvo_db(db_base.db_base): #from_text = "instance_nets join instance_scenarios on instance_nets.instance_scenario_id=instance_scenarios.uuid " + \ # "join sce_nets on instance_scenarios.scenario_id=sce_nets.scenario_id" #where_text = "instance_nets.instance_scenario_id='"+ instance_dict['uuid'] + "'" - cmd = "SELECT uuid,vim_net_id,status,error_msg,vim_info,external, sce_net_id, net_id as vnf_net_id, datacenter_id, datacenter_tenant_id"\ + cmd = "SELECT uuid,vim_net_id,status,error_msg,vim_info,created, sce_net_id, net_id as vnf_net_id, datacenter_id, datacenter_tenant_id"\ " FROM instance_nets" \ " WHERE instance_scenario_id='{}' ORDER BY created_at".format(instance_dict['uuid']) self.logger.debug(cmd) @@ -943,7 +943,7 @@ class nfvo_db(db_base.db_base): instance_dict['nets'] = self.cur.fetchall() db_base._convert_datetime2str(instance_dict) - db_base._convert_str2boolean(instance_dict, ('public','shared','external') ) + db_base._convert_str2boolean(instance_dict, ('public','shared','created') ) return instance_dict except (mdb.Error, AttributeError) as e: self._format_error(e, tries) diff --git a/openmano b/openmano index 9697bbce..818e7173 100755 --- a/openmano +++ b/openmano @@ -28,8 +28,8 @@ openmano client used to interact with openmano-server (openmanod) ''' __author__="Alfonso Tierno, Gerardo Garcia" __date__ ="$09-oct-2014 09:09:48$" -__version__="0.4.5-r489" -version_date="Aug 2016" +__version__="0.4.6-r500" +version_date="Sep 2016" from argcomplete.completers import FilesCompleter import os @@ -742,12 +742,12 @@ def instance_scenario_list(args): print "---------------------------------------" print "Internal nets:" for net in instance['nets']: - if not net['external']: + if net['created']: print " %s %s VIM ID: %s" %(net['uuid'].ljust(38), net['status'].ljust(12), net['vim_net_id']) print "---------------------------------------" print "External nets:" for net in instance['nets']: - if net['external']: + if not net['created']: print " %s %s VIM ID: %s" %(net['uuid'].ljust(38), net['status'].ljust(12), net['vim_net_id']) print "---------------------------------------" print "VM instances:" diff --git a/openmanod.cfg b/openmanod.cfg index 1a101915..4ae845b7 100644 --- a/openmanod.cfg +++ b/openmanod.cfg @@ -51,21 +51,21 @@ db_name: mano_db # Name of the MANO DB #vnf_repository: "./vnfrepo" # Use an absolute path to avoid misunderstandings -#logging parameters for internal file stororage +#general logging parameters #choose among: DEBUG, INFO, WARNING, ERROR, CRITICAL log_level: DEBUG #general log levels for internal logging #standard output is used unless 'log_file' is specify #log_file: /var/log/openmano/openmano.log -#individual loggin settings +#individual logging settings #log_level_db: DEBUG #database log levels -log_file_db: /opt/openmano/logs/openmano_db.log +#log_file_db: /opt/openmano/logs/openmano_db.log #log_level_vim: DEBUG #VIM connection log levels -log_file_vim: /opt/openmano/logs/openmano_vimconn.log +#log_file_vim: /opt/openmano/logs/openmano_vimconn.log #log_level_nfvo: DEBUG #Main engine log levels -log_file_nfvo: /opt/openmano/logs/openmano_nfvo.log +#log_file_nfvo: /opt/openmano/logs/openmano_nfvo.log #log_level_http: DEBUG #Main engine log levels -log_file_http: /opt/openmano/logs/openmano_http.log +#log_file_http: /opt/openmano/logs/openmano_http.log #Uncomment to send logs via IP to an external host #log_socket_host: localhost diff --git a/openmanod.py b/openmanod.py index 5b67cf05..2becccff 100755 --- a/openmanod.py +++ b/openmanod.py @@ -33,9 +33,9 @@ It loads the configuration file and launches the http_server thread that will li ''' __author__="Alfonso Tierno, Gerardo Garcia, Pablo Montes" __date__ ="$26-aug-2014 11:09:29$" -__version__="0.4.55-r497" +__version__="0.4.58-r501" version_date="Sep 2016" -database_version="0.13" #expected database schema version +database_version="0.14" #expected database schema version import httpserver import time @@ -62,9 +62,6 @@ def load_configuration(configuration_file): 'http_console_proxy': True, 'http_console_host': None, 'log_level': 'DEBUG', - 'log_level_db': 'ERROR', - 'log_level_vimconn': 'DEBUG', - 'log_level_nfvo': 'DEBUG', 'log_socket_port': 9022, } try: @@ -259,7 +256,7 @@ if __name__=="__main__": #nfvo.logger = global_config["logger_nfvo"] # Initialize DB connection - mydb = nfvo_db.nfvo_db(log_level=global_config["log_level_db"]); + mydb = nfvo_db.nfvo_db(); if mydb.connect(global_config['db_host'], global_config['db_user'], global_config['db_passwd'], global_config['db_name']) == -1: logger.critical("Cannot connect to database %s at %s@%s", global_config['db_name'], global_config['db_user'], global_config['db_host']) exit(-1) diff --git a/scripts/install-openmano.sh b/scripts/install-openmano.sh index 9ffcdabc..d46b22b2 100755 --- a/scripts/install-openmano.sh +++ b/scripts/install-openmano.sh @@ -267,7 +267,7 @@ echo ' #################################################################' echo -e "\nCreating temporary file form MYSQL installation and initialization" TEMPFILE="$(mktemp -q --tmpdir "installopenmano.XXXXXX")" -trap 'rm -f "$TEMPFILE"' EXIT SIGINT SIGTERM +trap 'rm -f "$TEMPFILE"' EXIT chmod 0600 "$TEMPFILE" cat >"$TEMPFILE" <