from osm_lcm import netslice
from osm_lcm import ROclient
-from time import time, sleep
+from time import time
from osm_lcm.lcm_utils import versiontuple, LcmException, TaskRegistry, LcmExceptionExit
-from osm_lcm import version as _lcm_version, version_date as lcm_version_date
+from osm_lcm import version as lcm_version, version_date as lcm_version_date
from osm_common import dbmemory, dbmongo, fslocal, fsmongo, msglocal, msgkafka
from osm_common import version as common_version
min_n2vc_version = "0.0.2"
min_common_version = "0.1.19"
-lcm_version = _lcm_version
health_check_file = path.expanduser("~") + "/time_last_ping" # TODO find better location for this file
:param config: two level dictionary with configuration. Top level should contain 'database', 'storage',
:return: None
"""
- global lcm_version
self.db = None
self.msg = None
self.msg_admin = None
self.logger.debug("Starting/Ending test task: {}".format(param))
async def kafka_ping(self):
- global lcm_version
self.logger.debug("Task kafka_ping Enter")
consecutive_errors = 0
first_start = True
except Exception as e:
self.logger.error("Cannot write into '{}' for healthcheck: {}".format(health_check_file, e))
return
+ elif topic == "pla":
+ if command == "placement":
+ self.ns.update_nsrs_with_pla_result(params)
+ return
elif topic == "k8scluster":
if command == "create" or command == "created":
k8scluster_id = params.get("_id")
self.lcm_tasks.register("k8srepo", k8srepo_id, order_id, "k8srepo_delete", task)
return
elif topic == "ns":
- if command == "instantiate" or command == "instantiated":
+ if command == "instantiate":
# self.logger.debug("Deploying NS {}".format(nsr_id))
nslcmop = params
nslcmop_id = nslcmop["_id"]
task = asyncio.ensure_future(self.ns.instantiate(nsr_id, nslcmop_id))
self.lcm_tasks.register("ns", nsr_id, nslcmop_id, "ns_instantiate", task)
return
- elif command == "terminate" or command == "terminated":
+ elif command == "terminate":
# self.logger.debug("Deleting NS {}".format(nsr_id))
nslcmop = params
nslcmop_id = nslcmop["_id"]
elif command in ("terminated", "instantiated", "scaled", "actioned"): # "scaled-cooldown-time"
return
elif topic == "nsi": # netslice LCM processes (instantiate, terminate, etc)
- if command == "instantiate" or command == "instantiated":
+ if command == "instantiate":
# self.logger.debug("Instantiating Network Slice {}".format(nsilcmop["netsliceInstanceId"]))
nsilcmop = params
nsilcmop_id = nsilcmop["_id"] # slice operation id
task = asyncio.ensure_future(self.netslice.instantiate(nsir_id, nsilcmop_id))
self.lcm_tasks.register("nsi", nsir_id, nsilcmop_id, "nsi_instantiate", task)
return
- elif command == "terminate" or command == "terminated":
+ elif command == "terminate":
# self.logger.debug("Terminating Network Slice NS {}".format(nsilcmop["netsliceInstanceId"]))
nsilcmop = params
nsilcmop_id = nsilcmop["_id"] # slice operation id
self.first_start = True
while self.consecutive_errors < 10:
try:
- topics = ("ns", "vim_account", "wim_account", "sdn", "nsi", "k8scluster", "k8srepo")
+ topics = ("ns", "vim_account", "wim_account", "sdn", "nsi", "k8scluster", "k8srepo", "pla")
topics_admin = ("admin", )
await asyncio.gather(
self.msg.aioread(topics, self.loop, self.kafka_read_callback),
return ''.join(random_choice("0123456789abcdef") for _ in range(12))
-def _get_version():
- """
- Try to get version from package using pkg_resources (available with setuptools)
- """
- global lcm_version
- try:
- from pkg_resources import get_distribution
- lcm_version = get_distribution("osm_lcm").version
- except Exception:
- pass
-
-
def usage():
print("""Usage: {} [options]
-c|--config [configuration_file]: loads the configuration file (default: ./lcm.cfg)
# --log-socket-port PORT: send logs using this port (default: 9022)")
-def health_check():
- retry = 2
- while retry:
- retry -= 1
- try:
- with open(health_check_file, "r") as f:
- last_received_ping = f.read()
-
- if time() - float(last_received_ping) < Lcm.ping_interval_pace + 10:
- exit(0)
- except Exception:
- pass
- if retry:
- sleep(6)
- exit(1)
-
-
if __name__ == '__main__':
try:
- print("SYS.PATH='{}'".format(sys.path))
+ # print("SYS.PATH='{}'".format(sys.path))
# load parameters and configuration
# -h
# -c value
elif o in ("-c", "--config"):
config_file = a
elif o == "--health-check":
- health_check()
+ from osm_lcm.lcm_hc import health_check
+ health_check(health_check_file, Lcm.ping_interval_pace)
# elif o == "--log-socket-port":
# log_socket_port = a
# elif o == "--log-socket-host":
else:
print("No configuration file 'lcm.cfg' found neither at local folder nor at /etc/osm/", file=sys.stderr)
exit(1)
- # get version from package and upate global lcm_version
- _get_version()
lcm = Lcm(config_file)
lcm.start()
except (LcmException, getopt.GetoptError) as e: