Fix multirack support for the shared address pools
When the same address pool is used for VMs in different groups with different l2_network_devices, one of l2_network_devices (libvirt network) should be able to configure DHCP options for the VMs from all the groups for the used address pool; not only for the "default" group. - fix shell command "slave-ip-list" when nodes use the same address pool but are from different groups - fix the template option "l2_network_device" for address pool: always seek for "<group.name>_l2_network_device" instead of "l2_network_device", to avoid using the same IP address for different l2_network_devices in different groups - fix DCHP configuration for libvirt network: find all the interfaces from all the l2_network_devices, which use the current address pool, to configure DHCP for all the nodes from all groups. Change-Id: Ib0bb9e48a69699c81cbd2a89b1e06884c15d954c
This commit is contained in:
parent
370af2910f
commit
94f424cb51
|
@ -614,19 +614,29 @@ class LibvirtL2NetworkDevice(network.L2NetworkDevice):
|
|||
dhcp_range_end = None
|
||||
addresses = []
|
||||
if self.address_pool is not None:
|
||||
# Reserved names 'l2_network_device' and 'dhcp'
|
||||
ip_network_address = self.address_pool.get_ip('l2_network_device')
|
||||
# Reserved name '<group.name>_l2_network_device'
|
||||
ip_network_address = self.address_pool.get_ip(
|
||||
str(self.group.name) + '_l2_network_device')
|
||||
|
||||
# Workaround for fuel-qa compatibility, if 'l2_network_device'
|
||||
# address was not reserved in the YAML template
|
||||
# Backward compatibility with existing templates
|
||||
# where only one l2_network_device per address pool is used
|
||||
if not ip_network_address:
|
||||
ip_network_address = str(self.address_pool.ip_network[1])
|
||||
ip_network_address = self.address_pool.get_ip(
|
||||
'l2_network_device')
|
||||
|
||||
ip_network_prefixlen = str(self.address_pool.ip_network.prefixlen)
|
||||
# Reserved name 'dhcp'
|
||||
dhcp_range_start = self.address_pool.ip_range_start('dhcp')
|
||||
dhcp_range_end = self.address_pool.ip_range_end('dhcp')
|
||||
|
||||
for interface in self.interfaces:
|
||||
# Get all the interfaces that use the same self.address_pool
|
||||
# to configure DHCP for all the nodes from all groups
|
||||
l2devices = self.group.environment.get_env_l2_network_devices(
|
||||
address_pool=self.address_pool)
|
||||
ifaces = [iface for l2device in l2devices
|
||||
for iface in l2device.interfaces]
|
||||
|
||||
for interface in ifaces:
|
||||
for address in interface.addresses:
|
||||
ip_addr = netaddr.IPAddress(address.ip_address)
|
||||
if ip_addr in self.address_pool.ip_network:
|
||||
|
|
|
@ -363,7 +363,7 @@ def create_address_pools(interfaceorder, networks_pools):
|
|||
# Gateway will be used for configure OpenStack networks
|
||||
'gateway': 1,
|
||||
# l2_network_device will be used for configure local bridge
|
||||
'l2_network_device': 1,
|
||||
'default_l2_network_device': 1,
|
||||
},
|
||||
'ip_ranges': {
|
||||
'default': [2, -2],
|
||||
|
|
|
@ -59,7 +59,7 @@ class AddressPool(base.ParamedModel, base.BaseModel):
|
|||
params:
|
||||
ip_reserved:
|
||||
gateway: 1
|
||||
l2_network_device: 1 # l2_network_device will get the
|
||||
default_l2_network_device: 1 # l2_network_device will get the
|
||||
# IP address = 172.0.*.1 (net + 1)
|
||||
ip_ranges:
|
||||
default: [2, -2] # admin IP range for 'default' nodegroup name
|
||||
|
@ -70,10 +70,12 @@ class AddressPool(base.ParamedModel, base.BaseModel):
|
|||
vlan_start: 100
|
||||
ip_reserved:
|
||||
gateway: 12.34.56.1
|
||||
l2_network_device: 12.34.56.62 # l2_network_device will be assumed
|
||||
# with this IP address.
|
||||
# It will be used for create libvirt
|
||||
# network if libvirt driver is used.
|
||||
|
||||
# l2_network_device in the group "default"
|
||||
# will be assumed with this IP address.
|
||||
# It will be used for create libvirt
|
||||
# network if libvirt driver is used.
|
||||
default_l2_network_device: 12.34.56.62
|
||||
ip_ranges:
|
||||
default: [2, 127] # public IP range for 'default' nodegroup name
|
||||
floating: [128, -2] # floating IP range
|
||||
|
@ -83,21 +85,21 @@ class AddressPool(base.ParamedModel, base.BaseModel):
|
|||
params:
|
||||
vlan_start: 101
|
||||
ip_reserved:
|
||||
l2_network_device: 1 # 172.0.*.1
|
||||
default_l2_network_device: 1 # 172.0.*.1
|
||||
|
||||
management-pool01:
|
||||
net: 172.0.0.0/16:24
|
||||
params:
|
||||
vlan_start: 102
|
||||
ip_reserved:
|
||||
l2_network_device: 1 # 172.0.*.1
|
||||
default_l2_network_device: 1 # 172.0.*.1
|
||||
|
||||
private-pool01:
|
||||
net: 192.168.0.0/24:26
|
||||
params:
|
||||
vlan_start: 103
|
||||
ip_reserved:
|
||||
l2_network_device: 1 # 192.168.*.1
|
||||
default_l2_network_device: 1 # 192.168.*.1
|
||||
|
||||
"""
|
||||
class Meta(object):
|
||||
|
|
|
@ -321,7 +321,10 @@ class Shell(object):
|
|||
node.name,
|
||||
node.get_ip_address_by_network_name(l2dev.name)))
|
||||
if ap_slave_ips:
|
||||
slave_ips[l2dev.address_pool.name] = ap_slave_ips
|
||||
if l2dev.address_pool.name in slave_ips:
|
||||
slave_ips[l2dev.address_pool.name] += ap_slave_ips
|
||||
else:
|
||||
slave_ips[l2dev.address_pool.name] = ap_slave_ips
|
||||
|
||||
if not slave_ips:
|
||||
sys.exit('No IPs were allocated for environment!')
|
||||
|
|
|
@ -89,7 +89,7 @@ template:
|
|||
gateway: +1
|
||||
|
||||
# Libvirt bridge will get this IP address
|
||||
l2_network_device: +1
|
||||
default_l2_network_device: +1
|
||||
|
||||
# IP ranges, reserved in the address pool.
|
||||
# - 'default' IP range stands for 'default' nodegroup in Fuel.
|
||||
|
@ -109,7 +109,7 @@ template:
|
|||
vlan_start: 0
|
||||
ip_reserved:
|
||||
gateway: +1
|
||||
l2_network_device: +1 # l2_network_device will get this IP address
|
||||
default_l2_network_device: +1 # l2_network_device will get this IP address
|
||||
ip_ranges:
|
||||
default: [+2, +127] # public IP range for 'default' nodegroup name
|
||||
floating: [+128, -2]
|
||||
|
|
|
@ -36,7 +36,7 @@ template:
|
|||
gateway: +1
|
||||
|
||||
# Libvirt bridge will get this IP address
|
||||
l2_network_device: +1
|
||||
rack-01_l2_network_device: +1
|
||||
|
||||
# IP ranges, reserved in the address pool.
|
||||
# - 'default' IP range stands for 'default' nodegroup in Fuel.
|
||||
|
@ -56,7 +56,7 @@ template:
|
|||
vlan_start: 0
|
||||
ip_reserved:
|
||||
gateway: +1
|
||||
l2_network_device: +1 # l2_network_device will get this IP address
|
||||
rack-01_l2_network_device: +1 # l2_network_device will get this IP address
|
||||
ip_ranges:
|
||||
default: [+2, +127] # public IP range for 'default' nodegroup name
|
||||
floating: [+128, -2]
|
||||
|
|
|
@ -48,7 +48,7 @@ template:
|
|||
tag: 0
|
||||
ip_reserved:
|
||||
gateway: +1
|
||||
l2_network_device: +1
|
||||
rack-01_l2_network_device: +1
|
||||
ip_ranges:
|
||||
default: [+2, -2]
|
||||
dhcp: [+2, -2]
|
||||
|
@ -58,7 +58,7 @@ template:
|
|||
tag: 0
|
||||
ip_reserved:
|
||||
gateway: +1
|
||||
l2_network_device: +1
|
||||
rack-01_l2_network_device: +1
|
||||
ip_ranges:
|
||||
default: [+2, +127]
|
||||
floating: [+128, -2]
|
||||
|
@ -67,19 +67,19 @@ template:
|
|||
params:
|
||||
tag: 101
|
||||
ip_reserved:
|
||||
l2_network_device: +1
|
||||
rack-01_l2_network_device: +1
|
||||
management-pool01:
|
||||
net: *pool_default
|
||||
params:
|
||||
tag: 102
|
||||
ip_reserved:
|
||||
l2_network_device: +1
|
||||
rack-01_l2_network_device: +1
|
||||
private-pool01:
|
||||
net: *pool_default
|
||||
params:
|
||||
tag: 103
|
||||
ip_reserved:
|
||||
l2_network_device: +1
|
||||
rack-01_l2_network_device: +1
|
||||
|
||||
groups:
|
||||
- name: rack-01
|
||||
|
|
|
@ -65,8 +65,8 @@ class TestDefaultTemplate(TestCase):
|
|||
- 2
|
||||
- -2
|
||||
ip_reserved:
|
||||
default_l2_network_device: 1
|
||||
gateway: 1
|
||||
l2_network_device: 1
|
||||
management:
|
||||
net: 10.109.0.0/16:24
|
||||
params:
|
||||
|
@ -75,8 +75,8 @@ class TestDefaultTemplate(TestCase):
|
|||
- 2
|
||||
- -2
|
||||
ip_reserved:
|
||||
default_l2_network_device: 1
|
||||
gateway: 1
|
||||
l2_network_device: 1
|
||||
private:
|
||||
net: 10.109.0.0/16:24
|
||||
params:
|
||||
|
@ -85,8 +85,8 @@ class TestDefaultTemplate(TestCase):
|
|||
- 2
|
||||
- -2
|
||||
ip_reserved:
|
||||
default_l2_network_device: 1
|
||||
gateway: 1
|
||||
l2_network_device: 1
|
||||
vlan_end: 999
|
||||
vlan_start: 900
|
||||
public:
|
||||
|
@ -100,8 +100,8 @@ class TestDefaultTemplate(TestCase):
|
|||
- 128
|
||||
- -2
|
||||
ip_reserved:
|
||||
default_l2_network_device: 1
|
||||
gateway: 1
|
||||
l2_network_device: 1
|
||||
storage:
|
||||
net: 10.109.0.0/16:24
|
||||
params:
|
||||
|
@ -110,8 +110,8 @@ class TestDefaultTemplate(TestCase):
|
|||
- 2
|
||||
- -2
|
||||
ip_reserved:
|
||||
default_l2_network_device: 1
|
||||
gateway: 1
|
||||
l2_network_device: 1
|
||||
env_name: fuel_system_test
|
||||
groups:
|
||||
- driver:
|
||||
|
@ -302,8 +302,8 @@ class TestDefaultTemplate(TestCase):
|
|||
- 2
|
||||
- -2
|
||||
ip_reserved:
|
||||
default_l2_network_device: 1
|
||||
gateway: 1
|
||||
l2_network_device: 1
|
||||
management:
|
||||
net: 10.109.0.0/16:24
|
||||
params:
|
||||
|
@ -312,8 +312,8 @@ class TestDefaultTemplate(TestCase):
|
|||
- 2
|
||||
- -2
|
||||
ip_reserved:
|
||||
default_l2_network_device: 1
|
||||
gateway: 1
|
||||
l2_network_device: 1
|
||||
private:
|
||||
net: 10.109.0.0/16:24
|
||||
params:
|
||||
|
@ -322,8 +322,8 @@ class TestDefaultTemplate(TestCase):
|
|||
- 2
|
||||
- -2
|
||||
ip_reserved:
|
||||
default_l2_network_device: 1
|
||||
gateway: 1
|
||||
l2_network_device: 1
|
||||
vlan_end: 999
|
||||
vlan_start: 900
|
||||
public:
|
||||
|
@ -337,8 +337,8 @@ class TestDefaultTemplate(TestCase):
|
|||
- 128
|
||||
- -2
|
||||
ip_reserved:
|
||||
default_l2_network_device: 1
|
||||
gateway: 1
|
||||
l2_network_device: 1
|
||||
storage:
|
||||
net: 10.109.0.0/16:24
|
||||
params:
|
||||
|
@ -347,8 +347,8 @@ class TestDefaultTemplate(TestCase):
|
|||
- 2
|
||||
- -2
|
||||
ip_reserved:
|
||||
default_l2_network_device: 1
|
||||
gateway: 1
|
||||
l2_network_device: 1
|
||||
env_name: fuel_system_test
|
||||
groups:
|
||||
- driver:
|
||||
|
|
|
@ -31,7 +31,7 @@ example, change it for your purposes.
|
|||
vlan_start: 1210
|
||||
ip_reserved:
|
||||
gateway: +1
|
||||
l2_network_device: +1
|
||||
default_l2_network_device: +1
|
||||
ip_ranges:
|
||||
dhcp: [+128, -32]
|
||||
rack-01: [+2, +127]
|
||||
|
|
|
@ -119,7 +119,7 @@ Additional details about this template:
|
|||
vlan_start: 0
|
||||
ip_reserved:
|
||||
gateway: +1
|
||||
l2_network_device: +1 # l2_network_device will get this IP address
|
||||
default_l2_network_device: +1 # l2_network_device will get this IP address
|
||||
ip_ranges:
|
||||
default: [+2, -2] # admin IP range for 'default' nodegroup name
|
||||
|
||||
|
@ -129,7 +129,7 @@ Additional details about this template:
|
|||
vlan_start: 200
|
||||
ip_reserved:
|
||||
gateway: +1
|
||||
l2_network_device: +1 # l2_network_device will get this IP address
|
||||
default_l2_network_device: +1 # l2_network_device will get this IP address
|
||||
ip_ranges:
|
||||
default: [+2, +127] # public IP range for 'default' nodegroup name
|
||||
floating: [+128, -2]
|
||||
|
|
|
@ -36,7 +36,7 @@ All slave nodes have only two network interfaces:
|
|||
params:
|
||||
ip_reserved:
|
||||
gateway: +1
|
||||
l2_network_device: +1 # l2_network_device will get this IP address
|
||||
default_l2_network_device: +1 # l2_network_device will get this IP address
|
||||
ip_ranges:
|
||||
default: [+2, -2] # admin IP range for 'default' nodegroup name
|
||||
|
||||
|
@ -46,7 +46,7 @@ All slave nodes have only two network interfaces:
|
|||
vlan_start: 100
|
||||
ip_reserved:
|
||||
gateway: +1
|
||||
l2_network_device: +1 # l2_network_device will get this IP address
|
||||
default_l2_network_device: +1 # l2_network_device will get this IP address
|
||||
ip_ranges:
|
||||
default: [+2, +127] # public IP range for 'default' nodegroup name
|
||||
floating: [+128, -2]
|
||||
|
|
Loading…
Reference in New Issue