diff --git a/.zuul.yaml b/.zuul.yaml index b65aeec4dd..4ca0257cc6 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -468,6 +468,8 @@ SWIFT_HASH: 1234123412341234 DEBUG_LIBVIRT_COREDUMPS: true NOVA_VNC_ENABLED: true + OVN_L3_CREATE_PUBLIC_NETWORK: true + OVN_DBS_LOG_LEVEL: dbg devstack_local_conf: post-config: $NEUTRON_CONF: @@ -496,13 +498,14 @@ n-sch: true # Placement service placement-api: true + # OVN services + ovn-controller: true + ovn-northd: true + ovs-vswitchd: true + ovsdb-server: true # Neutron services - q-agt: true - q-dhcp: true - q-l3: true - q-meta: true - q-metering: true q-svc: true + q-ovn-metadata-agent: true # Swift services s-account: true s-container: true @@ -534,8 +537,12 @@ n-cpu: true # Placement services placement-client: true + # OVN services + ovn-controller: true + ovs-vswitchd: true + ovsdb-server: true # Neutron services - q-agt: true + q-ovn-metadata-agent: true # Cinder services c-bak: true c-vol: true @@ -553,6 +560,7 @@ GLANCE_HOSTPORT: "{{ hostvars['controller']['nodepool']['private_ipv4'] }}:9292" Q_HOST: "{{ hostvars['controller']['nodepool']['private_ipv4'] }}" NOVA_VNC_ENABLED: true + ENABLE_CHASSIS_AS_GW: false - job: name: devstack-ipv6 diff --git a/lib/neutron_plugins/ml2 b/lib/neutron_plugins/ml2 index ae4b251d83..e1f868f0a7 100644 --- a/lib/neutron_plugins/ml2 +++ b/lib/neutron_plugins/ml2 @@ -7,15 +7,16 @@ _XTRACE_NEUTRON_ML2=$(set +o | grep xtrace) set +o xtrace -# Default openvswitch L2 agent -Q_AGENT=${Q_AGENT:-openvswitch} +# Default OVN L2 agent +Q_AGENT=${Q_AGENT:-ovn} if [ -f $TOP_DIR/lib/neutron_plugins/${Q_AGENT}_agent ]; then source $TOP_DIR/lib/neutron_plugins/${Q_AGENT}_agent fi # Enable this to simply and quickly enable tunneling with ML2. -# Select either 'gre', 'vxlan', or 'gre,vxlan' -Q_ML2_TENANT_NETWORK_TYPE=${Q_ML2_TENANT_NETWORK_TYPE:-"vxlan"} +# For ML2/OVS select either 'gre', 'vxlan', or 'gre,vxlan'. +# For ML2/OVN use 'geneve'. +Q_ML2_TENANT_NETWORK_TYPE=${Q_ML2_TENANT_NETWORK_TYPE:-"geneve"} # This has to be set here since the agent will set this in the config file if [[ "$Q_ML2_TENANT_NETWORK_TYPE" == "gre" || "$Q_ML2_TENANT_NETWORK_TYPE" == "vxlan" ]]; then Q_TUNNEL_TYPES=$Q_ML2_TENANT_NETWORK_TYPE @@ -24,7 +25,7 @@ elif [[ "$ENABLE_TENANT_TUNNELS" == "True" ]]; then fi # List of MechanismDrivers to load -Q_ML2_PLUGIN_MECHANISM_DRIVERS=${Q_ML2_PLUGIN_MECHANISM_DRIVERS:-openvswitch,linuxbridge} +Q_ML2_PLUGIN_MECHANISM_DRIVERS=${Q_ML2_PLUGIN_MECHANISM_DRIVERS:-ovn} # Default GRE TypeDriver options Q_ML2_PLUGIN_GRE_TYPE_OPTIONS=${Q_ML2_PLUGIN_GRE_TYPE_OPTIONS:-tunnel_id_ranges=$TENANT_TUNNEL_RANGES} # Default VXLAN TypeDriver options diff --git a/lib/neutron_plugins/ovn_agent b/lib/neutron_plugins/ovn_agent index e4d0d75230..4af1340a26 100644 --- a/lib/neutron_plugins/ovn_agent +++ b/lib/neutron_plugins/ovn_agent @@ -21,10 +21,6 @@ source ${TOP_DIR}/lib/neutron_plugins/ovs_base source ${TOP_DIR}/lib/neutron_plugins/openvswitch_agent -# Load devstack ovs base functions -source $NEUTRON_DIR/devstack/lib/ovs - - # Defaults # -------- @@ -88,12 +84,18 @@ OVN_INSTALL_OVS_PYTHON_MODULE=$(trueorfalse False OVN_INSTALL_OVS_PYTHON_MODULE) # configure the MTU DHCP option. OVN_GENEVE_OVERHEAD=${OVN_GENEVE_OVERHEAD:-38} -# The log level of the OVN databases (north and south) +# The log level of the OVN databases (north and south). +# Supported log levels are: off, emer, err, warn, info or dbg. +# More information about log levels can be found at +# http://www.openvswitch.org/support/dist-docs/ovs-appctl.8.txt OVN_DBS_LOG_LEVEL=${OVN_DBS_LOG_LEVEL:-info} OVN_META_CONF=$NEUTRON_CONF_DIR/neutron_ovn_metadata_agent.ini OVN_META_DATA_HOST=${OVN_META_DATA_HOST:-$(ipv6_unquote $SERVICE_HOST)} +# If True (default) the node will be considered a gateway node. +ENABLE_CHASSIS_AS_GW=$(trueorfalse True ENABLE_CHASSIS_AS_GW) + export OVSDB_SERVER_LOCAL_HOST=$SERVICE_LOCAL_HOST if [[ "$SERVICE_IP_VERSION" == 6 ]]; then OVSDB_SERVER_LOCAL_HOST=[$OVSDB_SERVER_LOCAL_HOST] @@ -171,6 +173,9 @@ function wait_for_sock_file { } function use_new_ovn_repository { + if [[ "$OVN_BUILD_FROM_SOURCE" == "False" ]]; then + return 0 + fi if [ -z "$is_new_ovn" ]; then local ovs_repo_dir=$DEST/$OVS_REPO_NAME if [ ! -d $ovs_repo_dir ]; then @@ -390,6 +395,9 @@ function install_ovn { sudo ln -s $OVS_RUNDIR $OVN_RUNDIR if [[ "$OVN_BUILD_FROM_SOURCE" == "True" ]]; then + # Load devstack ovs base functions + source $NEUTRON_DIR/devstack/lib/ovs + # If OVS is already installed, remove it, because we're about to # re-install it from source. for package in openvswitch openvswitch-switch openvswitch-common; do diff --git a/stackrc b/stackrc index 196f61fa3c..05016594eb 100644 --- a/stackrc +++ b/stackrc @@ -72,8 +72,10 @@ if ! isset ENABLED_SERVICES ; then ENABLED_SERVICES+=,g-api # Cinder ENABLED_SERVICES+=,c-sch,c-api,c-vol + # OVN + ENABLED_SERVICES+=,ovn-controller,ovn-northd,ovs-vswitchd,ovsdb-server # Neutron - ENABLED_SERVICES+=,q-svc,q-dhcp,q-meta,q-agt,q-l3 + ENABLED_SERVICES+=,q-svc,q-ovn-metadata-agent # Dashboard ENABLED_SERVICES+=,horizon # Additional services