blob: 54e002e321bf53951d38ad9994916c260284e99d [file] [log] [blame]
Patricia Reinoso02a39fd2023-03-08 17:13:56 +00001#######################################################################################
2# Copyright ETSI Contributors and Others.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13# implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
Gulsum Atici50d12e02023-04-27 16:41:43 +030017from temporalio import activity
Dario Faccinf5d65b52023-06-19 12:35:33 +020018from time import time
19from osm_common.temporal.activities.vim import (
20 UpdateVimState,
21 UpdateVimOperationState,
22 DeleteVimRecord,
23)
Patricia Reinoso02a39fd2023-03-08 17:13:56 +000024
Patricia Reinoso02a39fd2023-03-08 17:13:56 +000025
Mark Beierl82629422023-06-29 20:22:36 +000026@activity.defn(name=UpdateVimState.__name__)
Dario Faccinf5d65b52023-06-19 12:35:33 +020027class UpdateVimStateImpl(UpdateVimState):
Dario Faccinf5d65b52023-06-19 12:35:33 +020028 async def __call__(self, activity_input: UpdateVimState.Input) -> None:
Patricia Reinoso02a39fd2023-03-08 17:13:56 +000029 update_vim_state = {
Dario Faccinf5d65b52023-06-19 12:35:33 +020030 "_admin.operationalState": activity_input.operational_state.name,
31 "_admin.detailed-status": activity_input.message,
Patricia Reinoso02a39fd2023-03-08 17:13:56 +000032 "_admin.modified": time(),
33 }
34
Dario Faccinf5d65b52023-06-19 12:35:33 +020035 self.db.set_one(
36 "vim_accounts", {"_id": activity_input.vim_uuid}, update_vim_state
37 )
Mark Beierl0c202d22023-04-06 13:58:31 +000038 self.logger.debug(
Dario Faccinf5d65b52023-06-19 12:35:33 +020039 f"Updated VIM {activity_input.vim_uuid} to {activity_input.operational_state.name}"
Patricia Reinoso02a39fd2023-03-08 17:13:56 +000040 )
41
Patricia Reinoso02a39fd2023-03-08 17:13:56 +000042
Mark Beierl82629422023-06-29 20:22:36 +000043@activity.defn(name=UpdateVimOperationState.__name__)
Dario Faccinf5d65b52023-06-19 12:35:33 +020044class UpdateVimOperationStateImpl(UpdateVimOperationState):
Dario Faccinf5d65b52023-06-19 12:35:33 +020045 async def __call__(self, activity_input: UpdateVimOperationState.Input) -> None:
Patricia Reinoso02a39fd2023-03-08 17:13:56 +000046 update_operation_state = {
Dario Faccinf5d65b52023-06-19 12:35:33 +020047 f"_admin.operations.{format(activity_input.op_id)}.operationState": activity_input.op_state.name,
48 f"_admin.operations.{format(activity_input.op_id)}.detailed-status": activity_input.message,
Patricia Reinoso02a39fd2023-03-08 17:13:56 +000049 "_admin.current_operation": None,
50 }
51
Dario Faccinf5d65b52023-06-19 12:35:33 +020052 self.db.set_one(
53 "vim_accounts", {"_id": activity_input.vim_uuid}, update_operation_state
54 )
Mark Beierl0c202d22023-04-06 13:58:31 +000055 self.logger.debug(
Dario Faccinf5d65b52023-06-19 12:35:33 +020056 f"Updated VIM {activity_input.vim_uuid} OP ID {activity_input.op_id} to {activity_input.op_state.name}"
Patricia Reinoso02a39fd2023-03-08 17:13:56 +000057 )
58
Patricia Reinoso02a39fd2023-03-08 17:13:56 +000059
Mark Beierl82629422023-06-29 20:22:36 +000060@activity.defn(name=DeleteVimRecord.__name__)
Dario Faccinf5d65b52023-06-19 12:35:33 +020061class DeleteVimRecordImpl(DeleteVimRecord):
Dario Faccinf5d65b52023-06-19 12:35:33 +020062 async def __call__(self, activity_input: DeleteVimRecord.Input) -> None:
63 self.db.del_one("vim_accounts", {"_id": activity_input.vim_uuid})
64 self.logger.debug(f"Removed VIM {activity_input.vim_uuid}")