def block(self): """Block all traffic in network""" filter_xml = LibvirtXMLBuilder.build_network_filter( name=self.network_name, uuid=self._nwfilter.UUIDString(), rule=dict(action='drop', direction='inout', priority='-1000')) self.driver.conn.nwfilterDefineXML(filter_xml)
def define(self): # define filter first filter_xml = LibvirtXMLBuilder.build_network_filter( name=self.network_name) self.driver.conn.nwfilterDefineXML(filter_xml) bridge_name = self.driver.get_available_device_name(prefix='virbr') # TODO(ddmitriev): check if 'vlan' package installed # Define tagged interfaces on the bridge for vlanid in self.vlan_ifaces: self.iface_define(name=bridge_name, vlanid=vlanid) # Define libvirt network ip_network_address = None ip_network_prefixlen = None dhcp_range_start = None 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') # Workaround for fuel-qa compatibility, if 'l2_network_device' # address was not reserved in the YAML template if not ip_network_address: ip_network_address = str(self.address_pool.ip_network[1]) ip_network_prefixlen = str(self.address_pool.ip_network.prefixlen) 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: for address in interface.addresses: ip_addr = netaddr.IPAddress(address.ip_address) if ip_addr in self.address_pool.ip_network: addresses.append( dict(mac=str(interface.mac_address), ip=str(address.ip_address), name=interface.node.name)) xml = LibvirtXMLBuilder.build_network_xml( network_name=self.network_name, bridge_name=bridge_name, addresses=addresses, forward=self.forward.mode, ip_network_address=ip_network_address, ip_network_prefixlen=ip_network_prefixlen, dhcp_range_start=dhcp_range_start, dhcp_range_end=dhcp_range_end, stp=self.driver.stp, has_pxe_server=self.has_pxe_server, has_dhcp_server=self.has_dhcp_server, tftp_root_dir=self.tftp_root_dir, ) ret = self.driver.conn.networkDefineXML(xml) ret.setAutostart(True) self.uuid = ret.UUIDString() super(LibvirtL2NetworkDevice, self).define()
def unblock(self): """Unblock all traffic in network""" filter_xml = LibvirtXMLBuilder.build_network_filter( name=self.network_name, uuid=self._nwfilter.UUIDString()) self.driver.conn.nwfilterDefineXML(filter_xml)
def define(self): # define filter first filter_xml = LibvirtXMLBuilder.build_network_filter( name=self.network_name) self.driver.conn.nwfilterDefineXML(filter_xml) bridge_name = self.driver.get_available_device_name(prefix='virbr') # TODO(ddmitriev): check if 'vlan' package installed # Define tagged interfaces on the bridge for vlanid in self.vlan_ifaces: self.iface_define(name=bridge_name, vlanid=vlanid) # Define libvirt network ip_network_address = None ip_network_prefixlen = None dhcp_range_start = None 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') # Workaround for fuel-qa compatibility, if 'l2_network_device' # address was not reserved in the YAML template if not ip_network_address: ip_network_address = str(self.address_pool.ip_network[1]) ip_network_prefixlen = str(self.address_pool.ip_network.prefixlen) 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: for address in interface.addresses: ip_addr = netaddr.IPAddress(address.ip_address) if ip_addr in self.address_pool.ip_network: addresses.append(dict( mac=str(interface.mac_address), ip=str(address.ip_address), name=interface.node.name )) xml = LibvirtXMLBuilder.build_network_xml( network_name=self.network_name, bridge_name=bridge_name, addresses=addresses, forward=self.forward.mode, ip_network_address=ip_network_address, ip_network_prefixlen=ip_network_prefixlen, dhcp_range_start=dhcp_range_start, dhcp_range_end=dhcp_range_end, stp=self.driver.stp, has_pxe_server=self.has_pxe_server, has_dhcp_server=self.has_dhcp_server, tftp_root_dir=self.tftp_root_dir, ) ret = self.driver.conn.networkDefineXML(xml) ret.setAutostart(True) self.uuid = ret.UUIDString() super(LibvirtL2NetworkDevice, self).define()