Skip to content

Commit

Permalink
tests: Add OVN underlay tests
Browse files Browse the repository at this point in the history
Signed-off-by: Gabriel Mougard <[email protected]>
  • Loading branch information
gabrielmougard committed Sep 3, 2024
1 parent 2ac522e commit f5701e7
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 2 deletions.
33 changes: 31 additions & 2 deletions test/includes/microcloud.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ unset_interactive_vars() {
unset SKIP_LOOKUP LOOKUP_IFACE LIMIT_SUBNET SKIP_SERVICE EXPECT_PEERS REUSE_EXISTING REUSE_EXISTING_COUNT \
SETUP_ZFS ZFS_FILTER ZFS_WIPE \
SETUP_CEPH CEPH_MISSING_DISKS CEPH_FILTER CEPH_WIPE CEPH_ENCRYPT SETUP_CEPHFS CEPH_CLUSTER_NETWORK \
PROCEED_WITH_NO_OVERLAY_NETWORKING SETUP_OVN OVN_WARNING OVN_FILTER IPV4_SUBNET IPV4_START IPV4_END DNS_ADDRESSES IPV6_SUBNET \
PROCEED_WITH_NO_OVERLAY_NETWORKING SETUP_OVN OVN_UNDERLAY_NETWORK OVN_UNDERLAY_FILTEROVN_WARNING OVN_FILTER IPV4_SUBNET IPV4_START IPV4_END DNS_ADDRESSES IPV6_SUBNET \
REPLACE_PROFILE CEPH_RETRY_HA MULTI_NODE
}

