# A Heat environment file that deploys ML2/OVS in the overcloud.
resource_registry:
  # Default Neutron ML2 puppet plugin to use when NeutronCorePlugin is set to ML2
  # FIXME(bogdando): can not be switched yet due to puppet-base issues
  # see https://review.opendev.org/#/c/563443
  OS::TripleO::Docker::NeutronMl2PluginBase: ../../deployment/neutron/neutron-plugin-ml2.yaml

  OS::TripleO::Services::NeutronApi: ../../deployment/neutron/neutron-api-container-puppet.yaml
  OS::TripleO::Services::NeutronCorePlugin: ../../deployment/neutron/neutron-plugin-ml2-container-puppet.yaml
  OS::TripleO::Services::NeutronMetadataAgent: ../../deployment/neutron/neutron-metadata-container-puppet.yaml
  OS::TripleO::Services::NeutronOvsAgent: ../../deployment/neutron/neutron-ovs-agent-container-puppet.yaml
  OS::TripleO::Services::NeutronDhcpAgent: ../../deployment/neutron/neutron-dhcp-container-puppet.yaml
  OS::TripleO::Services::ComputeNeutronOvsAgent: ../../deployment/neutron/neutron-ovs-agent-container-puppet.yaml
  OS::TripleO::Services::NeutronL3Agent: ../../deployment/neutron/neutron-l3-container-puppet.yaml
  OS::TripleO::Services::ComputeNeutronL3Agent: ../../deployment/neutron/neutron-l3-container-puppet.yaml
  OS::TripleO::Services::ComputeNeutronMetadataAgent: ../../deployment/neutron/neutron-metadata-container-puppet.yaml
  ComputeDVRNetworkConfigWithAnsible: true
  ComputeDVRNetworkConfigTemplate: 'templates/net_config_bridge.j2'

  # Disable OVN services
  OS::TripleO::Services::OVNController: OS::Heat::None
  OS::TripleO::Services::OVNDBs: OS::Heat::None
  OS::TripleO::Services::OVNMetadataAgent: OS::Heat::None

parameter_defaults:

  # DVR requires that the L2 population feature is enabled
  NeutronMechanismDrivers: ['openvswitch', 'l2population']
  NeutronEnableL2Pop: 'True'

  NeutronPluginExtensions: "qos,port_security"
  NeutronTypeDrivers: 'vxlan,vlan,flat,gre'
  NeutronNetworkType: 'vxlan'
  NeutronServicePlugins: 'router,qos,segments,trunk,port_forwarding'
  NeutronVniRanges: ['1:65536', ]
  KernelIpNonLocalBind: 0

  NeutronL3AgentExtensions: "port_forwarding"

  # Setting NeutronEnableDVR enables distributed routing support in the
  # ML2 plugin and agents that support this feature
  NeutronEnableDVR: true

  # We also need to set the proper agent mode for the L3 agent.  This will only
  # affect the agent on the controller node.
  NeutronL3AgentMode: 'dvr_snat'

  # Enabling DVR deploys additional services to the compute nodes that through
  # normal operation will consume memory. The amount required is roughly
  # proportional to the number of Neutron routers that will be scheduled to
  # that host. It is necessary to reserve memory on the compute nodes to avoid
  # memory issues when creating instances that are connected to routed
  # networks. The current expected consumption is 50 MB per router in addition
  # to the base reserved amount.  Deployers should refer to existing
  # documentation, release notes, etc. for additional information on estimating
  # an appropriate value. The provided value here is based on an estimate of 10
  # routers and is an example value *only* and should be reviewed and modified
  # if necessary before deploying.
  NovaReservedHostMemory: 2560

  # Required if deploying with the ComputeDVR role, which is recommended
  # if using the default network templates as it will configure the
  # host networking to work with the default 'datacentre' network.
  ComputeDVRParameters:
    NeutronL3AgentMode: 'dvr'