Use netaddr when comparing local_ip for changes
In undercloud preflight validations the IP address in config is compared to the IP address on the deployed undercloud. For IPv6 the string discovered on the system may be in a different format, representing the same actual IP address and netmask but written using a different valid syntax. Load the existing IP and config IP as a netaddr.IPNetwork, and compare both the networks and IPs to ensure we compare the actuall address and network, not the strings. Closes-Bug: #1953552 Change-Id: I42531b4e6f7b3b18ae085cc2eb36234cb306b375
This commit is contained in:
parent
e2ed23516c
commit
02b67f8e63
|
@ -312,7 +312,10 @@ def _validate_no_ip_change():
|
|||
# Nothing to check if br-ctlplane wasn't configured
|
||||
return
|
||||
existing_ip = ctlplane['addresses'][0]['ip_netmask']
|
||||
if existing_ip != CONF.local_ip:
|
||||
conf_netaddr = netaddr.IPNetwork(CONF.local_ip)
|
||||
existing_netaddr = netaddr.IPNetwork(existing_ip)
|
||||
if (conf_netaddr != existing_netaddr
|
||||
or conf_netaddr.ip != existing_netaddr.ip):
|
||||
message = _('Changing the local_ip is not allowed. Existing IP: '
|
||||
'{0}, Configured IP: {1}').format(
|
||||
existing_ip, CONF.local_ip)
|
||||
|
|
Loading…
Reference in New Issue