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
uow: AbstractUnitOfWork
):
if cmd.FromState == NfDeploymentState.Initial:
- if cmd.ToState == NfDeploymentState.NotInstalled:
+ 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:
+ elif cmd.FromState == NfDeploymentState.Installed \
+ or cmd.FromState == NfDeploymentState.Installing \
+ or cmd.FromState == NfDeploymentState.Updating \
+ or cmd.FromState == NfDeploymentState.Abnormal:
+
if cmd.ToState == NfDeploymentState.Uninstalling:
cmd2 = commands.UninstallNfDeployment(cmd.NfDeploymentId)
uninstall_nfdeployment(cmd2, uow)
else:
logger.debug("Not insterested state change: {}".format(cmd))
- elif cmd.FromState == NfDeploymentState.NotInstalled:
- if cmd.ToState == NfDeploymentState.Initial:
+ elif cmd.FromState == NfDeploymentState.Abnormal:
+ if cmd.ToState == NfDeploymentState.Deleting:
+ # cmd2 = commands.UninstallNfDeployment(cmd.NfDeploymentId)
+ # uninstall_nfdeployment(cmd2, uow)
cmd2 = commands.DeleteNfDeployment(cmd.NfDeploymentId)
delete_nfdeployment(cmd2, uow)
else:
# 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
nfdeployment.descriptorId, nfdeployment.id
))
+ nfdeployment.set_state(NfDeploymentState.Installing)
+
# helm repo add
repourl = desc.artifactRepoUrl
helm = Helm(logger, LOCAL_HELM_BIN, environment_variables={})
# in case success
with uow:
entity: NfDeployment = uow.nfdeployments.get(cmd.NfDeploymentId)
- entity.transit_state(NfDeploymentState.Installed)
+ if entity:
+ entity.set_state(NfDeploymentState.Installed)
+ entity.transit_state(NfDeploymentState.Installed)
uow.commit()
nfdeployment.descriptorId, nfdeployment.id
))
+ 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(
with uow:
entity: NfDeployment = uow.nfdeployments.get(cmd.NfDeploymentId)
- entity.transit_state(NfDeploymentState.Initial)
+ if entity:
+ entity.set_state(NfDeploymentState.Initial)
+ entity.transit_state(NfDeploymentState.Deleting)
# uow.nfdeployments.update(
# cmd.NfDeploymentId, status=NfDeploymentState.Initial)
uow.commit()