From 9427d8ec95aa63ffdd670ecdf751b97cd8ac07aa Mon Sep 17 00:00:00 2001 From: Dima Kuznetsov Date: Thu, 13 Jul 2017 16:10:07 +0300 Subject: [PATCH] Disable l3 agent in gate L3 agent creates namespace for each router and plugs it into br-ex and br-int. This creates a conflict because an interface in the new namespace responds to traffic bound for br-int (DNAT), preventing DNAT from working. This patch disables l3 agent and adds code that configures br-ex in gate Partial-Bug: #1707496 Change-Id: If5f58689d961421a374f8992c16a919fbc91b7eb --- devstack/devstackgaterc | 2 +- devstack/devstackgaterc-zmq | 2 +- devstack/override-defaults | 2 ++ devstack/ovs_dpdk_setup.sh | 2 ++ devstack/ovs_setup.sh | 2 ++ devstack/tempest-filter | 2 ++ dragonflow/tests/fullstack/test_apps.py | 1 + 7 files changed, 11 insertions(+), 2 deletions(-) diff --git a/devstack/devstackgaterc b/devstack/devstackgaterc index 95cdb2c93..cc99ece2a 100644 --- a/devstack/devstackgaterc +++ b/devstack/devstackgaterc @@ -17,7 +17,7 @@ # http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/dragonflow.yaml # -export OVERRIDE_ENABLED_SERVICES=key,n-api,n-api-meta,n-cpu,n-cond,n-sch,n-crt,n-cauth,n-obj,g-api,g-reg,c-sch,c-api,c-vol,rabbit,mysql,dstat,df-controller,df-redis,df-redis-server,q-svc,df-l3-agent,df-metadata,q-qos,placement-api,df-bgp,q-trunk +export OVERRIDE_ENABLED_SERVICES=key,n-api,n-api-meta,n-cpu,n-cond,n-sch,n-crt,n-cauth,n-obj,g-api,g-reg,c-sch,c-api,c-vol,rabbit,mysql,dstat,df-controller,df-redis,df-redis-server,q-svc,df-metadata,q-qos,placement-api,df-bgp,q-trunk export DEVSTACK_LOCAL_CONFIG+=$'\n'"DF_REDIS_PUBSUB=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"DF_RUNNING_IN_GATE=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"EXTERNAL_HOST_IP=172.24.4.100" diff --git a/devstack/devstackgaterc-zmq b/devstack/devstackgaterc-zmq index 73f1cbf87..787297a43 100644 --- a/devstack/devstackgaterc-zmq +++ b/devstack/devstackgaterc-zmq @@ -17,7 +17,7 @@ # https://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/dragonflow.yaml # -export OVERRIDE_ENABLED_SERVICES=key,n-api,n-api-meta,n-cpu,n-cond,n-sch,n-crt,n-cauth,n-obj,g-api,g-reg,c-sch,c-api,c-vol,rabbit,mysql,dstat,df-controller,df-etcd,etcd3,df-zmq-publisher-service,q-svc,df-l3-agent,df-metadata,q-qos,placement-api,q-trunk +export OVERRIDE_ENABLED_SERVICES=key,n-api,n-api-meta,n-cpu,n-cond,n-sch,n-crt,n-cauth,n-obj,g-api,g-reg,c-sch,c-api,c-vol,rabbit,mysql,dstat,df-controller,df-etcd,etcd3,df-zmq-publisher-service,q-svc,df-metadata,q-qos,placement-api,q-trunk export DEVSTACK_LOCAL_CONFIG+=$'\n'"DF_PUB_SUB=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"DF_SELECTIVE_TOPO_DIST=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"ENABLE_ACTIVE_DETECTION=False" diff --git a/devstack/override-defaults b/devstack/override-defaults index 4577be1dd..11460f938 100644 --- a/devstack/override-defaults +++ b/devstack/override-defaults @@ -40,6 +40,8 @@ PUBLIC_BRIDGE=${PUBLIC_BRIDGE:-br-ex} INTEGRATION_BRIDGE=${INTEGRATION_BRIDGE:-br-int} INTEGRATION_PEER_PORT=${INTEGRATION_PEER_PORT:-patch-ex} PUBLIC_PEER_PORT=${PUBLIC_PEER_PORT:-patch-int} +PUBLIC_NETWORK_GATEWAY=${PUBLIC_NETWORK_GATEWAY:-172.24.4.1} +PUBLIC_NETWORK_PREFIXLEN=${PUBLIC_NETWORK_PREFIXLEN:-24} if [[ "$ENABLE_DPDK" == "True" ]]; then # By default, dragonflow uses OVS kernel datapath. If you want to use diff --git a/devstack/ovs_dpdk_setup.sh b/devstack/ovs_dpdk_setup.sh index 2fc5671a1..7fc17faf6 100644 --- a/devstack/ovs_dpdk_setup.sh +++ b/devstack/ovs_dpdk_setup.sh @@ -142,6 +142,8 @@ function configure_ovs { if [[ "$check_dnat" != "" ]]; then echo "Setup external bridge for DNAT" sudo ovs-vsctl add-br $PUBLIC_BRIDGE || true + sudo ip link set dev $PUBLIC_BRIDGE up || true + sudo ip addr add $PUBLIC_NETWORK_GATEWAY/$PUBLIC_NETWORK_PREFIXLEN dev $PUBLIC_BRIDGE || true fi _neutron_ovs_base_setup_bridge $INTEGRATION_BRIDGE diff --git a/devstack/ovs_setup.sh b/devstack/ovs_setup.sh index f05809193..6919f5a80 100644 --- a/devstack/ovs_setup.sh +++ b/devstack/ovs_setup.sh @@ -164,6 +164,8 @@ function configure_ovs { if [[ "$check_dnat" != "" ]]; then echo "Setup external bridge for DNAT" sudo ovs-vsctl add-br $PUBLIC_BRIDGE || true + sudo ip link set dev $PUBLIC_BRIDGE up || true + sudo ip addr add $PUBLIC_NETWORK_GATEWAY/$PUBLIC_NETWORK_PREFIXLEN dev $PUBLIC_BRIDGE || true fi _neutron_ovs_base_setup_bridge $INTEGRATION_BRIDGE diff --git a/devstack/tempest-filter b/devstack/tempest-filter index 316bf8d81..308aa5494 100644 --- a/devstack/tempest-filter +++ b/devstack/tempest-filter @@ -25,6 +25,8 @@ r="$r(?:.*\[.*\bslow\b.*\])" # exclude things that just aren't enabled: r="$r|(?:tempest\.api\.network\.admin\.test_quotas\.QuotasTest\.test_lbaas_quotas.*)" +r="$r|(?:tempest\.api\.network\.admin\.test_agent_management\.*)" +r="$r|(?:tempest\.api\.network\.admin\.test_l3_agent_scheduler\.*)" r="$r|(?:tempest\.api\.network\.test_load_balancer.*)" r="$r|(?:tempest\.scenario\.test_load_balancer.*)" r="$r|(?:tempest\.api\.network\.admin\.test_load_balancer.*)" diff --git a/dragonflow/tests/fullstack/test_apps.py b/dragonflow/tests/fullstack/test_apps.py index 672f81447..a15af6740 100644 --- a/dragonflow/tests/fullstack/test_apps.py +++ b/dragonflow/tests/fullstack/test_apps.py @@ -1006,6 +1006,7 @@ class TestL3App(test_base.DFTestBase): if len(policy.exceptions) > 0: raise policy.exceptions[0] + @testtools.skip("bug/1706065") def test_udp_concrete_router_interface(self): # By default, fullstack will start l3 agent. So there will be concrete # router interface.