heat_template_version: 2015-04-30

description: Configure hieradata for Nuage configuration on the Controller

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

  # Config specific parameters, to be provided via parameter_defaults
  NeutronNuageOSControllerIp:
    description: IP address of the OpenStack Controller
    type: string

  NeutronNuageNetPartitionName:
    description: Specifies the title that you will see on the VSD
    type: string
    default: 'default_name'

  NeutronNuageVSDIp:
    description: IP address and port of the Virtual Services Directory
    type: string

  NeutronNuageVSDUsername:
    description: Username to be used to log into VSD
    type: string

  NeutronNuageVSDPassword:
    description: Password to be used to log into VSD
    type: string

  NeutronNuageVSDOrganization:
    description: Organization parameter required to log into VSD
    type: string
    default: 'organization'

  NeutronNuageBaseURIVersion:
    description: URI version to be used based on the VSD release
    type: string
    default: 'default_uri_version'

  NeutronNuageCMSId:
    description: Cloud Management System ID (CMS ID) to distinguish between OS instances on the same VSD
    type: string

  UseForwardedFor:
    description: Treat X-Forwarded-For as the canonical remote address. Only enable this if you have a sanitizing proxy.
    type: boolean
    default: false

resources:
  NeutronNuageConfig:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config:
        hiera:
          datafiles:
            neutron_nuage_data:
              mapped_data:
               neutron::plugins::nuage::nuage_oscontroller_ip: {get_input: NuageOSControllerIp}
               neutron::plugins::nuage::nuage_net_partition_name: {get_input: NuageNetPartitionName}
               neutron::plugins::nuage::nuage_vsd_ip: {get_input: NuageVSDIp}
               neutron::plugins::nuage::nuage_vsd_username: {get_input: NuageVSDUsername}
               neutron::plugins::nuage::nuage_vsd_password: {get_input: NuageVSDPassword}
               neutron::plugins::nuage::nuage_vsd_organization: {get_input: NuageVSDOrganization}
               neutron::plugins::nuage::nuage_base_uri_version: {get_input: NuageBaseURIVersion}
               neutron::plugins::nuage::nuage_cms_id: {get_input: NuageCMSId}
               nova::api::use_forwarded_for: {get_input: NovaUseForwardedFor}

  NeutronNuageDeployment:
    type: OS::Heat::StructuredDeployment
    properties:
      name: NeutronNuageDeployment
      config: {get_resource: NeutronNuageConfig}
      server: {get_param: server}
      input_values:
        NuageOSControllerIp: {get_param: NeutronNuageOSControllerIp}
        NuageNetPartitionName: {get_param: NeutronNuageNetPartitionName}
        NuageVSDIp: {get_param: NeutronNuageVSDIp}
        NuageVSDUsername: {get_param: NeutronNuageVSDUsername}
        NuageVSDPassword: {get_param: NeutronNuageVSDPassword}
        NuageVSDOrganization: {get_param: NeutronNuageVSDOrganization}
        NuageBaseURIVersion: {get_param: NeutronNuageBaseURIVersion}
        NuageCMSId: {get_param: NeutronNuageCMSId}
        NovaUseForwardedFor: {get_param: UseForwardedFor}

outputs:
  deploy_stdout:
    description: Deployment reference, used to trigger puppet apply on changes
    value: {get_attr: [NeutronNuageDeployment, deploy_stdout]}