heat_template_version: rocky

description: >
  OpenStack containerized Neutron NSX Plugin configured with Puppet

parameters:
  EndpointMap:
    default: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    type: json
  ServiceData:
    default: {}
    description: Dictionary packing service data
    type: json
  ServiceNetMap:
    default: {}
    description: Mapping of service_name -> network name. Typically set
                 via parameter_defaults in the resource registry.  This
                 mapping overrides those in ServiceNetMapDefaults.
    type: json
  ContainerNeutronConfigImage:
    description: The container image to use for the neutron config_volume
    type: string
  DefaultPasswords:
    type: json
  RoleName:
    default: ''
    description: Role name on which the service is applied
    type: string
  RoleParameters:
    default: {}
    description: Parameters specific to the role
    type: json
  NeutronPluginNsxPuppetTags:
    default: 'neutron_plugin_nsx'
    description: Puppet resource tag names that are used to generate config files with puppet
    type: string
  DefaultOverlayTz:
    description: Name or UUID of the default NSX overlay transport zone.
    type: string
  DefaultVlanTz:
    default: ''
    description: Name or UUID of the default NSX VLAN transport zone.
    type: string
  DefaultBridgeCluster:
    default: ''
    description: Name or UUID of the default NSX bridge cluster that will be
                 used to perform L2 gateway bridging between VXLAN and VLAN
                 networks.
    type: string
  DefaultTier0Router:
    description: UUID of the default tier0 router that will be used for connecting to
                 tier1 logical routers and configuring external networks.
    type: string
  NsxApiManagers:
    description: IP address of one or more NSX managers separated by commas.
    type: string
  NsxApiUser:
    description: User name of NSX Manager.
    type: string
  NsxApiPassword:
    description: Password of NSX Manager.
    type: string
  NativeDhcpMetadata:
    default: True
    description: This is the flag to indicate if using native DHCP/Metadata or not.
    type: boolean
  DhcpProfile:
    description: This is the name or UUID of the NSX DHCP Profile that will be
                 used to enable native DHCP service.
    type: string
  MetadataProxy:
    description: This is the name or UUID of the NSX Metadata Proxy that will
                 be used to enable native metadata service.
    type: string
  DhcpRelayService:
    default: ''
    description: This is the name or UUID of the NSX relay service that will
                 be used to enable DHCP relay on router ports.
    type: string

outputs:
  role_data:
    description: Role data for the Neutron NSX Plugin role.
    value:
      service_name: neutron_plugin_nsx
      config_settings:
        neutron::plugins::nsx::default_overlay_tz: {get_param: DefaultOverlayTz}
        neutron::plugins::nsx::default_vlan_tz: {get_param: DefaultVlanTz}
        neutron::plugins::nsx::default_bridge_cluster: {get_param: DefaultBridgeCluster}
        neutron::plugins::nsx::default_tier0_router: {get_param: DefaultTier0Router}
        neutron::plugins::nsx::nsx_api_managers: {get_param: NsxApiManagers}
        neutron::plugins::nsx::nsx_api_user: {get_param: NsxApiUser}
        neutron::plugins::nsx::nsx_api_password: {get_param: NsxApiPassword}
        neutron::plugins::nsx::native_dhcp_metadata: {get_param: NativeDhcpMetadata}
        neutron::plugins::nsx::dhcp_profile: {get_param: DhcpProfile}
        neutron::plugins::nsx::dhcp_relay_service: {get_param: DhcpRelayService}
        neutron::plugins::nsx::metadata_proxy: {get_param: MetadataProxy}
      service_config_settings: {}
      metadata_settings: {}
      # BEGIN DOCKER SETTINGS
      puppet_config:
        config_volume: 'neutron'
        puppet_tags: {get_param: NeutronPluginNsxPuppetTags}
        step_config:
          get_attr: |
            include tripleo::profile::base::neutron::plugins::nsx
        config_image: {get_param: ContainerNeutronConfigImage}
      kolla_config: {}
      docker_config: {}
