diff --git a/octavia/tests/contrib/decode_args.sh b/octavia/tests/contrib/decode_args.sh
deleted file mode 100644
index e0d41e313e..0000000000
--- a/octavia/tests/contrib/decode_args.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-
-# This file is meant to be sourced by the other hooks
-
-# Legacy values for $1, $2 and $3:
-# $1 - dsvm-functional, tempest (testtype)
-# $2 - lbaasv2, lbaasv1 (octaviaversion)
-# $3 - scenario, minimal, api, healthmonitor, listener, loadbalancer, member, pool (octaviatest)
-
-# Args being phased in:
-# $1 - same
-# $2 - same
-# $3 - test-driver, with any missing -driver being "octavia"
-#    scenario-octavia
-#    minimal-octavia
-#    api-namespace
-#    api-{thirdparty}
-#    healthmonitor-octavia
-#    listener-octavia
-#    loadbalancer-octavia
-#    member-octavia
-#    pool-octavia
-
-
-
-
-testtype="$1"
-octaviaversion="$2"
-octaviatest="$3"
-
-case $testtype in
-    "dsvm-functional")
-        testenv=$testtype
-        ;;
-
-    "tempest")
-        lbaasenv=$(echo "$octaviatest" | perl -ne '/^(.*)-([^-]+)$/ && print "$1";')
-        if [ -z "$lbaasenv" ]; then
-            lbaasenv=$octaviatest
-        fi
-        lbaasdriver=$(echo "$octaviatest" | perl -ne '/^(.*)-([^-]+)$/ && print "$2";')
-        if [ -z "$lbaasdriver" ]; then
-            lbaasdriver='octavia'
-        fi
-
-        testenv=${octaviatest:-"apiv1"}
-
-        if [ "$octaviaversion" = "v1" ]; then
-            case "$lbaasenv" in
-                "api"|"healthmonitor"|"listener"|"loadbalancer"|"member"|"minimal"|"pool")
-                    testenv="apiv1"
-                    ;;
-                "scenario")
-                    testenv="scenario"
-                    ;;
-                *)
-                    echo "Unrecognized env $lbaasenv".
-                    exit 1
-                    ;;
-            esac
-        fi
-        ;;
-esac
diff --git a/octavia/tests/contrib/deploy_c10k_test.sh b/octavia/tests/contrib/deploy_c10k_test.sh
deleted file mode 100755
index c4be42cf57..0000000000
--- a/octavia/tests/contrib/deploy_c10k_test.sh
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-
-set -ex
-
-function wait_for_loadbalancer_active() {
-  lb_name=$1
-  while [ $(neutron lbaas-loadbalancer-list \
-            | grep $lb_name | grep ACTIVE \
-            | wc --lines) == 0 ]; do
-  sleep 2
-  done
-}
-
-BUILD_DIR=$(mktemp -d)
-cp $( dirname "${BASH_SOURCE[0]}" )/httpd.go ${BUILD_DIR}
-pushd ${BUILD_DIR}
-  go build -ldflags "-linkmode external -extldflags -static" httpd.go
-popd
-
-SEC_GROUP_ID=$( openstack security group create "app-server-sec-group" \
-                                                -f value -c id)
-openstack security group rule create ${SEC_GROUP_ID} --protocol tcp \
-                                                     --dst-port 22
-openstack security group rule create ${SEC_GROUP_ID} --protocol tcp \
-                                                     --dst-port 8080
-
-ssh-keygen -q -b 4096 -t rsa -N "" -f ${BUILD_DIR}/id_rsa
-openstack keypair create "app-server-key" --public-key ${BUILD_DIR}/id_rsa.pub
-
-PRIVATE_NET_ID=$( openstack network show private -f value -c id )
-
-neutron lbaas-loadbalancer-create --name lb1 private-subnet
-wait_for_loadbalancer_active lb
-neutron lbaas-listener-create --name listener1 \
-                              --loadbalancer lb1 \
-                              --protocol HTTP \
-                              --protocol-port 80 \
-                              --connection-limit 100000
-wait_for_loadbalancer_active lb1
-neutron lbaas-pool-create --name pool1 \
-                          --lb-algorithm ROUND_ROBIN \
-                          --listener listener1 \
-                          --protocol HTTP
-wait_for_loadbalancer_active lb1
-
-for NUM in $( seq -f "%02.0f" 1 3 ); do
-  # For higher scale testing you may want to use a large flavor assuming your
-  # environment has capacity
-  SERVER_ID=$( openstack server create app${NUM} \
-               --image cirros-0.3.4-x86_64-uec \
-               --flavor m1.tiny \
-               --security-group ${SEC_GROUP_ID} \
-               --nic net-id=${PRIVATE_NET_ID} \
-               --key-name "app-server-key" \
-               --wait -f value -c id )
-  sleep 30
-  SERVER_IPV4=$( openstack server show ${SERVER_ID} \
-                 -c addresses -f value \
-                 | perl -ne 'print $1 if /(\d+\.\d+\.\d+\.\d+)/' )
-
-  scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
-      -i ${BUILD_DIR}/id_rsa \
-      ${BUILD_DIR}/httpd cirros@${SERVER_IPV4}:/dev/shm/
-  ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
-      -i ${BUILD_DIR}/id_rsa cirros@${SERVER_IPV4} \
-      sudo sh -c "ulimit -n 100000; screen -d -m /dev/shm/httpd \
-                  -id ${NUM} -port 8080"
-
-  neutron lbaas-member-create --subnet private-subnet \
-                              --address ${SERVER_IPV4} \
-                              --name app${NUM} \
-                              --protocol-port 8080 pool1
-  wait_for_loadbalancer_active lb1
-done
-
-VIP_ADDRESS=$( neutron lbaas-loadbalancer-show lb1 -f value -c vip_address )
-neutron lbaas-loadbalancer-show lb1
-
-echo -e "You can now perform a load test against this load balancer. " \
-        "For example:\n  ab -n 40000 -c 10000 http://${VIP_ADDRESS}/slow"
diff --git a/octavia/tests/contrib/gate_hook.sh b/octavia/tests/contrib/gate_hook.sh
deleted file mode 100755
index 6e531c5075..0000000000
--- a/octavia/tests/contrib/gate_hook.sh
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/bin/bash
-
-set -ex
-
-GATE_DEST=$BASE/new
-
-_DEVSTACK_LOCAL_CONFIG_TAIL=
-
-# Inject config from hook
-function load_conf_hook {
-    local hook="$1"
-    local GATE_HOOKS=$GATE_DEST/octavia/octavia/tests/contrib/hooks
-
-    _DEVSTACK_LOCAL_CONFIG_TAIL+=$'\n'"$(cat $GATE_HOOKS/$hook)"
-}
-
-export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin barbican https://opendev.org/openstack/barbican"$'\n'
-
-# Allow testing against diskimage-builder changes with depends-on
-export DEVSTACK_LOCAL_CONFIG+=$'\n'"LIBS_FROM_GIT+=,diskimage-builder"$'\n'
-
-# Sort out our gate args
-. $(dirname "$0")/decode_args.sh
-
-# Note: The check for OVH and limestone instances is temporary until they
-# resolve the KVM failures as logged here:
-# https://bugzilla.kernel.org/show_bug.cgi?id=192521
-# However, this may be resolved at OVH before the kernel bug is resolved.
-if $(egrep --quiet '(vmx|svm)' /proc/cpuinfo) && [[ ( ! $(hostname) =~ "ovh" && ! $(hostname) =~ "limestone" ) ]]; then
-    export DEVSTACK_GATE_LIBVIRT_TYPE=kvm
-fi
-
-function _setup_octavia_multinode {
-
-    PRIMARY_NODE_IP=$(cat /etc/nodepool/primary_node_private)
-    SUBNODE_IP=$(head -n1 /etc/nodepool/sub_nodes_private)
-
-    # OCTAVIA_CONTROLLER_IP_PORT_LIST are the ips inside the
-    # lb-mgmt network that the amphoras reach via heartbeats
-    COMMON_MULTINODE_CONFIG="
-OCTAVIA_USE_PREGENERATED_CERTS=True
-OCTAVIA_USE_PREGENERATED_SSH_KEY=True
-OCTAVIA_CONTROLLER_IP_PORT_LIST=192.168.0.3:5555,192.168.0.4:5555
-
-# Embedded fix for devstack bug/1629133 , this line can be removed once
-# that bug is fixed
-SUBNETPOOL_PREFIX_V4=10.0.0.0/16"$'\n'
-
-    export DEVSTACK_LOCAL_CONFIG+="$COMMON_MULTINODE_CONFIG
-OCTAVIA_NODE=main
-OCTAVIA_NODES=main:$PRIMARY_NODE_IP,second:$SUBNODE_IP
-enable_service o-api-ha
-OCTAVIA_MGMT_PORT_IP=192.168.0.3"$'\n'
-
-    export DEVSTACK_SUBNODE_CONFIG+="$COMMON_MULTINODE_CONFIG
-OCTAVIA_NODE=second
-enable_plugin octavia https://opendev.org/openstack/octavia
-OCTAVIA_MGMT_PORT_IP=192.168.0.4"$'\n'
-}
-
-function _setup_octavia {
-    export DEVSTACK_LOCAL_CONFIG+=$'\n'"OCTAVIA_DIB_TRACING=True"$'\n'
-    export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin octavia https://opendev.org/openstack/octavia"$'\n'
-    # Use infra's cached version of the file
-    if [ -f /opt/stack/new/devstack/files/get-pip.py ]; then
-            export DEVSTACK_LOCAL_CONFIG+=$'\n'"DIB_REPOLOCATION_pip_and_virtualenv=file:///opt/stack/new/devstack/files/get-pip.py"$'\n'
-    fi
-    if [ "$testenv" != "apiv1" ]; then
-        ENABLED_SERVICES+="octavia,o-cw,o-hk,o-hm,o-api,"
-        if [ "$DEVSTACK_GATE_TOPOLOGY" == "multinode" ]; then
-            _setup_octavia_multinode
-        fi
-    fi
-    if [ "$testenv" = "apiv1" ]; then
-        load_conf_hook apiv1
-    fi
-
-    if [ "$testenv" = "scenario" ]; then
-        load_conf_hook scenario
-    fi
-}
-
-# Make sure lbaasv2 is listed as enabled for tempest
-load_conf_hook api_extensions
-
-case "$testtype" in
-
-    "dsvm-functional")
-        PROJECT_NAME=octavia
-        OCTAVIA_PATH=$GATE_DEST/$PROJECT_NAME
-        IS_GATE=True
-        USE_CONSTRAINT_ENV=False
-        export LOG_COLOR=False
-        source "$OCTAVIA"/tools/configure_for_lbaas_func_testing.sh
-
-        # Make the workspace owned by the stack user
-        sudo chown -R "$STACK_USER":"$STACK_USER" "$BASE"
-
-        configure_host_for_lbaas_func_testing
-        ;;
-
-    "tempest")
-        # These are not needed with either v1 or v2
-        ENABLED_SERVICES+="-c-api,-c-bak,-c-sch,-c-vol,-cinder,"
-        ENABLED_SERVICES+="-s-account,-s-container,-s-object,-s-proxy,"
-
-        if [ "$testenv" != "scenario" ]; then
-            export DEVSTACK_LOCAL_CONFIG+=$'\n'"DISABLE_AMP_IMAGE_BUILD=True"$'\n'
-            # Not needed for API tests
-            ENABLED_SERVICES+="-horizon,-ceilometer-acentral,-ceilometer-acompute,"
-            ENABLED_SERVICES+="-ceilometer-alarm-evaluator,-ceilometer-alarm-notifier,"
-            ENABLED_SERVICES+="-ceilometer-anotification,-ceilometer-api,"
-            ENABLED_SERVICES+="-ceilometer-collector,"
-        fi
-
-        if [ "$lbaasdriver" = "namespace" ]; then
-            export DEVSTACK_LOCAL_CONFIG+=$'\n'"NEUTRON_LBAAS_SERVICE_PROVIDERV2=LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default"$'\n'
-        fi
-
-        if [ "$lbaasdriver" = "octavia" ]; then
-            _setup_octavia
-        fi
-
-        export ENABLED_SERVICES
-        export DEVSTACK_LOCAL_CONFIG+=$'\n'"$_DEVSTACK_LOCAL_CONFIG_TAIL"
-        "$GATE_DEST"/devstack-gate/devstack-vm-gate.sh
-        ;;
-
-    *)
-        echo "Unrecognized test type $testtype".
-        exit 1
-        ;;
-esac
diff --git a/octavia/tests/contrib/hooks/api_extensions b/octavia/tests/contrib/hooks/api_extensions
deleted file mode 100644
index c0af378565..0000000000
--- a/octavia/tests/contrib/hooks/api_extensions
+++ /dev/null
@@ -1 +0,0 @@
-NETWORK_API_EXTENSIONS="all,lbaasv2"
diff --git a/octavia/tests/contrib/hooks/apiv1 b/octavia/tests/contrib/hooks/apiv1
deleted file mode 100644
index 1cf65b452d..0000000000
--- a/octavia/tests/contrib/hooks/apiv1
+++ /dev/null
@@ -1,8 +0,0 @@
-[[post-config|/etc/octavia/octavia.conf]]
-[DEFAULT]
-debug = True
-
-[controller_worker]
-amphora_driver = amphora_noop_driver
-compute_driver = compute_noop_driver
-network_driver = network_noop_driver
diff --git a/octavia/tests/contrib/hooks/scenario b/octavia/tests/contrib/hooks/scenario
deleted file mode 100644
index 00d6117dd2..0000000000
--- a/octavia/tests/contrib/hooks/scenario
+++ /dev/null
@@ -1,3 +0,0 @@
-[[post-config|/etc/octavia/octavia.conf]]
-[DEFAULT]
-debug = True
diff --git a/octavia/tests/contrib/httpd.go b/octavia/tests/contrib/httpd.go
deleted file mode 100644
index f35d56cdc9..0000000000
--- a/octavia/tests/contrib/httpd.go
+++ /dev/null
@@ -1,134 +0,0 @@
-package main
-
-import (
-	"flag"
-	"fmt"
-	"io"
-	"net"
-	"net/http"
-	"sync"
-	"time"
-)
-
-var sess_cookie http.Cookie
-var resp string
-
-type ConnectionCount struct {
-	mu         sync.Mutex
-	cur_conn   int
-	max_conn   int
-	total_conn int
-	packets    int
-}
-
-var scoreboard ConnectionCount
-
-func (cc *ConnectionCount) open() {
-	cc.mu.Lock()
-	defer cc.mu.Unlock()
-
-	cc.cur_conn++
-	cc.total_conn++
-}
-
-func (cc *ConnectionCount) close() {
-	cc.mu.Lock()
-	defer cc.mu.Unlock()
-
-	if cc.cur_conn > cc.max_conn {
-		cc.max_conn = cc.cur_conn
-	}
-	cc.cur_conn--
-}
-
-func (cc *ConnectionCount) stats() (int, int, int) {
-	cc.mu.Lock()
-	defer cc.mu.Unlock()
-
-	return cc.max_conn, cc.total_conn, cc.packets
-}
-
-func (cc *ConnectionCount) inc() {
-	cc.mu.Lock()
-	defer cc.mu.Unlock()
-
-	cc.packets++
-}
-
-func (cc *ConnectionCount) reset() {
-	cc.mu.Lock()
-	defer cc.mu.Unlock()
-
-	cc.max_conn = 0
-	cc.total_conn = 0
-	cc.packets = 0
-}
-
-func root_handler(w http.ResponseWriter, r *http.Request) {
-	scoreboard.open()
-	defer scoreboard.close()
-
-	http.SetCookie(w, &sess_cookie)
-	io.WriteString(w, resp)
-}
-
-func slow_handler(w http.ResponseWriter, r *http.Request) {
-	scoreboard.open()
-	defer scoreboard.close()
-
-	delay, err := time.ParseDuration(r.URL.Query().Get("delay"))
-	if err != nil {
-		delay = 3 * time.Second
-	}
-
-	time.Sleep(delay)
-	http.SetCookie(w, &sess_cookie)
-	io.WriteString(w, resp)
-}
-
-func stats_handler(w http.ResponseWriter, r *http.Request) {
-	http.SetCookie(w, &sess_cookie)
-	max_conn, total_conn, packets := scoreboard.stats()
-	fmt.Fprintf(w, "max_conn=%d\ntotal_conn=%d\npackets=%d\n", max_conn, total_conn, packets)
-}
-
-func reset_handler(w http.ResponseWriter, r *http.Request) {
-	http.SetCookie(w, &sess_cookie)
-	scoreboard.reset()
-	fmt.Fprintf(w, "reset\n")
-}
-
-func udp_handler(port *int) {
-	ServerConn, _ := net.ListenUDP("udp", &net.UDPAddr{IP: []byte{0, 0, 0, 0}, Port: *port, Zone: ""})
-	defer ServerConn.Close()
-	buf := make([]byte, 1024)
-	for {
-		n, addr, _ := ServerConn.ReadFromUDP(buf)
-		scoreboard.inc()
-		fmt.Println("Received ", string(buf[0:n]), " from ", addr)
-		ServerConn.WriteTo([]byte(resp), addr)
-	}
-}
-
-func main() {
-	portPtr := flag.Int("port", 8080, "TCP port to listen on")
-	idPtr := flag.String("id", "1", "Server ID")
-	udpPortPtr := flag.Int("udpPort", -1, "UDP port to listen on. If port <=0 UDP server won't start")
-
-	flag.Parse()
-
-	resp = fmt.Sprintf("%s", *idPtr)
-	sess_cookie.Name = "JSESSIONID"
-	sess_cookie.Value = *idPtr
-
-	http.HandleFunc("/", root_handler)
-	http.HandleFunc("/slow", slow_handler)
-	http.HandleFunc("/stats", stats_handler)
-	http.HandleFunc("/reset", reset_handler)
-	portStr := fmt.Sprintf(":%d", *portPtr)
-	if *udpPortPtr > 0 {
-		// only start server if flag is set
-		go udp_handler(udpPortPtr)
-	}
-	http.ListenAndServe(portStr, nil)
-}
diff --git a/octavia/tests/contrib/post_test_hook.sh b/octavia/tests/contrib/post_test_hook.sh
deleted file mode 100755
index 9ed6764464..0000000000
--- a/octavia/tests/contrib/post_test_hook.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/bash
-
-set -xe
-
-TEMPEST_CONFIG_DIR="$BASE/new/tempest/etc"
-SCRIPTS_DIR="/usr/os-testr-env/bin"
-OCTAVIA_DIR="$BASE/new/octavia"
-
-# Sort out our gate args
-. $(dirname "$0")/decode_args.sh
-
-if [ "$testenv" = "apiv1" ]; then
-    case "$lbaasenv" in
-        minimal)
-            # Temporarily just do the happy path
-            test_subset="octavia.tests.tempest.v2.api.test_load_balancers_non_admin.LoadBalancersTestJSON.test_create_load_balancer(?!_) "
-            test_subset+="octavia.tests.tempest.v2.api.test_load_balancers_non_admin.LoadBalancersTestJSON.test_get_load_balancer_stats(?!_) "
-            test_subset+="octavia.tests.tempest.v2.api.test_load_balancers_non_admin.LoadBalancersTestJSON.test_get_load_balancer_status_tree(?!_) "
-            test_subset+="octavia.tests.tempest.v2.api.test_listeners_non_admin.ListenersTestJSON.test_create_listener(?!_) "
-            test_subset+="octavia.tests.tempest.v2.api.test_pools_non_admin.TestPools.test_create_pool(?!_) "
-            test_subset+="octavia.tests.tempest.v2.api.test_members_non_admin.MemberTestJSON.test_add_member(?!_) "
-            test_subset+="octavia.tests.tempest.v2.api.test_health_monitors_non_admin.TestHealthMonitors.test_create_health_monitor(?!_)"
-            ;;
-        healthmonitor)
-            test_subset="health_monitor"
-            ;;
-        listener)
-            test_subset="listeners"
-            ;;
-        loadbalancer)
-            test_subset="load_balancers"
-            ;;
-        member)
-            test_subset="members"
-            ;;
-        pool)
-            test_subset="pools"
-            ;;
-        scenario)
-            testenv="scenario"
-            ;;
-    esac
-fi
-
-function generate_testr_results {
-    # Give job user rights to access tox logs
-    sudo -H -u "$owner" chmod o+rw .
-    if [ -d ".stestr" ] ; then
-        sudo -H -u "$owner" chmod o+rw -R .stestr
-        if [ -f ".stestr/0" ] ; then
-            stestr last --subunit > ./testrepository.subunit
-            $SCRIPTS_DIR/subunit2html ./testrepository.subunit testr_results.html
-            gzip -9 ./testrepository.subunit
-            gzip -9 ./testr_results.html
-            sudo mv ./*.gz /opt/stack/logs/
-        fi
-    fi
-}
-
-case $testtype in
-    "dsvm-functional")
-        owner=stack
-        sudo_env=
-        ;;
-    "tempest")
-        owner=tempest
-        # Configure the api and scenario tests to use the tempest.conf set by devstack
-        sudo_env="TEMPEST_CONFIG_DIR=$TEMPEST_CONFIG_DIR"
-        ;;
-esac
-
-# Set owner permissions according to job's requirements.
-cd "$OCTAVIA_DIR"
-sudo chown -R $owner:stack "$OCTAVIA_DIR"
-
-# Run tests
-echo "Running Octavia $testenv test suite"
-set +e
-
-sudo -H -u $owner $sudo_env tox -e $testenv -- $test_subset
-
-testr_exit_code=$?
-set -e
-
-# Collect and parse results
-generate_testr_results
-exit $testr_exit_code