diff --git a/devops/driver/libvirt/libvirt_driver.py b/devops/driver/libvirt/libvirt_driver.py index afb2779a..392a4d56 100644 --- a/devops/driver/libvirt/libvirt_driver.py +++ b/devops/driver/libvirt/libvirt_driver.py @@ -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) diff --git a/devops/driver/libvirt/libvirt_xml_builder.py b/devops/driver/libvirt/libvirt_xml_builder.py index e3baec78..c4cde9ef 100644 --- a/devops/driver/libvirt/libvirt_xml_builder.py +++ b/devops/driver/libvirt/libvirt_xml_builder.py @@ -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) diff --git a/devops/models/network.py b/devops/models/network.py index bd80ff14..4c768f58 100644 --- a/devops/models/network.py +++ b/devops/models/network.py @@ -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,