tosca_definitions_version: tosca_simple_yaml_1_3
data_types:
  onap.datatypes.ToscaConceptIdentifier:
    derived_from: tosca.datatypes.Root
    properties:
      name:
        type: string
        required: true
      version:
        type: string
        required: true

  onap.datatypes.clamp.acm.httpAutomationCompositionElement.RestRequest:
    version: 1.0.0
    derived_from: tosca.datatypes.Root
    properties:
      restRequestId:
        type: onap.datatypes.ToscaConceptIdentifier
        required: true
        description: The name and version of a REST request to be sent to a REST endpoint
      httpMethod:
        type: string
        required: true
        constraints:
          - valid_values:
              - POST
              - PUT
              - GET
              - DELETE
        description: The REST method to use
      path:
        type: string
        required: true
        description: The path of the REST request relative to the base URL
      body:
        type: string
        required: false
        description: The body of the REST request for PUT and POST requests
      expectedResponse:
        type: integer
        required: true
        constraints: []
        description: THe expected HTTP status code for the REST request
  onap.datatypes.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity:
    version: 1.0.0
    derived_from: tosca.datatypes.Root
    properties:
      configurationEntityId:
        type: onap.datatypes.ToscaConceptIdentifier
        required: true
        description:
          The name and version of a Configuration Entity to be handled
          by the HTTP Automation Composition Element
      restSequence:
        type: list
        entry_schema:
          type: onap.datatypes.clamp.acm.httpAutomationCompositionElement.RestRequest
          type_version: 1.0.0
        description: A sequence of REST commands to send to the REST endpoint


node_types:
  org.onap.policy.clamp.acm.Participant:
    version: 1.0.1
    derived_from: tosca.nodetypes.Root
    properties:
      provider:
        type: string
        required: false
  org.onap.policy.clamp.acm.AutomationCompositionElement:
    version: 1.0.1
    derived_from: tosca.nodetypes.Root
    properties:
      provider:
        type: string
        required: false
        metadata:
          common: true
        description: Specifies the organization that provides the automation composition element
      startPhase:
        type: integer
        required: false
        constraints:
          - greater_or_equal: 0
        metadata:
          common: true
        description:
          A value indicating the start phase in which this automation composition element will be started, the
          first start phase is zero. Automation Composition Elements are started in their start_phase order and stopped
          in reverse start phase order. Automation Composition Elements with the same start phase are started and
          stopped simultaneously
      uninitializedToPassiveTimeout:
        type: integer
        required: false
        constraints:
          - greater_or_equal: 0
        default: 60
        metadata:
          common: true
        description: The maximum time in seconds to wait for a state chage from uninitialized to passive
      passiveToRunningTimeout:
        type: integer
        required: false
        constraints:
          - greater_or_equal: 0
        default: 60
        metadata:
          common: true
        description: The maximum time in seconds to wait for a state chage from passive to running
      runningToPassiveTimeout:
        type: integer
        required: false
        constraints:
          - greater_or_equal: 0
        default: 60
        metadata:
          common: true
        description: The maximum time in seconds to wait for a state chage from running to passive
      passiveToUninitializedTimeout:
        type: integer
        required: false
        constraints:
          - greater_or_equal: 0
        default: 60
        metadata:
          common: true
        description: The maximum time in seconds to wait for a state chage from passive to uninitialized
  org.onap.policy.clamp.acm.AutomationComposition:
    version: 1.0.1
    derived_from: tosca.nodetypes.Root
    properties:
      provider:
        type: string
        required: false
        metadata:
          common: true
        description: Specifies the organization that provides the automation composition element
      elements:
        type: list
        required: true
        metadata:
          common: true
        entry_schema:
          type: onap.datatypes.ToscaConceptIdentifier
        description: Specifies a list of automation composition element definitions that make up this automation composition definition
  org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement:
    version: 1.0.0
    derived_from: org.onap.policy.clamp.acm.AutomationCompositionElement
    properties:
      chart:
        type: dictionary
        required: true
        description: This consumes the helm chart information in key value pairs.
  org.onap.policy.clamp.acm.HttpAutomationCompositionElement:
    version: 1.0.0
    derived_from: org.onap.policy.clamp.acm.AutomationCompositionElement
    properties:
      baseUrl:
        type: string
        required: true
        description: The base URL to be prepended to each path, identifies the host for the REST endpoints.
      httpHeaders:
        type: map
        required: false
        entry_schema:
          type: string
        description: HTTP headers to send on REST requests
      configurationEntities:
        type: map
        required: true
        entry_schema:
          type: org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity
          type_version: 1.0.0
        description: The connfiguration entities the Automation Composition Element is managing and their associated REST requests

topology_template:
  node_templates:
    org.onap.k8s.acm.K8SAutomationCompositionParticipant:
      version: 2.3.4
      type: org.onap.policy.clamp.acm.Participant
      type_version: 1.0.1
      description: Participant for K8S
      properties:
        provider: ONAP
    org.onap.policy.clamp.ac.element.K8S_AutomationCompositionElement:
      # Helm chart parameters for the microservice
      version: 1.2.3
      type: org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement
      type_version: 1.0.0
      description: Automation composition element for the K8S microservice for AC Element Starter
      properties:
        provider: ONAP
        startPhase: 0
        uninitializedToPassiveTimeout: 300
        podStatusCheckInterval: 30
    org.onap.policy.clamp.acm.HttpParticipant:
      version: 2.3.4
      type: org.onap.policy.clamp.acm.Participant
      type_version: 1.0.1
      description: Participant for Http requests
      properties:
        provider: ONAP
    onap.policy.clamp.ac.element.Http_AutomationCompositionElement:
      # Http config for AC Element microservice.
      version: 1.2.3
      type: org.onap.policy.clamp.acm.HttpAutomationCompositionElement
      type_version: 1.0.0
      description: Automation composition element for the http requests of AC Element Starter microservice
      properties:
        provider: ONAP
        uninitializedToPassiveTimeout: 300
        startPhase: 1

    onap.policy.clamp.acm.AutomationCompositionElement:
      version: 1.2.3
      type: org.onap.policy.clamp.acm.AutomationComposition
      type_version: 1.0.1
      description: Automation composition for Demo
      properties:
        provider: ONAP
        elements:
          - name: onap.policy.clamp.ac.element.K8S_AutomationCompositionElement
            version: 1.2.3
          - name: onap.policy.clamp.ac.element.Http_AutomationCompositionElement
            version: 1.2.3