X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2dms%2Fservice%2Fnfdeployment_handler.py;h=0fdd00a6cf90d9a28a124905ed5e76cf93819276;hb=2ec12b6c645d9537c0aa4e508ea6885752a55580;hp=c6a40fff801ec5accfd34f1570b8589147903bf6;hpb=a6392b46c7b808b8adeede97c4dd69c5032e0d11;p=pti%2Fo2.git diff --git a/o2dms/service/nfdeployment_handler.py b/o2dms/service/nfdeployment_handler.py index c6a40ff..0fdd00a 100644 --- a/o2dms/service/nfdeployment_handler.py +++ b/o2dms/service/nfdeployment_handler.py @@ -20,6 +20,7 @@ from o2dms.domain.dms import NfDeployment, NfDeploymentDesc from o2dms.domain import commands from typing import Callable +from o2dms.domain.exceptions import NfdeploymentNotFoundError from o2dms.domain import events from o2common.service.unit_of_work import AbstractUnitOfWork from helm_sdk import Helm @@ -55,6 +56,9 @@ def handle_nfdeployment_statechanged( if cmd.ToState == NfDeploymentState.Installing: cmd2 = commands.InstallNfDeployment(cmd.NfDeploymentId) install_nfdeployment(cmd2, uow) + elif cmd.ToState == NfDeploymentState.Deleting: + cmd2 = commands.DeleteNfDeployment(cmd.NfDeploymentId) + delete_nfdeployment(cmd2, uow) else: logger.debug("Not insterested state change: {}".format(cmd)) elif cmd.FromState == NfDeploymentState.Installed \ @@ -67,12 +71,10 @@ def handle_nfdeployment_statechanged( uninstall_nfdeployment(cmd2, uow) else: logger.debug("Not insterested state change: {}".format(cmd)) - elif cmd.FromState == NfDeploymentState.Initial \ - or cmd.FromState == NfDeploymentState.Abnormal: - + elif cmd.FromState == NfDeploymentState.Abnormal: if cmd.ToState == NfDeploymentState.Deleting: - cmd2 = commands.UninstallNfDeployment(cmd.NfDeploymentId) - uninstall_nfdeployment(cmd2, uow) + # cmd2 = commands.UninstallNfDeployment(cmd.NfDeploymentId) + # uninstall_nfdeployment(cmd2, uow) cmd2 = commands.DeleteNfDeployment(cmd.NfDeploymentId) delete_nfdeployment(cmd2, uow) else: @@ -82,15 +84,19 @@ def handle_nfdeployment_statechanged( # retry 10 seconds -@retry(tries=20, max_delay=10000) +@retry( + (NfdeploymentNotFoundError), + tries=100, + delay=2, max_delay=10000, backoff=1) def _retry_get_nfdeployment( cmd: commands.InstallNfDeployment, uow: AbstractUnitOfWork): nfdeployment: NfDeployment = uow.nfdeployments.get( cmd.NfDeploymentId) if nfdeployment is None: - raise Exception("Cannot find NfDeployment: {}".format( - cmd.NfDeploymentId)) + raise NfdeploymentNotFoundError( + "Cannot find NfDeployment: {}".format( + cmd.NfDeploymentId)) return nfdeployment @@ -193,7 +199,12 @@ def uninstall_nfdeployment( nfdeployment.descriptorId, nfdeployment.id )) - nfdeployment.set_state(NfDeploymentState.Uninstalling) + with uow: + entity: NfDeployment = uow.nfdeployments.get(cmd.NfDeploymentId) + if entity: + entity.set_state(NfDeploymentState.Uninstalling) + uow.commit() + helm = Helm(logger, LOCAL_HELM_BIN, environment_variables={}) logger.debug('Try to helm del {}'.format( @@ -212,7 +223,8 @@ def uninstall_nfdeployment( with uow: entity: NfDeployment = uow.nfdeployments.get(cmd.NfDeploymentId) if entity: - entity.transit_state(NfDeploymentState.Initial) + entity.set_state(NfDeploymentState.Initial) + entity.transit_state(NfDeploymentState.Deleting) # uow.nfdeployments.update( # cmd.NfDeploymentId, status=NfDeploymentState.Initial) uow.commit()