tosca_definitions_version: tosca_simple_yaml_1_0_0
policy_types:
    onap.policies.controlloop.operational.Common:
        derived_from: onap.datatype.controlloop.operation.Failure
        version: 1.0.0
        description: Operational Policy for Control Loop execution
        properties:
            id:
                type: String
                description: The unique control loop id.
                required: true
            timeout:
                type: Integer
                description: |
                    Overall timeout for executing all the operations. This timeout should equal or exceed the total
                    timeout for each operation listed.
                required: true
                constraints:
                - valid_values: [1, 2, 5]
                - equal: 5
                - greater_than: 7
                - greater_or_equal: 1
                - less_than: 7
                - less_or_equal: 1
            abatement:
                type: Boolean
                description: Whether an abatement event message will be expected for the control loop from DCAE.
                required: true
                default: false
            trigger:
                type: String
                description: Initial operation to execute upon receiving an Onset event message for the Control Loop.
                required: true
            operations:
                type: List
                description: List of operations to be performed when Control Loop is triggered.
                required: true
                entry_schema:
                    type: onap.datatype.controlloop.Operation
    onap.policies.controlloop.operational.common.Drools:
        derived_from: onap.policies.controlloop.operational.Common
        type_version: 1.0.0
        version: 1.0.0
        description: Operational policies for Drools PDP
        properties:
            controllerName:
                type: String
                description: Drools controller properties
                required: true
data_types:
    # TBD if this is needed
    onap.datatype.controlloop.operation.Failure:
        derived_from: onap.datatype.controlloop.Target
        description: Captures information of an operational failure performed for control loop
        properties:
            messages:
                type: String
                description: error message
                required: true
            category:
                type: String
                description: |
                    The category the error occurred in. Whether this is a general error from the actor, or the operation
                    timed out, retries were exhausted in trying to execute the operation, a guard policy prevented the
                    operation from occuring, or an exception in the system caused the failure.
                constraints:
                - valid_values: [error, timeout, retries, guard, exception]
    onap.datatype.controlloop.Target:
        derived_from: tosca.datatypes.Root
        description: Definition for a entity in A&AI to perform a control loop operation on
        properties:
            targetType:
                type: String
                description: Category for the target type
                required: true
                constraints:
                - valid_values: [VNF, VM, VFMODULE, PNF]
            entityIds:
                type: Map
                description: |
                    Map of values that identify the resource. If none are provided, it is assumed that the
                    entity that generated the ONSET event will be the target.
                required: false
                entry_schema:
                    type: String
    onap.datatype.controlloop.Actor:
        derived_from: tosca.datatypes.Root
        description: An actor/operation/target definition
        properties:
            actor:
                type: String
                description: The actor performing the operation.
                required: true
                default: [1,"String",5.5,true]
            operation:
                type: String
                description: The operation the actor is performing.
                required: true
            target:
                type: String
                description: The resource the operation should be performed on.
                required: true
                metadata:
                    clamp_possible_values: <string:see clamp project for syntax>
            payload:
                type: Map
                description: Name/value pairs of payload information passed by Policy to the actor
                required: false
                entry_schema:
                    type: String
    onap.datatype.controlloop.Operation:
        derived_from: tosca.datatypes.Root
        description: An operation supported by an actor
        properties:
            id:
                type: String
                description: Unique identifier for the operation
                required: true
            description:
                type: Array
                description: A user-friendly description of the intent for the operation
                required: false
                constraints:
                - min_length: 5
                - max_length: 7
                - length: 1
            operation:
                type: onap.datatype.controlloop.Actor
                description: The definition of the operation to be performed.
                required: true
                metadata:
                    clamp_possible_values: <string:see clamp project for syntax>
            timeout:
                type: Integer
                description: The amount of time for the actor to perform the operation.
                required: true
                constraints:
                - valid_values: [3, 4, 5.5, 6, 10]
            retries:
                type: Integer
                description: The number of retries the actor should attempt to perform the operation.
                required: true
                default: 0
            success:
                type: String
                description: Points to the operation to invoke on success. A value of "final_success" indicates and end to the operation.
                required: false
                default: final_success
            failure:
                type: String
                description: Points to the operation to invoke on Actor operation failure.
                required: false
                default: final_failure
            failure_timeout:
                type: String
                description: Points to the operation to invoke when the time out for the operation occurs.
                required: false
                default: final_failure_timeout
            failure_retries:
                type: String
                description: Points to the operation to invoke when the current operation has exceeded its max retries.
                required: false
                default: final_failure_retries
            failure_exception:
                type: String
                description: Points to the operation to invoke when the current operation causes an exception.
                required: false
                default: final_failure_exception
            failure_guard:
                type: String
                description: Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.
                required: false
                default: final_failure_guard