X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2ims%2Fservice%2Fcommand%2Fregistration_handler.py;h=40cd3901ef92d4501fad7ba56d91221cac35afa2;hb=8f7352951c11d939bae11422c00c87dc1f1d2a85;hp=d08bf733c1bb8cc10d91812ee2b8acac5a591325;hpb=defe8209b3628593c186487857fe02586d7e1503;p=pti%2Fo2.git diff --git a/o2ims/service/command/registration_handler.py b/o2ims/service/command/registration_handler.py index d08bf73..40cd390 100644 --- a/o2ims/service/command/registration_handler.py +++ b/o2ims/service/command/registration_handler.py @@ -21,10 +21,10 @@ from urllib.parse import urlparse from retry import retry from o2common.service.unit_of_work import AbstractUnitOfWork -from o2common.config import config +from o2common.config import config, conf + from o2ims.domain import commands -from o2ims.domain.configuration_obj import ConfigurationTypeEnum, \ - RegistrationStatusEnum +from o2ims.domain.subscription_obj import NotificationEventEnum from o2common.helper import o2logging logger = o2logging.get_logger(__name__) @@ -36,39 +36,22 @@ def registry_to_smo( ): logger.info('In registry_to_smo') data = cmd.data - logger.info('The Register2SMO all is {}'.format(data.all)) - if data.all: - confs = uow.configrations.list() - for conf in confs: - if conf.conftype != ConfigurationTypeEnum.SMO: - continue - reg_data = conf.serialize() - logger.debug('Configuration: {}'.format( - reg_data['configurationId'])) - - register_smo(uow, reg_data) - else: - with uow: - conf = uow.configurations.get(data.id) - if conf is None: - return - logger.debug('Configuration: {}'.format(conf.configurationId)) - conf_data = conf.serialize() - register_smo(uow, conf_data) + logger.info('The Register2SMO notificationEventType is {}'.format( + data.notificationEventType)) + with uow: + ocloud = uow.oclouds.get(data.id) + if ocloud is None: + return + logger.debug('O-Cloud Global UUID: {}'.format(ocloud.globalcloudId)) + ocloud_dict = ocloud.serialize() + if data.notificationEventType == NotificationEventEnum.CREATE: + register_smo(uow, ocloud_dict) -def register_smo(uow, reg_data): - call_res = call_smo(reg_data) +def register_smo(uow, ocloud_data): + call_res = call_smo(ocloud_data) logger.debug('Call SMO response is {}'.format(call_res)) - if call_res: - reg = uow.configurations.get(reg_data['configurationId']) - if reg is None: - return - reg.status = RegistrationStatusEnum.NOTIFIED - logger.debug('Updating Configurations: {}'.format( - reg.configurationId)) - uow.configurations.update(reg) - uow.commit() + # TODO: record the result for the smo register # def retry(fun, max_tries=2): @@ -86,13 +69,15 @@ def register_smo(uow, reg_data): @retry((ConnectionRefusedError), tries=2, delay=2) def call_smo(reg_data: dict): callback_data = json.dumps({ - 'consumerSubscriptionId': reg_data['configurationId'], - 'imsUrl': config.get_api_url() + 'consumerSubscriptionId': reg_data['globalcloudId'], + 'notificationEventType': 'CREATE', + 'objectRef': config.get_api_url(), + 'postObjectState': reg_data }) logger.info('URL: {}, data: {}'.format( - reg_data['callback'], callback_data)) + conf.DEFAULT.smo_register_url, callback_data)) - o = urlparse(reg_data['callback']) + o = urlparse(conf.DEFAULT.smo_register_url) conn = http.client.HTTPConnection(o.netloc) headers = {'Content-type': 'application/json'} conn.request('POST', o.path, callback_data, headers)