Add placeholders for Get VNF record IDs
[osm/common.git] / osm_common / dataclasses / temporal_dataclasses.py
index 3b8a857..38dfcfa 100644 (file)
 #######################################################################################
 
 from dataclasses import dataclass
 #######################################################################################
 
 from dataclasses import dataclass
+from enum import auto, IntEnum
+from typing import List
 
 
+
+#######################################################################################
+# 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
 
 
 # Workflow Dataclasses
 
 
@@ -42,9 +87,120 @@ class VimOperationInput:
     op_id: 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 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.
+
+    model_name: str
+
+    """
+
+    vnfr_uuid: str
+    model_name: str
+
+
+#######################################################################################
 # Activity Dataclasses
 
 
 # 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:
     """
 @dataclass
 class TestVimConnectivityInput:
     """
@@ -71,7 +227,7 @@ class UpdateVimStateInput:
         The UUID of the VIM account as stored in the OSM vim
         collection in Mongo
 
         The UUID of the VIM account as stored in the OSM vim
         collection in Mongo
 
-    operational_state : str
+    operational_state : VimState
         A representation of the operational state (ENABLED or ERROR)
         of the VIM.
 
         A representation of the operational state (ENABLED or ERROR)
         of the VIM.
 
@@ -82,7 +238,7 @@ class UpdateVimStateInput:
     """
 
     vim_uuid: str
     """
 
     vim_uuid: str
-    operational_state: str
+    operational_state: VimState
     message: str
 
 
     message: str
 
 
@@ -102,7 +258,7 @@ class UpdateVimOperationStateInput:
         The operation (task) id for this workflow.  This is used
         to update the status of the operation in Mongo vim collection.
 
         The operation (task) id for this workflow.  This is used
         to update the status of the operation in Mongo vim collection.
 
-    op_state : str
+    op_state : VimOperationState
         A representation of the state of the specified operation id,
         such as COMPLETED, or FAILED.
 
         A representation of the state of the specified operation id,
         such as COMPLETED, or FAILED.
 
@@ -114,7 +270,7 @@ class UpdateVimOperationStateInput:
 
     vim_uuid: str
     op_id: str
 
     vim_uuid: str
     op_id: str
-    op_state: str
+    op_state: VimOperationState
     message: str
 
 
     message: str
 
 
@@ -132,3 +288,218 @@ class DeleteVimInput:
     """
 
     vim_uuid: str
     """
 
     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 ChangeVnfStateInput:
+    """
+    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
+
+
+@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]