X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=openmanod;h=4ebac750144c265e8133b03b8bf6064b92e1f6d8;hb=0446cd5df24c38f95cea13b995c553e9b2403f21;hp=18ca8cc252c9e12b1f2bb6c2af25a4793d5c6d8c;hpb=45140f51dbddc7084fdedf71fd888f691b851301;p=osm%2FRO.git diff --git a/openmanod b/openmanod index 18ca8cc2..4ebac750 100755 --- a/openmanod +++ b/openmanod @@ -27,7 +27,7 @@ openmano server. Main program that implements a reference NFVO (Network Functions Virtualisation Orchestrator). It interfaces with an NFV VIM through its API and offers a northbound interface, based on REST (openmano API), where NFV services are offered including the creation and deletion of VNF templates, VNF instances, -network service templates and network service instances. +network service templates and network service instances. It loads the configuration file and launches the http_server thread that will listen requests using openmano API. """ @@ -44,13 +44,15 @@ import socket from osm_ro import httpserver, nfvo, nfvo_db from osm_ro.openmano_schemas import config_schema from osm_ro.db_base import db_base_Exception +from osm_ro.wim.engine import WimEngine +from osm_ro.wim.persistence import WimPersistence import osm_ro __author__ = "Alfonso Tierno, Gerardo Garcia, Pablo Montes" __date__ = "$26-aug-2014 11:09:29$" -__version__ = "0.5.56-r566" -version_date = "Mar 2018" -database_version = 28 # expected database schema version +__version__ = "0.6.00" +version_date = "Sep 2018" +database_version = 34 # expected database schema version global global_config @@ -106,7 +108,7 @@ def load_configuration(configuration_file): def console_port_iterator(): - '''this iterator deals with the http_console_ports + '''this iterator deals with the http_console_ports returning the ports one by one ''' index = 0 @@ -136,6 +138,7 @@ def usage(): print(" --log-socket-host HOST: send logs to this host") print(" --log-socket-port PORT: send logs using this port (default: 9022)") print(" --log-file FILE: send logs to this file") + print(" --create-tenant NAME: Try to creates this tenant name before starting, ignoring any errors as e.g. conflict") return @@ -183,8 +186,10 @@ if __name__=="__main__": # Read parameters and configuration file httpthread = None try: - #load parameters and configuration - opts, args = getopt.getopt(sys.argv[1:], "hvc:V:p:P:", ["config=", "help", "version", "port=", "vnf-repository=", "adminport=", "log-socket-host=", "log-socket-port=", "log-file="]) + # load parameters and configuration + opts, args = getopt.getopt(sys.argv[1:], "hvc:V:p:P:", + ["config=", "help", "version", "port=", "vnf-repository=", "adminport=", + "log-socket-host=", "log-socket-port=", "log-file=", "create-tenant="]) port=None port_admin = None config_file = 'osm_ro/openmanod.cfg' @@ -192,6 +197,7 @@ if __name__=="__main__": log_file = None log_socket_host = None log_socket_port = None + create_tenant = None for o, a in opts: if o in ("-v", "--version"): @@ -215,6 +221,8 @@ if __name__=="__main__": log_socket_host = a elif o == "--log-file": log_file = a + elif o == "--create-tenant": + create_tenant = a else: assert False, "Unhandled option" if log_file: @@ -281,7 +289,7 @@ if __name__=="__main__": logger.critical("Starting openmano server version: '%s %s' command: '%s'", __version__, version_date, " ".join(sys.argv)) - for log_module in ("nfvo", "http", "vim", "db", "console", "ovim"): + for log_module in ("nfvo", "http", "vim", "wim", "db", "console", "ovim"): log_level_module = "log_level_" + log_module log_file_module = "log_file_" + log_module logger_module = logging.getLogger('openmano.' + log_module) @@ -320,9 +328,26 @@ if __name__=="__main__": exit(-1) nfvo.global_config=global_config - nfvo.start_service(mydb) - - httpthread = httpserver.httpserver(mydb, False, global_config['http_host'], global_config['http_port']) + if create_tenant: + try: + nfvo.new_tenant(mydb, {"name": create_tenant}) + except Exception as e: + if isinstance(e, nfvo.NfvoException) and e.http_code == 409: + pass # if tenant exist (NfvoException error 409), ignore + else: # otherwise print and error and continue + logger.error("Cannot create tenant '{}': {}".format(create_tenant, e)) + + # WIM module + wim_persistence = WimPersistence(mydb) + wim_engine = WimEngine(wim_persistence) + # --- + nfvo.start_service(mydb, wim_persistence, wim_engine) + + httpthread = httpserver.httpserver( + mydb, False, + global_config['http_host'], global_config['http_port'], + wim_persistence, wim_engine + ) httpthread.start() if 'http_admin_port' in global_config: