\r
from sqlalchemy import select\r
import uuid\r
+from o2dms.domain.states import NfDeploymentState\r
from o2common.service import messagebus\r
-from o2dms.domain import events\r
from o2common.service import unit_of_work\r
from o2dms.adapter.orm import nfDeployment\r
from o2dms.api.dms_dto import DmsLcmNfDeploymentDTO\r
bus: messagebus.MessageBus):\r
\r
uow = bus.uow\r
+ id = str(uuid.uuid4())\r
with uow:\r
_check_duplication(input, uow)\r
_check_dependencies(input, uow)\r
- id = str(uuid.uuid4())\r
entity = NfDeployment(\r
id, input['name'], deploymentManagerId, input['description'],\r
input['descriptorId'], input['parentDeploymentId'])\r
uow.nfdeployments.add(entity)\r
+ entity.transit_state(NfDeploymentState.NotInstalled)\r
\r
- # publish event\r
- event = events.NfDeploymentCreated(NfDeploymentId=id)\r
+ # to be refactor later according to O2 DMS API design\r
+ entity.transit_state(NfDeploymentState.Installing)\r
uow.commit()\r
- bus.handle(event)\r
+ _handle_events(bus)\r
\r
return id\r
\r
def lcm_nfdeployment_update(\r
nfdeploymentid: str,\r
input: DmsLcmNfDeploymentDTO.NfDeployment_update,\r
- uow: unit_of_work.AbstractUnitOfWork):\r
+ bus: messagebus.MessageBus):\r
\r
+ uow = bus.uow\r
with uow:\r
- entity = uow.nfdeployments.get(nfdeploymentid)\r
+ entity: NfDeployment = uow.nfdeployments.get(nfdeploymentid)\r
entity.name = input['name']\r
entity.description = input['description']\r
entity.outputParams = input['parentDeploymentId']\r
+ entity.transit_state(NfDeploymentState.Updating)\r
uow.commit()\r
+ _handle_events(bus)\r
return True\r
\r
\r
-def lcm_nfdeployment_delete(\r
- nfdeploymentid: str, uow: unit_of_work.AbstractUnitOfWork):\r
+def _handle_events(bus: messagebus.MessageBus):\r
+ # handle events\r
+ events = bus.uow.collect_new_events()\r
+ for event in events:\r
+ bus.handle(event)\r
+ return True\r
+\r
\r
+def lcm_nfdeployment_uninstall(\r
+ nfdeploymentid: str,\r
+ bus: messagebus.MessageBus):\r
+\r
+ uow = bus.uow\r
with uow:\r
- uow.nfdeployments.delete(nfdeploymentid)\r
+ entity: NfDeployment = uow.nfdeployments.get(nfdeploymentid)\r
+ if entity.status == NfDeploymentState.Installed:\r
+ entity.transit_state(NfDeploymentState.Uninstalling)\r
+ elif entity.status == NfDeploymentState.Abnormal:\r
+ bus.uow.nfdeployments.delete(nfdeploymentid)\r
+ else:\r
+ entity.transit_state(NfDeploymentState.Abnormal)\r
uow.commit()\r
+ _handle_events(bus)\r
return True\r
\r
\r
+# def lcm_nfdeployment_delete(\r
+# nfdeploymentid: str,\r
+# bus: messagebus.MessageBus):\r
+\r
+# uow = bus.uow\r
+# with uow:\r
+# entity = uow.nfdeployments.get(nfdeploymentid)\r
+# if entity.status != NfDeploymentState.Initial:\r
+# raise Exception(\r
+# "NfDeployment {} is not in status to delete".format(\r
+# nfdeploymentid))\r
+# uow.nfdeployments.delete(nfdeploymentid)\r
+# entity.transit_state(NfDeploymentState.Deleted)\r
+# uow.commit()\r
+# return True\r
+\r
+\r
def _check_duplication(\r
input: DmsLcmNfDeploymentDTO,\r
uow: unit_of_work.AbstractUnitOfWork):\r