# contact with: nfvlabs@tid.es
##
-'''
+"""
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),
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.
-'''
-__author__="Alfonso Tierno, Gerardo Garcia, Pablo Montes"
-__date__ ="$26-aug-2014 11:09:29$"
-__version__="0.5.8-r518"
-version_date="Jan 2017"
-database_version="0.19" #expected database schema version
+"""
import time
import sys
import getopt
import yaml
+import os.path
from jsonschema import validate as js_v, exceptions as js_e
import logging
import logging.handlers as log_handlers
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
+import osm_ro
+
+__author__ = "Alfonso Tierno, Gerardo Garcia, Pablo Montes"
+__date__ = "$26-aug-2014 11:09:29$"
+__version__ = "0.5.12-r522"
+version_date = "May 2017"
+database_version = 20 #expected database schema version
global global_config
global logger
pass
def load_configuration(configuration_file):
- default_tokens ={'http_port':9090,
- 'http_host':'localhost',
- 'http_console_proxy': True,
- 'http_console_host': None,
- 'log_level': 'DEBUG',
- 'log_socket_port': 9022,
- 'auto_push_VNF_to_VIMs': True
- }
+ default_tokens = {'http_port':9090,
+ 'http_host':'localhost',
+ 'http_console_proxy': True,
+ 'http_console_host': None,
+ 'log_level': 'DEBUG',
+ 'log_socket_port': 9022,
+ 'auto_push_VNF_to_VIMs': True,
+ 'db_host': 'localhost',
+ 'db_ovim_host': 'localhost'
+ }
try:
#Check config file exists
with open(configuration_file, 'r') as f:
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="])
port=None
port_admin = None
- config_file = 'openmanod.cfg'
+ config_file = 'osm_ro/openmanod.cfg'
vnf_repository = None
log_file = None
log_socket_host = None
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"):
+ for log_module in ("nfvo", "http", "vim", "db", "console", "ovim"):
log_level_module = "log_level_" + log_module
log_file_module = "log_file_" + log_module
logger_module = logging.getLogger('openmano.' + log_module)
# Initialize DB connection
mydb = nfvo_db.nfvo_db();
mydb.connect(global_config['db_host'], global_config['db_user'], global_config['db_passwd'], global_config['db_name'])
+ db_path = osm_ro.__path__[0] + "/database_utils"
+ if not os.path.exists(db_path + "/migrate_mano_db.sh"):
+ db_path = osm_ro.__path__[0] + "/../database_utils"
try:
r = mydb.get_db_version()
- if r[1] != database_version:
- logger.critical("DATABASE wrong version '%s'. \
- Try to upgrade/downgrade to version '%s' with './database_utils/migrate_mano_db.sh'",
- r[1], database_version)
+ if r[0] != database_version:
+ logger.critical("DATABASE wrong version '{current}'. Try to upgrade/downgrade to version '{target}'"
+ " with '{db_path}/migrate_mano_db.sh {target}'".format(
+ current=r[0], target=database_version, db_path=db_path))
exit(-1)
except db_base_Exception as e:
- logger.critical("DATABASE is not a MANO one or it is a '0.0' version. Try to upgrade to version '%s' with \
- './database_utils/migrate_mano_db.sh'", database_version)
+ logger.critical("DATABASE is not valid. If you think it is corrupted, you can init it with"
+ " '{db_path}/init_mano_db.sh' script".format(db_path=db_path))
exit(-1)
nfvo.global_config=global_config
nfvo.stop_service()
if httpthread:
httpthread.join(1)
- for thread in global_config["console_thread"]:
- thread.terminate = True