from dataclasses import dataclass
from enum import auto, IntEnum
+from typing import List
#######################################################################################
@dataclass
-class NsInstantiateInput:
+class CharmInfo:
"""
- Input dataclass for workflow that instantiate NS.
+ Input dataclass for
Attributes:
-----------
- ns_uuid : str
- The UUID of the NS as stored in the OSM nsr
- collection in Mongo
+ app_name : str
- 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.
+ channel: str
+
+ entity_url: str
"""
- ns_uuid: str
- op_id: str
+ app_name: str
+ channel: str
+ entity_url: str
@dataclass
-class CharmInfo:
+class GetVimCloudInput:
"""
- Input dataclass for
+ Input dataclass for get vim cloud activity.
Attributes:
-----------
- app_name : str
+ vnfr_uuid : str
+ The UUID of the VNF which is stored in the OSM vnfrs
+ collection in Mongo.
- channel: str
+ """
- entity_url: str
+ vnfr_uuid: str
+
+
+@dataclass
+class GetVimCloudOutput:
"""
+ Output dataclass for get vim cloud activity.
- app_name: str
- channel: str
- entity_url: str
+ Attributes:
+ -----------
+ cloud : str
+ Type of the cloud which is used to Deploy VNF.
+ """
+
+ cloud: str
+
+
+@dataclass
+class VduComputeConstraints:
+ """
+ Input dataclass for VDU constraints
+
+ Attributes:
+ -----------
+ cores : int (Number of virtual CPUs)
+
+ mem: int (GB)
+ """
+
+ cores: int
+ mem: int
@dataclass
charm_info : CharmInfo
+ constraints: VduComputeConstraints
+
+ cloud: VIM cloud type
+
+ config: Config details of application
"""
vim_uuid: str
model_name: str
charm_info: CharmInfo
+ constraints: VduComputeConstraints
+ cloud: str
+ config: dict
@dataclass
The UUID of the VNF which is stored in the OSM vnfrs
collection in Mongo.
+ model_name: str
+
"""
vnfr_uuid: str
+ model_name: str
@dataclass
-class PrepareVnfInput:
+class GetNsRecordInput:
"""
- Input dataclass for workflow that instantiates a VNF.
+ Input dataclass for getting NS record activity.
Attributes:
-----------
- vnfr_uuid : str
- The UUID of the VNF which is stored in the OSM vnfrs
+ nsr_uuid :
+ The UUID of the NS record which is stored in the OSM nsrs
collection in Mongo.
"""
- vnfr_uuid: str
+ nsr_uuid: str
+
+
+@dataclass
+class GetNsRecordOutput:
+ """
+ Output dataclass for getting NS record activity.
+
+ Attributes:
+ -----------
+ nsr : dict
+ NS record retrieved from Database..
+
+ """
+
+ nsr: dict
#######################################################################################
@dataclass
-class CreateModelInput:
+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 creating a Juju Model.
+ Input dataclass for checking on a specific charm's deployment
+ status
Attributes:
-----------
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:
+class ChangeVnfStateInput:
"""
- Input dataclass for creating a Juju Model.
+ Input dataclass for changing VNF State.
Attributes:
-----------
The UUID of the VNF which is stored in the OSM vnfrs
collection in Mongo.
- nf_state : VnfState
+ state : VnfState
A representation of the VNF state (STOPPED or STARTED).
"""
@dataclass
-class ChangeNFInstantiationStateInput:
+class ChangeVnfInstantiationStateInput:
"""
- Input dataclass for creating a Juju Model.
+ Input dataclass for changing VNF Instantiation State.
Attributes:
-----------
The UUID of the VNF which is stored in the OSM vnfrs
collection in Mongo.
- nf_instantiation_state : VnfInstantiationState
+ state : VnfInstantiationState
A representation of the VNF instantiation state (NOT_INSTANTIATED or INSTANTIATED).
"""
@dataclass
class GetTaskQueueInput:
"""
- Input dataclass for creating a Juju Model.
+ Input dataclass for get task queue activity.
Attributes:
-----------
"""
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
+
+
+@dataclass
+class GetVnfRecordIdsInput:
+ """
+ Attributes:
+ -----------
+ ns_uuid : str
+ The UUID of the NS from which to retrieve the VNF records.
+ """
+
+ ns_uuid: str
+
+
+@dataclass
+class GetVnfRecordIdsOutput:
+ """
+ Attributes:
+ -----------
+ vnfr_ids : list[str]
+ List of the VNF record IDs associated with the NS.
+ """
+
+ vnfr_ids: List[str]