Source code for cloudvision.cvlib.action

# Copyright (c) 2022 Arista Networks, Inc.
# Use of this source code is governed by the Apache License 2.0
# that can be found in the COPYING file.

from enum import Enum
from typing import Dict, Optional

from cloudvision.Connector.grpc_client import GRPCClient

from .utils import queryCCStartTime


[docs] class ActionContext(Enum): ''' Enum class used to store the various contexts in which actions are executed in ''' Unknown = 0 ChangeControl = 1 StudioAutofill = 2 StudioBuildHook = 3
[docs] class Action: ''' Object to store common change control action script arguments: - name: Name of the action currently running - context: Enum for the context in which the action is running, e.g. Action that is running is a change control action - id: ID of the action currently running - args: String -> String dictionary of the args associated with the action - ccId: ID of the change control, if applicable - stageId: ID of the current stage of the change control, if applicable ''' def __init__(self, name: str, actionId: str, context: ActionContext = ActionContext.Unknown, args: Optional[Dict[str, str]] = None, ccId: Optional[str] = None, stageId: Optional[str] = None): self.name = name self.id = actionId self.context = context self.args = args self.ccId = ccId self.stageId = stageId # Fields used in some execution contexts self.__ccStartTime: Optional[int] = None
[docs] def getCCStartTime(self, cvClient: GRPCClient): ''' Queries the cloudvision database for the change control start time :param cvClient: context.getCvClient() client :return: nanosecond start timestamp of the change control ''' if self.context != ActionContext.ChangeControl or not self.ccId: return None if self.__ccStartTime: return self.__ccStartTime ccStartTs = queryCCStartTime(cvClient, self.ccId) self.__ccStartTime = int(ccStartTs) return self.__ccStartTime