def _get_dhcp_hosts(self, context):
     """Get network's hosts config in dhcp-host format."""
     hosts = []
     for ph in self._get_phy_hosts(context):
         ip = db.phy_pxe_ip_get_by_phy_host_id(context, ph.id)
         if ip:
             hosts.append(_host_dhcp(ph.pxe_mac_address, "phyhost-%s" % ph.id, ip.address))
     return '\n'.join(hosts)
 def attach_volume(self, instance_name, device_path, mountpoint):
     LOG.info("attach_volume: instance_name=%s device_path=%s mountpoint=%s", instance_name,device_path,mountpoint)
     i = self._get_phy_host_by_instance_name(instance_name)
     if not i:
         raise exception.InstanceNotFound(instance_id=instance_name)
     ctx = nova_context.get_admin_context()
     pxe_ip = db.phy_pxe_ip_get_by_phy_host_id(ctx, i.id)
     if not pxe_ip:
         if not FLAGS.physical_use_unsafe_iscsi:
             raise exception.Error("No fixed PXE IP is associated to phy_instance:%s" % instance_name)
     volume_id = self._volume_id_from_device_path(device_path)
     tid = volume_id
     mpstr = mountpoint.replace('/', '.').strip('.')
     iqn = 'iqn.2010-10.org.openstack:%s-%s' % (tid, mpstr)
     self._create_iscsi_export_tgtadm(device_path, tid, iqn)
     if pxe_ip:
         self._allow_iscsi_tgtadm(tid, pxe_ip.address)
     else:
         # unsafe
         self._allow_iscsi_tgtadm(tid, 'ALL')
     return True