Stop inventory constantly giving containers new IP

See bug for further details, this was affecting pike after applying
the backported patch.

As the bug mentions, some containers were constantly given new IPs,
even with no changes to user_variables yml files or
openstack_user_config.yml file.

Further to the bug, I think that the code in master/patch will
cause containers to receive new IPs when network settings are
changed (bridge, mtu, type) rather than just updating that setting.

Change-Id: I0a757e9f503d3f604b2ba2c3409b4a4507d5edff
Closes-Bug: 1756091
This commit is contained in:
James Portman 2018-03-16 09:15:10 +00:00
parent 882d98c94b
commit b72b3add9f

View File

@ -514,10 +514,10 @@ def network_entry(is_metal, interface,
# simplified. The container address checking that is ssh address
# is only being done to support old inventory.
if is_metal:
_network = dict()
else:
_network = {'interface': interface}
_network = dict()
if not is_metal:
_network['interface'] = interface
if bridge:
_network['bridge'] = bridge
@ -624,10 +624,15 @@ def _add_additional_networks(key, inventory, ip_q, q_name, netmask, interface,
net_type,
net_mtu
)
# update values from _network in case they have changed
if old_address in networks:
for key in _network.keys():
networks[old_address][key] = _network[key]
# This should convert found addresses based on q_name + "_address"
# and then build the network if its not found.
if not is_metal and (old_address not in networks or
networks[old_address] != _network):
if not is_metal and old_address not in networks:
network = networks[old_address] = _network
if old_address in container and container[old_address]:
network['address'] = container.pop(old_address)