[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-API] XenAPI Python Question



Hello,

I am creating a script that spins up VMs, including the creation of VDIs and VBDs, respectively. But I have came across an issue with it and have been following along the documentation, found here: http://xapi-project.github.io/xen-api/overview.html

When I go to create a disk image, it constantly fails:

Collecting info on the VM Specs.....
Connection Successful!
Checking for template: CentOS 7
Server has 75 VM objects (this includes templates):
Found: OpaqueRef:858d7cdb-6882-7055-74d1-2e6162533d59 CentOS 7
('Selected template: ', 'CentOS 7')
Installing new VM from the template
Adding non-interactive to the kernel commandline
Choosing an SR to instantiate the VM's disks
Choosing SR: NFS VM disks (uuid 95a58c17-6a0d-1d61-33e2-e445a5e147b3)
Rewriting the disk provisioning XML
Creating Disk for VM..... Test
Connection Successful!
Caught ['UUID_INVALID', 'VDI', '95a58c17-6a0d-1d61-33e2-e445a5e147b3']:
Traceback (most recent call last):
  File "/Users/ryankahil/Xen-Builder/bsdxenbuilder.py", line 148, in create_vdi
    src_vdi = session.xenapi.VDI.get_by_uuid(vdi_uuid)
  File "/Library/Python/2.7/site-packages/XenAPI.py", line 229, in __call__
    return self.__send(self.__name, args)
  File "/Library/Python/2.7/site-packages/XenAPI.py", line 133, in xenapi_request
    result = _parse_result(getattr(self, methodname)(*full_params))
  File "/Library/Python/2.7/site-packages/XenAPI.py", line 203, in _parse_result
    raise Failure(result['ErrorDescription'])
Failure: ['UUID_INVALID', 'VDI', '95a58c17-6a0d-1d61-33e2-e445a5e147b3’]

I am following the documentation as best as possible and can’t seem to find out why the UUID is invalid. The SR I am using is NFS if that helps. And have taken some code snippets for VDI and VBD creations in your GitHub repo to see if there is something I am doing wrong but again, the same issue. Here is a snippet of my code:

def create_vdi(ctx,name,sr,readonly,hdspace,diskimage,vdi_uuid):
    click.echo("Creating Disk for VM..... " + name)
    session = xen_session()
    vdi = None
    try:
        src_vdi = session.xenapi.VDI.get_by_uuid(vdi_uuid)
       # sr = session.xenapi.VDI.get_SR(src_vdi)
        vdi_args = session.xenapi.VDI.get_record(src_vdi)
        vdi = session.xenapi.VDI.create(vdi_args)
        create_vbd(name,vdi,readonly,userdevice)
    except Exception, e:
        print("Caught %s: " % str(e))
        traceback.print_exc()

The vdi_uuid is provided in another method:

        sr_pool = session.xenapi.pool.get_all()[0]
        default_sr = session.xenapi.pool.get_default_SR(sr_pool)
        default_sr = session.xenapi.SR.get_record(default_sr)
        print("Choosing SR: %s (uuid %s)" % (default_sr['name_label'], default_sr['uuid']))
        print("Rewriting the disk provisioning XML")
        spec = provision.getProvisionSpec(session, vm)
        spec.setSR(default_sr['uuid'])
        provision.setProvisionSpec(session, vm, spec)


        create = session.xenapi.VM.provision(vm)
        session.xenapi.VM.start(vm,False, True)
        vdi_uuid = default_sr['uuid’]

I have noticed that once the VM is created (in a stopped state due to having no boot disk), simply attaching a DVD drive allows me to install CentOS. But is there a way to programmatically do this with XenAPI (I thought creating the VDI/VBD does this for me)?

Thanks,
Ryan
_______________________________________________
Xen-api mailing list
Xen-api@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-api

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.