Expand Down Expand Up @@ -48,6 +48,8 @@ microcloud_interactive() {
IPV4_START=${IPV4_START:-} # OVN ipv4 range start.
IPV4_END=${IPV4_END:-} # OVN ipv4 range end.
DNS_ADDRESSES=${DNS_ADDRESSES:-} # OVN custom DNS addresses.
OVN_UNDERLAY_NETWORK=${OVN_UNDERLAY_NETWORK:-} # (yes/no) set up a custom OVN underlay network.
OVN_UNDERLAY_FILTER=${OVN_UNDERLAY_FILTER:-} # filter string for OVN underlay interfaces.
IPV6_SUBNET=${IPV6_SUBNET:-} # OVN ipv6 range.
REPLACE_PROFILE="${REPLACE_PROFILE:-}" # Replace default profile config and devices.

Expand Down Expand Up @@ -136,6 +138,17 @@ ${IPV6_SUBNET}
${DNS_ADDRESSES}
$(true) # workaround for set -e
"

if [ -n "${OVN_UNDERLAY_NETWORK}" ]; then
setup="${setup}
${OVN_UNDERLAY_NETWORK}
$([ "${OVN_UNDERLAY_NETWORK}" = "yes" ] && printf "wait 300ms")
${OVN_UNDERLAY_FILTER}
$([ "${OVN_UNDERLAY_NETWORK}" = "yes" ] && printf "select-all")
$([ "${OVN_UNDERLAY_NETWORK}" = "yes" ] && printf -- "---")
$(true) # workaround for set -e
"
fi
fi

if [ -n "${REPLACE_PROFILE}" ] ; then
Expand Down Expand Up @@ -297,13 +310,29 @@ validate_ceph_encrypt() {
# validate_system_microovn: Ensures the node with the given name has correctly set up MicroOVN with the given resources.
validate_system_microovn() {
name=${1}
shift 1

echo "==> ${name} Validating MicroOVN"

lxc remote switch local
lxc exec "${name}" -- microovn cluster list | grep -q "${name}"
}

ovn_underlay_subnet_prefix=""
if [ $# -gt 0 ] && echo "${1}" | grep -Pq '^([0-9]{1,3}\.){2}[0-9]{1,3}$'; then
ovn_underlay_subnet_prefix="${1}"
shift 1
fi

# Instances are named micro01, micro02, etc.
# We need to extract the instance number to check the OVN Geneve tunnel IP.
instance_idx=$(echo "${name}" | grep -oE '[0-9]+$')
underlay_ip_idx=$((instance_idx + 1))
if [ -n "${ovn_underlay_subnet_prefix}" ]; then
lxc exec "${name}" -- sh -ceu "
microovn.ovn-sbctl --columns=ip,type find Encap type=geneve | grep -q ${ovn_underlay_subnet_prefix}.${underlay_ip_idx}
" > /dev/null
fi
}
# validate_system_lxd_zfs: Ensures the node with the given name has the given disk set up for ZFS storage.
validate_system_lxd_zfs() {
name=${1}
Expand Down
5 changes: 5 additions & 0 deletions test/suites/add.sh
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ test_add_interactive() {
export IPV4_END="10.1.123.254"
export IPV6_SUBNET="fd42:1:1234:1234::1/64"
export DNS_ADDRESSES="10.1.123.1,fd42:1:1234:1234::1"
export OVN_UNDERLAY_NETWORK="no"
microcloud_interactive | lxc exec micro01 -- sh -c "microcloud init > out"
lxc exec micro01 -- tail -1 out | grep "MicroCloud is ready" -q

Expand All @@ -159,6 +160,7 @@ test_add_interactive() {
export CEPH_ENCRYPT="no"
export SETUP_OVN="yes"
export OVN_FILTER="enp6s0"
export OVN_UNDERLAY_NETWORK="no"
microcloud_interactive | lxc exec micro01 -- sh -c "microcloud add > out"
lxc exec micro01 -- tail -1 out | grep "MicroCloud is ready" -q

Expand Down Expand Up @@ -191,6 +193,7 @@ test_add_interactive() {
export SETUP_ZFS="yes"
export ZFS_FILTER="lxd_disk1"
export ZFS_WIPE="yes"
export OVN_UNDERLAY_NETWORK="no"
microcloud_interactive | lxc exec micro01 -- sh -c "microcloud add > out"
lxc exec micro01 -- tail -1 out | grep "MicroCloud is ready" -q

Expand All @@ -208,6 +211,7 @@ test_add_interactive() {
export SETUP_ZFS="no"
export SETUP_CEPH="no"
export SETUP_OVN="no"
export OVN_UNDERLAY_NETWORK="no"

lxc exec micro04 -- snap disable microcloud
microcloud_interactive | lxc exec micro01 -- sh -c "microcloud init > out"
Expand Down Expand Up @@ -237,6 +241,7 @@ test_add_interactive() {
export IPV6_SUBNET="fd42:1:1234:1234::1/64"
export DNS_ADDRESSES="10.1.123.1,fd42:1:1234:1234::1"
export REPLACE_PROFILE="yes"
export OVN_UNDERLAY_NETWORK="no"

lxc exec micro04 -- snap enable microcloud
lxc exec micro04 -- snap start microcloud
Expand Down
38 changes: 38 additions & 0 deletions test/suites/basic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ test_interactive() {
export IPV6_SUBNET="fd42:1:1234:1234::1/64"
export DNS_ADDRESSES="10.1.123.1,8.8.8.8"
export CEPH_CLUSTER_NETWORK="${microcloud_internal_net_addr}"
export OVN_UNDERLAY_NETWORK="no"
microcloud_interactive | lxc exec micro01 -- sh -c "microcloud init > out"

lxc exec micro01 -- tail -1 out | grep "MicroCloud is ready" -q
Expand Down Expand Up @@ -207,6 +208,7 @@ test_interactive() {
export IPV4_SUBNET="10.1.123.1/24"
export IPV4_START="10.1.123.100"
export IPV4_END="10.1.123.254"
export OVN_UNDERLAY_NETWORK="no"
microcloud_interactive | lxc exec micro01 -- sh -c "microcloud init > out"

lxc exec micro01 -- tail -1 out | grep "MicroCloud is ready" -q
Expand All @@ -215,6 +217,37 @@ test_interactive() {
validate_system_microceph "${m}" 1 "${CEPH_CLUSTER_NETWORK}" disk2
validate_system_microovn "${m}"
done

reset_systems 3 3 3

ceph_cluster_subnet_prefix="10.2.123"
ceph_cluster_subnet_iface="enp7s0"

for n in $(seq 2 4); do
cluster_ip="${ceph_cluster_subnet_prefix}.${n}/24"
lxc exec "micro0$((n-1))" -- ip addr add "${cluster_ip}" dev "${ceph_cluster_subnet_iface}"
done

ovn_underlay_subnet_prefix="10.3.123"
ovn_underlay_subnet_iface="enp8s0"

for n in $(seq 2 4); do
ovn_underlay_ip="${ovn_underlay_subnet_prefix}.${n}/24"
lxc exec "micro0$((n-1))" -- sh -c "ip addr add ${ovn_underlay_ip} dev ${ovn_underlay_subnet_iface} && ip link set ${ovn_underlay_subnet_iface} up"
done

echo "Creating a MicroCloud with ZFS, Ceph storage with a fully disaggregated Ceph networking setup, OVN management network and OVN underlay network"
export CEPH_CLUSTER_NETWORK="${ceph_cluster_subnet_prefix}.0/24"
export OVN_UNDERLAY_NETWORK="yes"
export OVN_UNDERLAY_FILTER="${ovn_underlay_subnet_prefix}"
microcloud_interactive | lxc exec micro01 -- sh -c "microcloud init > out"

lxc exec micro01 -- tail -1 out | grep "MicroCloud is ready" -q
for m in micro01 micro02 micro03 ; do
validate_system_lxd "${m}" 3 disk1 3 1 "${OVN_FILTER}" "${IPV4_SUBNET}" "${IPV4_START}"-"${IPV4_END}" "${IPV6_SUBNET}"
validate_system_microceph "${m}" 1 "${CEPH_CLUSTER_NETWORK}" disk2
validate_system_microovn "${m}" "${ovn_underlay_subnet_prefix}"
done
}

test_instances_config() {
Expand Down Expand Up @@ -666,6 +699,7 @@ _test_case() {
export LOOKUP_IFACE="enp5s0" # filter string for the lookup interface table.
export LIMIT_SUBNET="yes" # (yes/no) input for limiting lookup of systems to the above subnet.
export CEPH_CLUSTER_NETWORK="${microcloud_internal_net_addr}"
export OVN_UNDERLAY_NETWORK="no"

export EXPECT_PEERS="$((num_systems - 1))"

Expand Down Expand Up @@ -1082,6 +1116,7 @@ test_reuse_cluster() {
export IPV4_END="10.1.123.254"
export DNS_ADDRESSES="10.1.123.1,8.8.8.8"
export IPV6_SUBNET="fd42:1:1234:1234::1/64"
export OVN_UNDERLAY_NETWORK="no"

reset_systems 3 3 3
echo "Create a MicroCloud that re-uses an existing service"
Expand Down Expand Up @@ -1210,6 +1245,7 @@ test_remove_cluster_member() {
export IPV4_END="10.1.123.254"
export DNS_ADDRESSES="10.1.123.1,8.8.8.8"
export IPV6_SUBNET="fd42:1:1234:1234::1/64"
export OVN_UNDERLAY_NETWORK="no"

reset_systems 3 3 3
echo "Fail to remove member from MicroCeph and LXD until OSDs are removed"
Expand Down Expand Up @@ -1358,6 +1394,7 @@ test_add_services() {
export DNS_ADDRESSES="10.1.123.1,8.8.8.8"
export IPV6_SUBNET="fd42:1:1234:1234::1/64"
export CEPH_CLUSTER_NETWORK="${ceph_cluster_subnet_prefix}.0/24"
export OVN_UNDERLAY_NETWORK="no"

reset_systems 3 3 3
set_cluster_subnet 3 "${ceph_cluster_subnet_iface}" "${ceph_cluster_subnet_prefix}"
Expand Down Expand Up @@ -1495,6 +1532,7 @@ test_non_ha() {
export CEPH_ENCRYPT="no"
export CEPH_RETRY_HA="no"
export SETUP_OVN="yes"
export OVN_UNDERLAY_NETWORK="no"
export OVN_FILTER="enp6s0"
export IPV4_SUBNET="10.1.123.1/24"
export IPV4_START="10.1.123.100"
Expand Down

0 comments on commit f5701e7

Please sign in to comment.