DHCP setup logic update

This PS covers the case when only one rack is
available - in this case it will be set as primary
dhcp server.

Change-Id: Ib6273c4a641c2669bf9de1b5b87f5363e83c1e20
Signed-off-by: Sergiy Markin <smarkin@mirantis.com>
This commit is contained in:
Sergiy Markin
2025-12-03 15:52:37 +00:00
parent a096261a0e
commit 812b93d482

View File

@@ -177,9 +177,43 @@ else
done
fi
if [[ -z "${TARGET_PRIMARY}" ]] || [[ -z "${TARGET_SECONDARY}" ]]; then
echo "[DHCP] Not enough running rack controllers to set primary/secondary (primary='${TARGET_PRIMARY:-<none>}' secondary='${TARGET_SECONDARY:-<none>}')."
if [[ -z "${TARGET_PRIMARY}" ]]; then
echo "[DHCP] No running rack controllers available to set as primary."
elif [[ -z "${TARGET_SECONDARY}" ]]; then
# Only one rack available - set it as primary only
echo "[DHCP] Only one rack controller available. Setting primary='${TARGET_PRIMARY}' without secondary."
echo "[DHCP] Target configuration: primary=${TARGET_PRIMARY} secondary=<none>"
NEED_PRIMARY_CHANGE=false
NEED_DHCP_ENABLE=false
[[ "${CURRENT_PRIMARY}" != "${TARGET_PRIMARY}" ]] && NEED_PRIMARY_CHANGE=true
[[ "${CURRENT_DHCP}" != "true" ]] && NEED_DHCP_ENABLE=true
if ! $NEED_PRIMARY_CHANGE && ! $NEED_DHCP_ENABLE; then
echo "[DHCP] VLAN already has correct primary & DHCP enabled."
else
# 6. Perform update(s) for single rack
if $NEED_DHCP_ENABLE && $NEED_PRIMARY_CHANGE; then
echo "[DHCP] Updating primary='${TARGET_PRIMARY}' and enabling DHCP..."
maas admin vlan update "${FABRIC_ID}" "${VLAN_ID}" primary_rack="${TARGET_PRIMARY}" dhcp_on=true
else
if $NEED_PRIMARY_CHANGE; then
echo "[DHCP] Updating primary rack: primary='${TARGET_PRIMARY}'..."
maas admin vlan update "${FABRIC_ID}" "${VLAN_ID}" primary_rack="${TARGET_PRIMARY}"
fi
if $NEED_DHCP_ENABLE; then
echo "[DHCP] Enabling DHCP..."
maas admin vlan update "${FABRIC_ID}" "${VLAN_ID}" dhcp_on=true
fi
fi
# 7. Verify post state
POST_JSON=$(maas admin vlan read "${FABRIC_ID}" "${VLAN_ID}" 2>/dev/null || true)
echo "[DHCP] Post-update state: $(echo "${POST_JSON}" | jq '{fabric: .fabric_id, vid: .vid, dhcp_on: .dhcp_on, primary_rack: .primary_rack, secondary_rack: .secondary_rack}')"
fi
else
# Two or more racks available - set both primary and secondary
echo "[DHCP] Target configuration: primary=${TARGET_PRIMARY} secondary=${TARGET_SECONDARY}"
NEED_PRIMARY_CHANGE=false