heat_template_version: pike

description: Configure hieradata for Big Switch agents on compute node

parameters:
  server:
    description: ID of the controller node to apply this config to
    type: string
  NeutronBigswitchAgentEnabled:
    description: The state of the neutron-bsn-agent service.
    type: boolean
    default: false
  NeutronBigswitchLLDPEnabled:
    description: The state of the neutron-bsn-lldp service.
    type: boolean
    default: true


resources:
  NeutronBigswitchConfig:
    type: OS::Heat::StructuredConfig
    properties:
      group: hiera
      config:
        datafiles:
          neutron_bigswitch_data:
            neutron::agents::bigswitch::agent_enabled: {get_input: neutron_enable_bigswitch_agent}
            neutron::agents::bigswitch::lldp_enabled: {get_input: neutron_enable_bigswitch_lldp}
            # NOTE(aschultz): required for the puppet module but we don't
            # actually want them defined on the compute nodes so we're
            # relying on the puppet  module's handling of <SERVICE DEFAULT>
            # to just not set these but still accept that they were defined.
            # This will should be fixed in puppet-neutron and removed here,
            # but for backportability, we need to define something.
            neutron::plugins::ml2::bigswitch::restproxy::servers: '<SERVICE DEFAULT>'
            neutron::plugins::ml2::bigswitch::restproxy::server_auth: '<SERVICE DEFAULT>'


  NeutronBigswitchDeployment:
    type: OS::Heat::StructuredDeployment
    properties:
      name: NeutronBigswitchDeployment
      config: {get_resource: NeutronBigswitchConfig}
      server: {get_param: server}
      input_values:
        neutron_enable_bigswitch_agent: {get_param: NeutronBigswitchAgentEnabled}
        neutron_enable_bigswitch_lldp: {get_param: NeutronBigswitchLLDPEnabled}

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