clienttest.java revision 5c65eaa08f2ec993a19c9bef6e5463918e40e0eb
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford/*
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * Sample client for the VirtualBox web service, written in Java
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * (raw web service variant).
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford *
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * Run the VirtualBox web service server first; see the VirtualBox
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * SDK reference for details.
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford *
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * Copyright (C) 2008-2010 Oracle Corporation
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford *
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * The following license applies to this file only:
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford *
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * Permission is hereby granted, free of charge, to any person
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * obtaining a copy of this software and associated documentation
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * files (the "Software"), to deal in the Software without
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * restriction, including without limitation the rights to use,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * copy, modify, merge, publish, distribute, sublicense, and/or
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * sell copies of the Software, and to permit persons to whom the
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * Software is furnished to do so, subject to the following conditions:
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford *
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * The above copyright notice and this permission notice shall be
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * included in all copies or substantial portions of the Software.
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford *
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford * OTHER DEALINGS IN THE SOFTWARE.
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford */
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamfordimport org.virtualbox.www.Service.VboxService;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamfordimport org.virtualbox.www.Service.VboxServiceLocator;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamfordimport org.virtualbox.www.VboxPortType;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamfordpublic class clienttest
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford{
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford private VboxService _service;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford private VboxPortType _port;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford private String _oVbox;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford public clienttest()
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford try
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // instantiate the webservice in instance data; the classes
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // VboxServiceLocator and VboxPortType have been created
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // by the WSDL2Java helper that you should have run prior
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // to compiling this example, as described in the User Manual.
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford _service = new VboxServiceLocator();
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford _port = _service.getvboxServicePort();
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // From now on, we can call any method in the webservice by
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // prefixing it with "port."
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // First step is always to log on to the webservice. This
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // returns a managed object reference to the webservice's
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // global instance of IVirtualBox, which in turn contains
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // the most important methods provided by the Main API.
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford _oVbox = _port.IWebsessionManager_logon("", "");
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // Call IVirtualBox::getVersion and print out the result
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String version = _port.IVirtualBox_getVersion(_oVbox);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford System.out.println("Initialized connection to VirtualBox version " + version);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford catch (Exception e)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford e.printStackTrace();
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford public void showVMs()
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford try
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // Call IVirtualBox::getMachines, which yields an array
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // of managed object references to all machines which have
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // been registered:
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String[] aMachines = _port.IVirtualBox_getMachines2(_oVbox);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // Walk through this array and, for each machine, call
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // IMachine::getName (accessor method to the "name" attribute)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford for (int i = 0; i < aMachines.length; i++)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String oMachine = aMachines[i];
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String machinename = _port.IMachine_getName(oMachine);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford System.out.println("Machine " + i + ": " + oMachine + " - " + machinename);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // release managed object reference
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford _port.IManagedObjectRef_release(oMachine);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford catch (Exception e)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford e.printStackTrace();
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford public void listHostInfo()
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford try
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String oHost = _port.IVirtualBox_getHost(_oVbox);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford org.apache.axis.types.UnsignedInt uProcCount = _port.IHost_getProcessorCount(oHost);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford System.out.println("Processor count: " + uProcCount);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String oCollector = _port.IVirtualBox_getPerformanceCollector(_oVbox);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String aobj[] = {oHost};
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String astrMetrics[] = {"*"};
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String aMetrics[] = {};
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford aMetrics = _port.IPerformanceCollector_getMetrics(oCollector,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford astrMetrics,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford aobj);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// String astrMetricNames[] = { "*" };
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// String aObjects[];
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// String aRetNames[];
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// int aRetIndices[];
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// int aRetLengths[];
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// int aRetData[];
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// int rc = _port.ICollector_queryMetricsData(oCollector,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// aObjects,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// aRetNames,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// aRetObjects,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// aRetIndices,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// aRetLengths,
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford// aRetData);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford//
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford/*
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford Bstr metricNames[] = { L"*" };
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford com::SafeArray<BSTR> metrics (1);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford metricNames[0].cloneTo (&metrics [0]);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford com::SafeArray<BSTR> retNames;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford com::SafeIfaceArray<IUnknown> retObjects;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford com::SafeArray<ULONG> retIndices;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford com::SafeArray<ULONG> retLengths;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford com::SafeArray<LONG> retData;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford CHECK_ERROR (collector, QueryMetricsData(ComSafeArrayAsInParam(metrics),
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford ComSafeArrayInArg(objects),
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford ComSafeArrayAsOutParam(retNames),
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford ComSafeArrayAsOutParam(retObjects),
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford ComSafeArrayAsOutParam(retIndices),
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford ComSafeArrayAsOutParam(retLengths),
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford ComSafeArrayAsOutParam(retData)) );
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford*/
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford catch (Exception e)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford e.printStackTrace();
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford public void startVM(String strVM)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String oSession = "";
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford Boolean fSessionOpen = false;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford try
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // this is pretty much what VBoxManage does to start a VM
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String oMachine = "";
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford Boolean fOK = false;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford oSession = _port.IWebsessionManager_getSessionObject(_oVbox);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // first assume we were given a UUID
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford try
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford oMachine = _port.IVirtualBox_getMachine(_oVbox, strVM);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford fOK = true;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford catch (Exception e)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford if (!fOK)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford try
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // or try by name
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford oMachine = _port.IVirtualBox_findMachine(_oVbox, strVM);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford fOK = true;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford catch (Exception e)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford if (!fOK)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford System.out.println("Error: can't find VM \"" + strVM + "\"");
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford else
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String uuid = _port.IMachine_getId(oMachine);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String sessionType = "gui";
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String env = "DISPLAY=:0.0";
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford String oProgress = _port.IVirtualBox_openRemoteSession(_oVbox, oSession, uuid, sessionType, env);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford fSessionOpen = true;
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford System.out.println("Session for VM " + uuid + " is opening...");
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford _port.IProgress_waitForCompletion(oProgress, 10000);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford int rc = _port.IProgress_getResultCode(oProgress).intValue();
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford if (rc != 0)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford System.out.println("Session failed!");
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford catch (Exception e)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford e.printStackTrace();
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford if (fSessionOpen)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford try
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford _port.ISession_close(oSession);
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford catch (Exception e)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford }
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford public void cleanup()
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford try
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford if (_oVbox.length() > 0)
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford {
bbe59b9e7b19daeef0e63ffa77aaefb67aceb85eTony Bamford // log off
_port.IWebsessionManager_logoff(_oVbox);
_oVbox = null;
System.out.println("Logged off.");
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void printArgs()
{
System.out.println( "Usage: java clienttest <mode> ..." +
"\nwith <mode> being:" +
"\n show vms list installed virtual machines" +
"\n list hostinfo list host info" +
"\n startvm <vmname|uuid> start the given virtual machine");
}
public static void main(String[] args)
{
if (args.length < 1)
{
System.out.println("Error: Must specify at least one argument.");
printArgs();
}
else
{
clienttest c = new clienttest();
if (args[0].equals("show"))
{
if (args.length == 2)
{
if (args[1].equals("vms"))
c.showVMs();
else
System.out.println("Error: Unknown argument to \"show\": \"" + args[1] + "\".");
}
else
System.out.println("Error: Missing argument to \"show\" command");
}
else if (args[0].equals("list"))
{
if (args.length == 2)
{
if (args[1].equals("hostinfo"))
c.listHostInfo();
else
System.out.println("Error: Unknown argument to \"show\": \"" + args[1] + "\".");
}
else
System.out.println("Error: Missing argument to \"show\" command");
}
else if (args[0].equals("startvm"))
{
if (args.length == 2)
{
c.startVM(args[1]);
}
else
System.out.println("Error: Missing argument to \"startvm\" command");
}
else
System.out.println("Error: Unknown command: \"" + args[0] + "\".");
c.cleanup();
}
}
}