| ####################################################################################### |
| # Copyright ETSI Contributors and Others. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
| # implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| ####################################################################################### |
| |
| from dataclasses import dataclass |
| from enum import auto, IntEnum |
| |
| |
| ####################################################################################### |
| # Defining States |
| class VimState(IntEnum): |
| PROCESSING = auto() |
| ENABLED = auto() |
| ERROR = auto() |
| |
| |
| class VimOperationState(IntEnum): |
| COMPLETED = auto() |
| FAILED = auto() |
| |
| |
| class NsState(IntEnum): |
| PROCESSING = auto() |
| INSTANTIATED = auto() |
| ERROR = auto() |
| |
| |
| class VnfLcmOperationState(IntEnum): |
| PROCESSING = auto() |
| COMPLETED = auto() |
| FAILED = auto() |
| |
| |
| class VnfInstantiationState(IntEnum): |
| NOT_INSTANTIATED = auto() |
| INSTANTIATED = auto() |
| |
| |
| class VnfState(IntEnum): |
| STOPPED = auto() |
| STARTED = auto() |
| |
| |
| class LcmOperationState(IntEnum): |
| PROCESSING = auto() |
| COMPLETED = auto() |
| FAILED = auto() |
| |
| |
| ####################################################################################### |
| # Workflow Dataclasses |
| |
| |
| @dataclass |
| class VimOperationInput: |
| """ |
| Input dataclass for workflows that perform operations |
| (create, update, delete) on VIMs. |
| |
| Attributes: |
| ----------- |
| vim_uuid : str |
| The UUID of the VIM account as stored in the OSM vim |
| collection in Mongo |
| |
| op_id: str |
| The operation (task) id for this workflow. This is used |
| by the workflow at the end to update the status of the |
| operation in Mongo vim collection. |
| """ |
| |
| vim_uuid: str |
| op_id: str |
| |
| |
| @dataclass |
| class NsLcmOperationInput: |
| """ |
| Input dataclass for workflows that run as LCM operations. |
| |
| Attributes: |
| ----------- |
| |
| nslcmop: dict |
| A dictionary representing the nslcmop record from the |
| database. |
| """ |
| |
| nslcmop: dict |
| |
| |
| @dataclass |
| class NsInstantiateInput: |
| """ |
| Input dataclass for workflow that instantiate NS. |
| |
| Attributes: |
| ----------- |
| ns_uuid : str |
| The UUID of the NS as stored in the OSM nsr |
| collection in Mongo |
| |
| op_id: str |
| The operation (task) id for this workflow. This is used |
| by the workflow at the end to update the status of the |
| operation in Mongo vim collection. |
| """ |
| |
| ns_uuid: str |
| op_id: str |
| |
| |
| @dataclass |
| class CharmInfo: |
| """ |
| Input dataclass for |
| |
| Attributes: |
| ----------- |
| app_name : str |
| |
| channel: str |
| |
| entity_url: str |
| """ |
| |
| app_name: str |
| channel: str |
| entity_url: str |
| |
| |
| @dataclass |
| class VduInstantiateInput: |
| """ |
| Input dataclass for workflow that instantiates a VDU. |
| |
| vim_uuid: str |
| |
| model_name: str |
| |
| charm_info : CharmInfo |
| |
| """ |
| |
| vim_uuid: str |
| model_name: str |
| charm_info: CharmInfo |
| |
| |
| @dataclass |
| class VnfInstantiateInput: |
| """ |
| Input dataclass for workflow that instantiates a VNF. |
| |
| Attributes: |
| ----------- |
| vnfr_uuid : str |
| The UUID of the VNF which is stored in the OSM vnfrs |
| collection in Mongo. |
| |
| """ |
| |
| vnfr_uuid: str |
| |
| |
| @dataclass |
| class PrepareVnfInput: |
| """ |
| Input dataclass for workflow that prepares a VNF. |
| |
| Attributes: |
| ----------- |
| vnfr_uuid : str |
| The UUID of the VNF which is stored in the OSM vnfrs |
| collection in Mongo. |
| |
| """ |
| |
| vnfr_uuid: str |
| |
| |
| ####################################################################################### |
| # Activity Dataclasses |
| |
| |
| @dataclass |
| class UpdateLcmOperationStateInput: |
| """ |
| Input dataclass for updating LCM Operations in the Mongo nslcmops |
| collection. The following attributes will be updated automatically |
| - statusEnteredTime |
| - _admin.modified |
| |
| Attributes: |
| ----------- |
| op_id: str |
| The operation (task) id for this activity. This is the key |
| to the record in nslcmops collection that will be updated. |
| |
| op_state : LcmOperationState |
| A representation of the state of the specified operation id, |
| such as PROCESSING, COMPLETED, or FAILED. |
| |
| stage: str |
| Human readable checkpoint message, intended only to give the |
| user feedback. |
| |
| error_message: str |
| Human readable error message if any failure occurred. |
| |
| detailed_status : str |
| Human readable message providing additional details to the |
| operation state, such as the error message explaining why |
| the operation failed. |
| """ |
| |
| op_id: str |
| op_state: LcmOperationState |
| stage: str |
| error_message: str |
| detailed_status: str |
| |
| |
| @dataclass |
| class TestVimConnectivityInput: |
| """ |
| Input dataclass for the Test Vim Connectivity Ativity |
| |
| Attributes: |
| ----------- |
| vim_uuid : str |
| The UUID of the VIM account as stored in the OSM vim |
| collection in Mongo |
| """ |
| |
| vim_uuid: str |
| |
| |
| @dataclass |
| class UpdateVimStateInput: |
| """ |
| Input dataclass for updating VIM state in the DB |
| |
| Attributes: |
| ----------- |
| vim_uuid : str |
| The UUID of the VIM account as stored in the OSM vim |
| collection in Mongo |
| |
| operational_state : VimState |
| A representation of the operational state (ENABLED or ERROR) |
| of the VIM. |
| |
| message : str |
| Human readable message providing additional details to the |
| operational state, such as the error message associated |
| with the ERROR operational_state. |
| """ |
| |
| vim_uuid: str |
| operational_state: VimState |
| message: str |
| |
| |
| @dataclass |
| class UpdateVimOperationStateInput: |
| """ |
| Input dataclass for updating VIM Operations in the Mongo VIM |
| collection. |
| |
| Attributes: |
| ----------- |
| vim_uuid : str |
| The UUID of the VIM account as stored in the OSM vim |
| collection in Mongo |
| |
| op_id: str |
| The operation (task) id for this workflow. This is used |
| to update the status of the operation in Mongo vim collection. |
| |
| op_state : VimOperationState |
| A representation of the state of the specified operation id, |
| such as COMPLETED, or FAILED. |
| |
| message : str |
| Human readable message providing additional details to the |
| operation state, such as the error message explaining why |
| the operation failed. |
| """ |
| |
| vim_uuid: str |
| op_id: str |
| op_state: VimOperationState |
| message: str |
| |
| |
| @dataclass |
| class DeleteVimInput: |
| """ |
| Input dataclass for deleting vim record from the database |
| |
| Attributes: |
| ----------- |
| vim_uuid : str |
| The UUID of the VIM account as stored in the OSM vim |
| collection in Mongo |
| |
| """ |
| |
| vim_uuid: str |
| |
| |
| @dataclass |
| class DeployNsInput: |
| """ |
| Input dataclass for |
| |
| Attributes: |
| ----------- |
| ns_uuid : str |
| The UUID of the NS as stored in the OSM nsr |
| collection in Mongo |
| """ |
| |
| ns_uuid: str |
| |
| |
| @dataclass |
| class UpdateNsStateInput: |
| """ |
| Input dataclass for updating NS state in the DB |
| |
| Attributes: |
| ----------- |
| ns_uuid : str |
| The UUID of the NS as stored in the OSM ns |
| collection in Mongo |
| |
| operational_state : NsState |
| A representation of the operational state (ENABLED or ERROR) |
| of the NS. |
| |
| message : str |
| Human readable message providing additional details to the |
| operational state, such as the error message associated |
| with the ERROR operational_state. |
| """ |
| |
| ns_uuid: str |
| state: NsState |
| message: str |
| |
| |
| @dataclass |
| class ModelInfo: |
| """ |
| Contains the information related to a model. |
| |
| Attributes: |
| ----------- |
| vim_uuid : str |
| The UUID of the VIM as stored in the OSM vim_accounts |
| collection in Mongo. |
| |
| model_name : str |
| Name of the Juju model used to deploy charms. |
| """ |
| |
| vim_uuid: str |
| model_name: str |
| |
| |
| @dataclass |
| class CheckCharmStatusInput: |
| """ |
| Input dataclass for checking on a specific charm's deployment |
| status |
| |
| Attributes: |
| ----------- |
| vim_uuid : str |
| The UUID of the VIM as stored in the OSM vim_accounts |
| collection in Mongo. |
| |
| model_name : str |
| Name of the model to create in Juju. |
| |
| application_name : str |
| Name of the application that the state is going to be |
| awaited. |
| |
| poll_interval : int (optional) |
| Time, in seconds, to wait between status checks. |
| """ |
| |
| vim_uuid: str |
| model_name: str |
| application_name: str |
| poll_interval: int = 1 |
| |
| |
| @dataclass |
| class ChangeNFStateInput: |
| """ |
| Input dataclass for changing VNF State. |
| |
| Attributes: |
| ----------- |
| vnfr_uuid : str |
| The UUID of the VNF which is stored in the OSM vnfrs |
| collection in Mongo. |
| |
| state : VnfState |
| A representation of the VNF state (STOPPED or STARTED). |
| """ |
| |
| vnfr_uuid: str |
| state: VnfState |
| |
| |
| @dataclass |
| class ChangeVnfInstantiationStateInput: |
| """ |
| Input dataclass for changing VNF Instantiation State. |
| |
| Attributes: |
| ----------- |
| vnfr_uuid : str |
| The UUID of the VNF which is stored in the OSM vnfrs |
| collection in Mongo. |
| |
| state : VnfInstantiationState |
| A representation of the VNF instantiation state (NOT_INSTANTIATED or INSTANTIATED). |
| |
| """ |
| |
| vnfr_uuid: str |
| state: VnfInstantiationState |
| |
| |
| @dataclass |
| class GetTaskQueueInput: |
| """ |
| Input dataclass for get task queue activity. |
| |
| Attributes: |
| ----------- |
| vnfr_uuid : str |
| The UUID of the VNF which is stored in the OSM vnfrs |
| collection in Mongo. |
| |
| """ |
| |
| vnfr_uuid: str |
| |
| |
| @dataclass |
| class GetTaskQueueOutput: |
| """ |
| Output dataclass for get task queue activity. |
| |
| Attributes: |
| ----------- |
| task_queue : str |
| Name of the queue which is used to Deploy VNF. |
| """ |
| |
| task_queue: str |
| |
| |
| @dataclass |
| class GetVnfDetailsInput: |
| """ |
| Input dataclass for get vnf details activity. |
| |
| Attributes: |
| ----------- |
| vnfr_uuid : str |
| The UUID of the VNF which is stored in the OSM vnfrs |
| collection in Mongo. |
| """ |
| |
| vnfr_uuid: str |
| |
| |
| @dataclass |
| class GetVnfDetailsOutput: |
| """ |
| Output dataclass for get vnf details activity. |
| |
| Attributes: |
| ----------- |
| vnfr : dict |
| VNF record retrieved from Database. |
| |
| vnfd : dict |
| VNF descriptor retrieved from Database. |
| """ |
| |
| vnfr: dict |
| vnfd: dict |