I got the Java bindings for the enterprise version and have been trying to
start a Windows guest (HVM) with them. The code compiles and runs and the
output of "xm list" shows the new VM. However, the VM does not appear to
run. It shows no time in the "xm list" output and I don't get a window
showing it booting. To get rid of it, I have to do "xm destroy" and "xm
delete" commands. I've been trying to put it all together using examples
from different languages starting linux guests and so far I haven't found
the right incantation.
Can someone point out what I'm doing wrong?
Thanks a lot!
-matthew
CODE (minus exception handling):
Connection c = new Connection ("http://localhost:9363", null, null);
//
// Set up VM record with fields from config file.
//
VM.Record rec = new VM.Record ();
rec.actionsAfterCrash = Types.OnCrashBehaviour.destroy;
rec.actionsAfterReboot = Types.OnNormalExit.restart;
rec.actionsAfterShutdown = Types.OnNormalExit.destroy;
rec.affinity = null;
Set <Types.VmOperations> ops = new HashSet <Types.VmOperations> ();
ops.add (Types.VmOperations.DESTROY);
ops.add (Types.VmOperations.PAUSE);
ops.add (Types.VmOperations.RESUME);
ops.add (Types.VmOperations.START);
ops.add (Types.VmOperations.UNPAUSE);
rec.allowedOperations = ops;
rec.consoles = new HashSet <Console> ();
rec.crashDumps = new HashSet <Crashdump> ();
rec.currentOperations = new HashMap <String, Types.VmOperations>
();
rec.domarch = null;
rec.domid = new Long (-1);
rec.guestMetrics = null;
rec.powerState = Types.VmPowerState.RUNNING;
rec.nameLabel = "winvista";
rec.HVMBootParams = new HashMap <String, String> ();
rec.HVMBootParams.put ("order", "c");
rec.HVMBootPolicy = "BIOS order";
rec.HVMShadowMultiplier = new Double(1.0);
rec.isATemplate = false;
rec.isControlDomain = false;
rec.lastBootCPUFlags = new HashMap <String, String> ();
rec.memoryDynamicMax = new Long (1024*1024*1024);
rec.memoryStaticMax = new Long (1024*1024*1024);
rec.PVKernel = "/usr/lib/xen/boot/hvmloader";
rec.platform = new HashMap <String, String> ();
//
// I haven't found documenation for what should go here so I hope
there's
// no harm in putting everything in and letting Xend sort it out. I
haven't
// seen any errors so far.
//
rec.platform.put ("sdl", "1");
rec.platform.put ("usb", "0");
rec.platform.put ("monitor", "0");
rec.platform.put ("acpi", "1");
rec.platform.put ("pae", "1");
rec.platform.put ("device_model", "/usr/lib/xen/bin/qemu-dm");
rec.platform.put ("stdvga", "0");
rec.platform.put ("vncunused", "1");
rec.platform.put ("usbdevice", "tablet");
rec.platform.put ("localtime", "0");
rec.platform.put ("apic", "1");
rec.platform.put ("rtc_timeoffset", "0");
rec.platform.put ("serial", "pty");
rec.platform.put ("nographic", "0");
rec.platform.put ("vnc", "0");
rec.platform.put ("boot", "cda");
rec.platform.put ("isa", "0");
rec.VCPUsAtStartup = new Long(1);
rec.VCPUsMax = new Long(1);
VM vm = VM.create (c, rec);
System.out.println ("VM Created : "+vm.toWireString());
//
// Setup and create VDI
//
Set <SR> srs = SR.getByNameLabel (con, "Local");
VDI.Record vdiRec = new VDI.Record ();
vdiRec.nameLabel = "disk";
vdiRec.parent = null;
vdiRec.sharable = false;
vdiRec.readOnly = false;
//
// /dev/vgvms/vista0 is a logical volume
//
vdiRec.location = "phy:/dev/vgvms/vista0";
vdiRec.otherConfig = new HashMap <String, String> ();
vdiRec.otherConfig.put ("location", "phy:/dev/vgvms/vista0");
vdiRec.SR = srs.iterator().next();
VDI vdi = VDI.create (c vdiRec);
//
// Set up and create a VDB
//
VBD.Record vbdRecord = new VBD.Record ();
vbdRecord.device = "hda";
vbdRecord.bootable = true;
vbdRecord.mode = Types.VbdMode.RW;
vbdRecord.type = Types.VbdType.DISK;
vbdRecord.VM = vm;
vbdRecord.VDI = vdi;
VBD vbd = VBD.create (c, vbdRecord);
//
// Create a console
Console.Record cRec = new Console.Record ();
cRec.protocol = Types.ConsoleProtocol.RFB;
cRec.otherConfig = new HashMap <String, String> ();
//cRec.otherConfig.put ("vnc", "0");
cRec.otherConfig.put ("vncunused", "1");
cRec.otherConfig.put ("vncpassword", "");
cRec.otherConfig.put ("serial", "pty");
//cRec.otherConfig.put ("stdvga", "0");
//cRec.otherConfig.put ("monitor", "1");
cRec.VM = vm;
Console console = Console.create (c, cRec);
//
// Now start the VM.
//
// Xend doesn't accept the third argument so the VM class was modified
// to not send it. I haven't changed the method signature yet because
// I'm still working on it all.
//
vm.start (c, false, false);
________________________________
From: Michal Krysinski [mailto:rozbudowywowywacz@xxxxxxxxx]
Sent: Tuesday, August 05, 2008 5:49 AM
To: xen-api@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Xen-API] What happened to the Java bindings?
unfortunately i don't.
what i did for sure was changing some constants to lowercase:
Types.java
public class Types{
...
public enum OnNormalExit{
//everyting to lowercase here
}
public enum OnCrashBehaviour{
// lowercase
}
...
}
it is likely that other enums have to be modified as well (these
were enough for my purposes)
cheers, m
2008/8/5 Jesse Pasichnyk <jesse@xxxxxxxxxxxxx>
Do you have documented the differences you had to make
changes for?
Thanks,
Jesse
From: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
[mailto:xen-api-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Michal Krysinski
Sent: Monday, August 04, 2008 2:19 PM
To: Matthew Donovan
Cc: xen-api@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Xen-API] What happened to the Java bindings?
hey,
http://community.citrix.com/display/cdn/XenServer+SDK here
are the bindings. they're for enterprise version, but by applying slight
modifications I was able to use them with open source xen.
cheers, m
2008/8/4 Matthew Donovan <matthew@xxxxxxxxxxxxxx>
I've found numerous references to some XenAPI Java
Bindings but the link
(http://www.cl.cam.ac.uk/~tw275/java-binding-source.tar.gz
<http://www.cl.cam.ac.uk/%7Etw275/java-binding-source.tar.gz> ) seems to be
dead.
Is there an updated link? Is the code just gone?
Thanks
-matthew
_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api
_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api
|