Merge "Use DHCP ip ranges for assign IPs to nodes from this range"

This commit is contained in:
Jenkins
2016-10-05 05:52:58 +00:00
committed by Gerrit Code Review
3 changed files with 20 additions and 3 deletions

View File

@@ -1141,7 +1141,6 @@ class LibvirtNode(node.Node):
acpi=self.driver.enable_acpi,
numa=self.numa,
)
logger.debug(node_xml)
self.uuid = self.driver.conn.defineXML(node_xml).UUIDString()
if self.cloud_init_volume_name is not None:
@@ -1388,7 +1387,6 @@ class LibvirtNode(node.Node):
)
domain = self._libvirt_node
logger.debug(xml)
logger.debug(domain.state(0))
domain.snapshotCreateXML(xml, create_xml_flag)

View File

@@ -18,6 +18,7 @@ import hashlib
import six
from devops.helpers import xmlgenerator
from devops import logger
class LibvirtXMLBuilder(object):
@@ -88,6 +89,7 @@ class LibvirtXMLBuilder(object):
if has_pxe_server:
network_xml.bootp(file='pxelinux.0')
logger.debug(str(network_xml))
return str(network_xml)
@classmethod
@@ -108,6 +110,7 @@ class LibvirtXMLBuilder(object):
with volume_xml.backingStore:
volume_xml.path(backing_store_path)
volume_xml.format(type=backing_store_format)
logger.debug(str(volume_xml))
return str(volume_xml)
@classmethod
@@ -141,6 +144,7 @@ class LibvirtXMLBuilder(object):
with xml_builder.disk(name=disk['disk_target_dev'],
snapshot='external'):
xml_builder.source(file=disk['disk_volume_path'])
logger.debug(str(xml_builder))
return str(xml_builder)
@classmethod
@@ -210,6 +214,7 @@ class LibvirtXMLBuilder(object):
if rule:
with filter_xml.rule(**rule):
filter_xml.all()
logger.debug(str(filter_xml))
return str(filter_xml)
@classmethod
@@ -229,6 +234,7 @@ class LibvirtXMLBuilder(object):
if rule:
with filter_xml.rule(**rule):
filter_xml.all()
logger.debug(str(filter_xml))
return str(filter_xml)
@classmethod
@@ -326,6 +332,7 @@ class LibvirtXMLBuilder(object):
node_xml.target(port='0')
with node_xml.console(type='pty'):
node_xml.target(type='serial', port='0')
logger.debug(str(node_xml))
return str(node_xml)
@classmethod
@@ -358,4 +365,5 @@ class LibvirtXMLBuilder(object):
if (ip is not None) and (prefix is not None):
with interface_xml.protocol(family='ipv4'):
interface_xml.ip(address=ip, prefix=prefix)
logger.debug(str(interface_xml))
return str(interface_xml)

View File

@@ -194,10 +194,21 @@ class AddressPool(base.ParamedModel, base.BaseModel):
return None
def next_ip(self):
"""Get next IP address from the address pool
If 'dhcp' ip_range specified for the address pool, then the
IP addresses will be taken from this pool.
Else, IP addresses will be taken from the range
[ x.x.x.x + 2 : x.x.x.x - 2 ]
"""
range_start = netaddr.IPAddress(
self.ip_range_start('dhcp') or self.ip_network[2])
range_end = netaddr.IPAddress(
self.ip_range_end('dhcp') or self.ip_network[-2])
for ip in self.ip_network.iter_hosts():
# if ip < self.ip_pool_start or ip > self.ip_pool_end:
# Skip net, gw and broadcast addresses in the address pool
if ip < self.ip_network[2] or ip > self.ip_network[-2]:
if ip < range_start or ip > range_end:
continue
already_exists = Address.objects.filter(
interface__l2_network_device__address_pool=self,