aboutsummaryrefslogtreecommitdiff
path: root/tests/test-magnum.sh
diff options
context:
space:
mode:
authorMichal Arbet <michal.arbet@ultimum.io>2024-01-16 07:46:06 +0100
committerMichal Arbet <michal.arbet@ultimum.io>2024-01-30 09:56:46 +0100
commitf0b7bf33abb6faff506599c99863b823ca108ef5 (patch)
tree4e77ef5a7baeccf9dddad001e905282d7d54273d /tests/test-magnum.sh
parent6f847610b5e31cab912de2c83709e68e8d771125 (diff)
downloadkolla-ansible-f0b7bf33abb6faff506599c99863b823ca108ef5.tar.gz
kolla-ansible-f0b7bf33abb6faff506599c99863b823ca108ef5.zip
[CI] Test neutron DNS integration and designate
This patch adds tests for neutron and designate DNS integration. Tests are based on scenarios described below in [1][2]. [1] https://docs.openstack.org/neutron/latest/admin/config-dns-int.html [2] https://docs.openstack.org/neutron/latest/admin/config-dns-int-ext-serv.html Change-Id: I3953f760458285e5c9a818599492c6176e857dde
Diffstat (limited to 'tests/test-magnum.sh')
-rwxr-xr-xtests/test-magnum.sh127
1 files changed, 104 insertions, 23 deletions
diff --git a/tests/test-magnum.sh b/tests/test-magnum.sh
index 16844ba9e..df4352c12 100755
--- a/tests/test-magnum.sh
+++ b/tests/test-magnum.sh
@@ -20,46 +20,127 @@ function test_trove {
openstack database cluster list
}
+function check_if_resolvable {
+ local dns_domain="${1}"
+ local dns_record="${2}"
+ local record_type="${3}"
+
+ attempt=1
+ while true; do
+ IP=$(dig +short @192.0.2.1 ${dns_record} ${record_type})
+ if [[ -n $IP ]]; then
+ break
+ fi
+ attempt=$((attempt+1))
+ if [[ $attempt -eq 10 ]]; then
+ echo "[e] Failed to resolve ${dns_record}"
+ openstack recordset list ${dns_domain}
+ exit 1
+ fi
+ sleep 10
+ done
+}
+
function test_designate {
# Smoke test.
openstack zone list --all
- # Create a default zone for fixed and floating IPs, then reconfigure nova
- # and neutron to use it.
- openstack zone create --email admin@example.org example.org.
- ZONE_ID=$(openstack zone show example.org. -f value -c id)
+ SERVER_NAME="my_vm"
+ SERVER_NAME_SANITIZED=$(echo ${SERVER_NAME} | sed -e 's/_/-/g')
+ DNS_DOMAIN="floating.example.org."
+
+ openstack zone create --email admin@example.org ${DNS_DOMAIN}
+
+ openstack network create --dns-domain ${DNS_DOMAIN} tenant-dns-test
+ openstack subnet create --subnet-range 192.168.99.0/24 --network tenant-dns-test tenant-dns-test
+
+ openstack router create router-dns-test
+ openstack router set --external-gateway public1 router-dns-test
+ openstack router add subnet router-dns-test tenant-dns-test
+
+ openstack server create --image cirros --flavor m1.tiny --network tenant-dns-test ${SERVER_NAME}
+
+ SERVER_ID=$(openstack server show ${SERVER_NAME} -f value -c id)
+ PORT_ID=$(openstack port list --device-id ${SERVER_ID} -f value -c ID)
+
+ openstack floating ip create public1 --port ${PORT_ID}
+
+ check_if_resolvable "${DNS_DOMAIN}" "${SERVER_NAME_SANITIZED}.${DNS_DOMAIN}" "A"
+
+ FLOATING_IP_ID=$(openstack floating ip list --port ${PORT_ID} -f value -c ID)
+
+ openstack server remove floating ip ${SERVER_ID} ${FLOATING_IP_ID}
+ openstack floating ip delete ${FLOATING_IP_ID}
+ openstack server delete --wait ${SERVER_ID}
+
+ DNS_DOMAIN="floating-2.example.org."
+ DNS_NAME="my-floatingip"
+ ZONE_ID=$(openstack zone create --email admin@example.org ${DNS_DOMAIN} -f value -c id)
+ FLOATING_IP_ID=$(openstack floating ip create --dns-domain ${DNS_DOMAIN} --dns-name ${DNS_NAME} public1 -f value -c id)
+
+ check_if_resolvable "${DNS_DOMAIN}" "${DNS_NAME}.${DNS_DOMAIN}" "A"
+
+ openstack floating ip delete ${FLOATING_IP_ID}
+ openstack zone delete ${ZONE_ID}
+
+ DNS_DOMAIN="fixed.example.org."
+ DNS_NAME="port"
+ ZONE_ID=$(openstack zone create --email admin@example.org ${DNS_DOMAIN} -f value -c id)
+
+ SUBNET_ID=$(openstack subnet create --network public1 public1-subnet-ipv6 --ip-version 6 --subnet-range 2001:db8:42:42::/64 --dns-publish-fixed-ip -f value -c id)
+ PORT_ID=$(openstack port create ${DNS_NAME} --dns-domain ${DNS_DOMAIN} --dns-name ${DNS_NAME} --network public1 -f value -c id)
+
+ check_if_resolvable "${DNS_DOMAIN}" "${DNS_NAME}.${DNS_DOMAIN}" "AAAA"
+
+ openstack port delete ${PORT_ID}
+
+ DNS_DOMAIN="fixed.sink.example.org."
+ openstack zone create --email admin@example.org ${DNS_DOMAIN}
+ ZONE_ID_FIXED=$(openstack zone show ${DNS_DOMAIN} -f value -c id)
+
+ DNS_DOMAIN="floating.sink.example.org."
+ openstack zone create --email admin@example.org ${DNS_DOMAIN}
+ ZONE_ID_FLOATING=$(openstack zone show ${DNS_DOMAIN} -f value -c id)
mkdir -p /etc/kolla/config/designate/
cat << EOF > /etc/kolla/config/designate/designate-sink.conf
[handler:nova_fixed]
-zone_id = ${ZONE_ID}
+zone_id = ${ZONE_ID_FIXED}
[handler:neutron_floatingip]
-zone_id = ${ZONE_ID}
+zone_id = ${ZONE_ID_FLOATING}
EOF
RAW_INVENTORY=/etc/kolla/inventory
deactivate
source $KOLLA_ANSIBLE_VENV_PATH/bin/activate
- kolla-ansible -i ${RAW_INVENTORY} --tags designate -vvv reconfigure &> /tmp/logs/ansible/reconfigure-designate
+ echo 'designate_enable_notifications_sink: "yes"' >> /etc/kolla/globals.yml
+ kolla-ansible -i ${RAW_INVENTORY} --tags designate,nova,nova-cell,neutron -vvv reconfigure &> /tmp/logs/ansible/reconfigure-designate
deactivate
source ~/openstackclient-venv/bin/activate
- # Create an instance, and check that its name resolves.
- openstack server create --wait --image cirros --flavor m1.tiny --key-name mykey --network demo-net dns-test --wait
- attempt=1
- while true; do
- IP=$(dig +short @192.0.2.1 dns-test.example.org. A)
- if [[ -n $IP ]]; then
- break
- fi
- attempt=$((attempt+1))
- if [[ $attempt -eq 10 ]]; then
- echo "Failed to resolve dns-test.example.org."
- openstack recordset list ${ZONE_ID}
- exit 1
- fi
- sleep 10
- done
+ DNS_DOMAIN="fixed.sink.example.org."
+ SERVER_NAME="sink-server"
+ openstack server create --image cirros --flavor m1.tiny --network tenant-dns-test ${SERVER_NAME}
+
+ check_if_resolvable "${DNS_DOMAIN}" "${SERVER_NAME}.${DNS_DOMAIN}" "A"
+
+ SERVER_ID=$(openstack server show ${SERVER_NAME} -f value -c id)
+
+ FLOATING_IP_ID=$(openstack floating ip create public1 -f value -c id)
+
+ DNS_DOMAIN="floating.sink.example.org."
+ openstack server add floating ip ${SERVER_ID} ${FLOATING_IP_ID}
+ FLOATING_IP_IP=$(openstack floating ip show ${FLOATING_IP_ID} -f value -c floating_ip_address)
+ DNS_NAME_ASSIGNMENT=$(echo "${FLOATING_IP_IP}" | sed -e 's/\./-/g')
+
+ check_if_resolvable "${DNS_DOMAIN}" "${DNS_NAME_ASSIGNMENT}.${DNS_DOMAIN}" "A"
+
+ openstack server remove floating ip ${SERVER_ID} ${FLOATING_IP_ID}
+ openstack server delete --wait ${SERVER_ID}
+ openstack zone delete ${ZONE_ID_FIXED}
+ openstack zone delete ${ZONE_ID_FLOATING}
+
+ openstack zone delete floating.example.org.
}
function test_magnum_logged {