I debugged the call that returns an error. That is ret = libvirtmod.virDomainDefineXML(self._o, xml). I also printed the xml given as argument:

Code:
<domain type='kvm'>
  <name>ubuntu</name>
  <memory>131072</memory>
  <vcpu>1</vcpu>
  <os>
    <type>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <interface type='bridge'>
      <source bridge='br0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' listen='127.0.0.1'/>
    <disk type='file' device='disk'>
      <source file='/root/ubuntu-kvm/tmpnMJX2n.qcow2' />
      <target dev='hda' />
    </disk>
  </devices>
</domain>
Does this xml look like it should?