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 Aug 20, 2024
1 parent 713f28f commit fbf7758
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 3 deletions.
35 changes: 32 additions & 3 deletions test/includes/microcloud.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ 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_WARNING CEPH_FILTER CEPH_WIPE CEPH_ENCRYPT SETUP_CEPHFS CEPH_CLUSTER_NETWORK IGNORE_CEPH_NETWORKING \
PROCEED_WITH_NO_OVERLAY_NETWORKING SETUP_OVN OVN_WARNING OVN_FILTER IPV4_SUBNET IPV4_START IPV4_END DNS_ADDRESSES IPV6_SUBNET \
REPLACE_PROFILE
PROCEED_WITH_NO_OVERLAY_NETWORKING SETUP_OVN OVN_UNDERLAY_NETWORK OVN_UNDERLAY_FILTER OVN_WARNING OVN_FILTER IPV4_SUBNET IPV4_START \
IPV4_END DNS_ADDRESSES IPV6_SUBNET REPLACE_PROFILE
}

# microcloud_interactive: outputs text that can be passed to `TEST_CONSOLE=1 microcloud init`
Expand Down Expand Up @@ -40,6 +40,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 @@ -128,6 +130,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}" ] && [ "${SKIP_LOOKUP}" = 1 ]; then
Expand Down Expand Up @@ -286,13 +299,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
2 changes: 2 additions & 0 deletions test/suites/add.sh
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,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
35 changes: 35 additions & 0 deletions test/suites/basic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,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 @@ -206,6 +207,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 @@ -214,6 +216,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 @@ -1076,6 +1109,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 @@ -1202,6 +1236,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

0 comments on commit fbf7758

Please sign in to comment.