heat_template_version: 2015-04-30

description: Configure hieradata for Nuage configuration on the Compute

parameters:
  server:
    description: ID of the compute node to apply this config to
    type: string

  NuageActiveController:
    description: IP address of the Active Virtualized Services Controller (VSC)
    type: string
  NuageStandbyController:
    description: IP address of the Standby Virtualized Services Controller (VSC)
    type: string
  NuageMetadataPort:
    description: TCP Port to listen for metadata server requests
    type: string
    default: '9697'
  NuageNovaMetadataPort:
    description: TCP Port used by Nova metadata server
    type: string
    default: '8775'
  NuageMetadataProxySharedSecret:
    description: Shared secret to sign the instance-id request
    type: string
  NuageNovaClientVersion:
    description: Client Version Nova
    type: string
    default: '2'
  NuageNovaOsUsername:
    description: Nova username in keystone_authtoken
    type: string
    default: 'nova'
  NuageMetadataAgentStartWithOvs:
    description: Set to True if nuage-metadata-agent needs to be started with nuage-openvswitch-switch
    type: string
    default: 'True'
  NuageNovaApiEndpoint:
    description: One of publicURL, internalURL, adminURL in "keystone endpoint-list"
    type: string
    default: 'publicURL'
  NuageNovaRegionName:
    description: Region name in "keystone endpoint-list"
    type: string
    default: 'regionOne'

# Declaration of resources for the template.
resources:
  NovaNuageConfig:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config:
        hiera:
          datafiles:
            nova_nuage_data:
              mapped_data:
               nuage::vrs::active_controller: {get_input: ActiveController}
               nuage::vrs::standby_controller: {get_input: StandbyController}
               nuage::metadataagent::metadata_port: {get_input: MetadataPort}
               nuage::metadataagent::nova_metadata_port: {get_input: NovaMetadataPort}
               nuage::metadataagent::metadata_secret: {get_input: SharedSecret}
               nuage::metadataagent::nova_client_version: {get_input: NovaClientVersion}
               nuage::metadataagent::nova_os_username: {get_input: NovaOsUsername}
               nuage::metadataagent::metadata_agent_start_with_ovs: {get_input: MetadataAgentStartWithOvs}
               nuage::metadataagent::nova_api_endpoint_type: {get_input: NovaApiEndpointType}
               nuage::metadataagent::nova_region_name: {get_input: NovaRegionName}

  NovaNuageDeployment:
    type: OS::Heat::StructuredDeployment
    properties:
      name: NovaNuageDeployment
      config: {get_resource: NovaNuageConfig}
      server: {get_param: server}
      input_values:
        ActiveController: {get_param: NuageActiveController}
        StandbyController: {get_param: NuageStandbyController}
        MetadataPort: {get_param: NuageMetadataPort}
        NovaMetadataPort: {get_param: NuageNovaMetadataPort}
        SharedSecret: {get_param: NuageMetadataProxySharedSecret}
        NovaClientVersion: {get_param: NuageNovaClientVersion}
        NovaOsUsername: {get_param: NuageNovaOsUsername}
        MetadataAgentStartWithOvs: {get_param: NuageMetadataAgentStartWithOvs}
        NovaApiEndpointType: {get_param: NuageNovaApiEndpoint}
        NovaRegionName: {get_param: NuageNovaRegionName}

# Specify output parameters that will be available
# after the template is instantiated.
outputs:
  deploy_stdout:
    description: Deployment reference, used to trigger puppet apply on changes
    value: {get_attr: [NovaNuageDeployment, deploy_stdout]}