@dataclass
-class VimCreateInput:
+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
# Activity Dataclasses
@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
- """Docstring for why we use this"""
+ Attributes:
+ -----------
+ vim_uuid : str
+ The UUID of the VIM account as stored in the OSM vim
+ collection in Mongo
+ operational_state : str
+ 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: str
+ message: str
@dataclass
-class UpdateVimStatusInput:
- db_update_info: dict
+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 : str
+ 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: str
+ message: str
# See the License for the specific language governing permissions and
# limitations under the License.
-from functools import wraps
-
from temporalio.exceptions import ApplicationError
-class RetryableException(ApplicationError):
+class NonRetryableException(ApplicationError):
def __init__(self, message):
- super().__init__(message, non_retryable=False)
-
+ super().__init__(message, non_retryable=True)
-def wrap_exceptions(error_message="Unhandled exception"):
- def Inner(func):
- @wraps(func)
- async def wrapper(*args, **kwargs):
- try:
- return await func(*args, **kwargs)
- except Exception as err:
- if isinstance(err, RetryableException):
- raise err
- raise ApplicationError(
- f"{error_message}: {str(err)}", non_retryable=True
- ) from err
- return wrapper
-
- return Inner
+class TimeOutError(ApplicationError):
+ def __init__(self, message):
+ super().__init__(message)