'Create a domain.
Either domain or xml must be passed in. If both are passed, then
the domain definition is overwritten from the xml.
:returns guest.Guest: Guest just created'

def _create_domain(self, xml=None, domain=None, power_on=True, pause=False, post_xml_callback=None):

    if xml:
        guest = libvirt_guest.Guest.create(xml, self._host)
        if (post_xml_callback is not None):
            post_xml_callback()
    else:
        guest = libvirt_guest.Guest(domain)
    if (power_on or pause):
        guest.launch(pause=pause)
    if (not utils.is_neutron()):
        guest.enable_hairpin()
    return guest
