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

[Xen-API] Problem starting a Windows Guest with Java bindings



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


 


Rackspace

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