# Override few things here as early as we can

# We will enable the opendaylight ML2 MechanismDriver v1 version by default.
# Note we are also enabling the logger driver, which is helpful for
# debugging things on the Neutron side.
if [[ "$ODL_V2DRIVER" == "True" ]]
then
    V2_POSTFIX="_v2"
else
    V2_POSTFIX=""
fi

Q_ML2_PLUGIN_MECHANISM_DRIVERS=${Q_ML2_PLUGIN_MECHANISM_DRIVERS:-"opendaylight${V2_POSTFIX},logger"}

# This triggers the provisioning of L3 resources like routers and
# external network, if not overridden.
Q_L3_ENABLED=${Q_L3_ENABLED:-True}

# We have to disable the neutron L2 agent. OpenDaylight does not use the
# L2 agent, it instead uses a combination of OpenFlow and OVSDB commands
# to program OVS on each compute and network node host.
disable_service q-agt

# If ODL_L3 is enabled, then we don't need the L3 agent and OpenDaylight
# is going to act as the ML2's L3 service plugin.
# NETVIRT_VPNSERVICE feature enables ODL L3 by default, so ODL_L3 is disregarded.
if [[ ",$ODL_NETVIRT_KARAF_FEATURE," =~ ",$ODL_NETVIRT_KARAF_FEATURE_VPNSERVICE," ]] || [ "$ODL_L3" == "True" ];
then
    disable_service q-l3
    ML2_L3_PLUGIN="${ML2_L3_PLUGIN:-odl-router${V2_POSTFIX}}"
fi

# [networking-feature-enabled] api-extensions
# api-extensions=all means any kind of extensions is enabled irrelevant of what plugin supports
# ML2 plugin with ODL driver supports only the following extensions, not all
# Those list must be maintained as ML2 plugin with ODL driver supports more extensions
NETWORK_API_EXTENSIONS=${NETWORK_API_EXTENSIONS:-"address-scope,agent,allowed-address-pairs,binding,dhcp_agent_scheduler,dns-integration,dvr,ext-gw-mode,external-net,extra_dhcp_opt,extraroute,flavors,multi-provider,net-mtu,port-security,provider,qos,quotas,rbac-policies,router,security-group,subnet_allocation,vlan-transparent"}
