예제 #1
0
        public VirtualDeviceConfigSpec Controller(int _bus_number, int _unit_number, int _controller_key)
        {
            VirtualLsiLogicController scsi = new VirtualLsiLogicController();
            VirtualDeviceConnectInfo  ci   = new VirtualDeviceConnectInfo();

            ci.startConnected                = false;
            scsi.key                         = _controller_key;
            scsi.controllerKey               = 100;
            scsi.controllerKeySpecified      = true;
            scsi.busNumber                   = _bus_number;
            scsi.hotAddRemove                = true;
            scsi.hotAddRemoveSpecified       = true;
            scsi.scsiCtlrUnitNumber          = 7;
            scsi.scsiCtlrUnitNumberSpecified = true;
            scsi.sharedBus                   = VirtualSCSISharing.noSharing;
            scsi.unitNumber                  = _unit_number;
            scsi.unitNumberSpecified         = true;
            scsi.connectable                 = ci;
            VirtualDeviceConfigSpec dcs = new VirtualDeviceConfigSpec();

            dcs.device             = scsi;
            dcs.operation          = VirtualDeviceConfigSpecOperation.add;
            dcs.operationSpecified = true;
            return(dcs);
        }
예제 #2
0
        public VirtualDeviceConfigSpec Controller(bool Is2012)
        {
            VirtualSCSIController scsi = new VirtualSCSIController();

            if (Is2012)
            {
                scsi = new VirtualLsiLogicSASController();
            }
            else
            {
                scsi = new VirtualLsiLogicController();
            }
            VirtualDeviceConnectInfo ci = new VirtualDeviceConnectInfo();

            ci.startConnected                = false;
            scsi.key                         = 1000;
            scsi.controllerKey               = 100;
            scsi.controllerKeySpecified      = true;
            scsi.busNumber                   = 0;
            scsi.hotAddRemove                = true;
            scsi.hotAddRemoveSpecified       = true;
            scsi.scsiCtlrUnitNumber          = 7;
            scsi.scsiCtlrUnitNumberSpecified = true;
            scsi.sharedBus                   = VirtualSCSISharing.noSharing;
            scsi.unitNumber                  = 2;
            scsi.unitNumberSpecified         = true;
            scsi.connectable                 = ci;
            VirtualDeviceConfigSpec dcs = new VirtualDeviceConfigSpec();

            dcs.device             = scsi;
            dcs.operation          = VirtualDeviceConfigSpecOperation.add;
            dcs.operationSpecified = true;
            return(dcs);
        }
예제 #3
0
        // private static VirtualDeviceConfigSpec GetIDEController(int key)
        // {
        //     VirtualDeviceConfigSpec devicespec = new VirtualDeviceConfigSpec();
        //     devicespec.device = new VirtualIDEController();
        //     devicespec.device.key = key;
        //     devicespec.operation = VirtualDeviceConfigSpecOperation.add;
        //     devicespec.operationSpecified = true;
        //     return devicespec;
        // }

        private static VirtualDeviceConfigSpec GetSCSIController(ref int key, string type)
        {
            VirtualDeviceConfigSpec devicespec = new VirtualDeviceConfigSpec();
            VirtualDevice           device     = null;

            // DISK CONTROLLER
            if (type.ToLower().EndsWith("sas"))
            {
                VirtualLsiLogicSASController sas = new VirtualLsiLogicSASController();
                sas.busNumber = 0;
                sas.sharedBus = VirtualSCSISharing.noSharing;
                sas.key       = key--;
                device        = sas;
            }

            if (type.ToLower() == "lsilogic")
            {
                VirtualLsiLogicController controller = new VirtualLsiLogicController();
                controller.busNumber = 0;
                controller.sharedBus = VirtualSCSISharing.noSharing;
                controller.key       = key--;
                device = controller;
            }

            if (type.ToLower() == "buslogic")
            {
                VirtualBusLogicController bus = new VirtualBusLogicController();
                bus.busNumber     = 0;
                bus.sharedBus     = VirtualSCSISharing.noSharing;
                bus.controllerKey = key--;
                device            = bus;
            }

            devicespec.device             = device;
            devicespec.operation          = VirtualDeviceConfigSpecOperation.add;
            devicespec.operationSpecified = true;

            return(devicespec);
        }
예제 #4
0
        public VirtualMachineConfigSpec createVmConfigSpec(String vmName,

                                                           String datastoreName,

                                                           int diskSizeMB,

                                                           ManagedObjectReference computeResMor,

                                                           ManagedObjectReference hostMor)

        {
            ConfigTarget configTarget = getConfigTargetForHost(computeResMor, hostMor);

            VirtualDevice[] defaultDevices = getDefaultDevices(computeResMor, hostMor);

            VirtualMachineConfigSpec configSpec = new VirtualMachineConfigSpec();



            String networkName = null;

            if (configTarget.network != null)

            {
                for (int i = 0; i < configTarget.network.Length; i++)

                {
                    VirtualMachineNetworkInfo netInfo = configTarget.network[i];

                    NetworkSummary netSummary = netInfo.network;

                    if (netSummary.accessible)

                    {
                        networkName = netSummary.name;

                        break;
                    }
                }
            }

            ManagedObjectReference datastoreRef = null;

            if (datastoreName != null)

            {
                Boolean flag = false;

                for (int i = 0; i < configTarget.datastore.Length; i++)

                {
                    VirtualMachineDatastoreInfo vdsInfo = configTarget.datastore[i];

                    DatastoreSummary dsSummary = vdsInfo.datastore;

                    if (dsSummary.name.Equals(datastoreName))

                    {
                        flag = true;

                        if (dsSummary.accessible)

                        {
                            datastoreName = dsSummary.name;

                            datastoreRef = dsSummary.datastore;
                        }

                        else

                        {
                            throw new Exception("Specified Datastore is not accessible");
                        }

                        break;
                    }
                }

                if (!flag)

                {
                    throw new Exception("Specified Datastore is not Found");
                }
            }

            else

            {
                Boolean flag = false;

                for (int i = 0; i < configTarget.datastore.Length; i++)

                {
                    VirtualMachineDatastoreInfo vdsInfo = configTarget.datastore[i];

                    DatastoreSummary dsSummary = vdsInfo.datastore;

                    if (dsSummary.accessible)

                    {
                        datastoreName = dsSummary.name;

                        datastoreRef = dsSummary.datastore;

                        flag = true;

                        break;
                    }
                }

                if (!flag)

                {
                    throw new Exception("No Datastore found on host");
                }
            }

            String datastoreVolume = getVolumeName(datastoreName);

            VirtualMachineFileInfo vmfi = new VirtualMachineFileInfo();

            vmfi.vmPathName = datastoreVolume;

            configSpec.files = vmfi;

            // Add a scsi controller

            int diskCtlrKey = 1;

            VirtualDeviceConfigSpec scsiCtrlSpec = new VirtualDeviceConfigSpec();

            scsiCtrlSpec.operation = VirtualDeviceConfigSpecOperation.add;

            scsiCtrlSpec.operationSpecified = true;

            VirtualLsiLogicController scsiCtrl = new VirtualLsiLogicController();

            scsiCtrl.busNumber = 0;

            scsiCtrlSpec.device = scsiCtrl;

            scsiCtrl.key = diskCtlrKey;

            scsiCtrl.sharedBus = VirtualSCSISharing.noSharing;

            String ctlrType = scsiCtrl.GetType().Name;



            // Find the IDE controller

            VirtualDevice ideCtlr = null;

            for (int di = 0; di < defaultDevices.Length; di++)

            {
                if (defaultDevices[di].GetType().Name.Equals("VirtualIDEController"))

                {
                    ideCtlr = defaultDevices[di];

                    break;
                }
            }



            // Add a floppy

            VirtualDeviceConfigSpec floppySpec = new VirtualDeviceConfigSpec();

            floppySpec.operation = VirtualDeviceConfigSpecOperation.add;

            floppySpec.operationSpecified = true;

            VirtualFloppy floppy = new VirtualFloppy();

            VirtualFloppyDeviceBackingInfo flpBacking = new VirtualFloppyDeviceBackingInfo();

            flpBacking.deviceName = "/dev/fd0";

            floppy.backing = flpBacking;

            floppy.key = 3;

            floppySpec.device = floppy;



            // Add a cdrom based on a physical device

            VirtualDeviceConfigSpec cdSpec = null;



            if (ideCtlr != null)

            {
                cdSpec = new VirtualDeviceConfigSpec();

                cdSpec.operation = VirtualDeviceConfigSpecOperation.add;

                cdSpec.operationSpecified = true;

                VirtualCdrom cdrom = new VirtualCdrom();

                VirtualCdromIsoBackingInfo cdDeviceBacking = new VirtualCdromIsoBackingInfo();

                cdDeviceBacking.datastore = datastoreRef;

                cdDeviceBacking.fileName = datastoreVolume + "testcd.iso";

                cdrom.backing = cdDeviceBacking;

                cdrom.key = 20;

                cdrom.controllerKey = ideCtlr.key;

                cdrom.controllerKeySpecified = true;

                cdrom.unitNumberSpecified = true;

                cdrom.unitNumber = 0;

                cdSpec.device = cdrom;
            }



            // Create a new disk - file based - for the vm

            VirtualDeviceConfigSpec diskSpec = null;

            diskSpec = createVirtualDisk(datastoreName, diskCtlrKey, datastoreRef, diskSizeMB);



            // Add a NIC. the network Name must be set as the device name to create the NIC.

            VirtualDeviceConfigSpec nicSpec = new VirtualDeviceConfigSpec();

            if (networkName != null)

            {
                nicSpec.operation = VirtualDeviceConfigSpecOperation.add;

                nicSpec.operationSpecified = true;

                VirtualEthernetCard nic = new VirtualPCNet32();

                VirtualEthernetCardNetworkBackingInfo nicBacking = new VirtualEthernetCardNetworkBackingInfo();

                nicBacking.deviceName = networkName;

                nic.addressType = "generated";

                nic.backing = nicBacking;

                nic.key = 4;

                nicSpec.device = nic;
            }



            var deviceConfigSpec = new List <VirtualDeviceConfigSpec>();

            deviceConfigSpec.Add(scsiCtrlSpec);

            deviceConfigSpec.Add(floppySpec);

            deviceConfigSpec.Add(diskSpec);

            deviceConfigSpec.Add(nicSpec);



            if (ideCtlr != null)

            {
                deviceConfigSpec.Add(cdSpec);
            }



            configSpec.deviceChange = deviceConfigSpec.ToArray();

            return(configSpec);
        }
예제 #5
0
        public VirtualMachineConfigSpec createVmConfigSpec(String vmName,
                                                        String datastoreName,
                                                        int diskSizeMB,
                                                        ManagedObjectReference computeResMor,
                                                        ManagedObjectReference hostMor)
        {

            ConfigTarget configTarget = getConfigTargetForHost(computeResMor, hostMor);
            VirtualDevice[] defaultDevices = getDefaultDevices(computeResMor, hostMor);
            VirtualMachineConfigSpec configSpec = new VirtualMachineConfigSpec();

            String networkName = null;
            if (configTarget.network != null)
            {
                for (int i = 0; i < configTarget.network.Length; i++)
                {
                    VirtualMachineNetworkInfo netInfo = configTarget.network[i];
                    NetworkSummary netSummary = netInfo.network;
                    if (netSummary.accessible)
                    {
                        networkName = netSummary.name;
                        break;
                    }
                }
            }
            ManagedObjectReference datastoreRef = null;
            if (datastoreName != null)
            {
                Boolean flag = false;
                for (int i = 0; i < configTarget.datastore.Length; i++)
                {
                    VirtualMachineDatastoreInfo vdsInfo = configTarget.datastore[i];
                    DatastoreSummary dsSummary = vdsInfo.datastore;
                    if (dsSummary.name.Equals(datastoreName))
                    {
                        flag = true;
                        if (dsSummary.accessible)
                        {
                            datastoreName = dsSummary.name;
                            datastoreRef = dsSummary.datastore;
                        }
                        else
                        {
                            throw new Exception("Specified Datastore is not accessible");
                        }
                        break;
                    }
                }
                if (!flag)
                {
                    throw new Exception("Specified Datastore is not Found");
                }
            }
            else
            {
                Boolean flag = false;
                for (int i = 0; i < configTarget.datastore.Length; i++)
                {
                    VirtualMachineDatastoreInfo vdsInfo = configTarget.datastore[i];
                    DatastoreSummary dsSummary = vdsInfo.datastore;
                    if (dsSummary.accessible)
                    {
                        datastoreName = dsSummary.name;
                        datastoreRef = dsSummary.datastore;
                        flag = true;
                        break;
                    }
                }
                if (!flag)
                {
                    throw new Exception("No Datastore found on host");
                }
            }
            String datastoreVolume = getVolumeName(datastoreName);
            VirtualMachineFileInfo vmfi = new VirtualMachineFileInfo();
            vmfi.vmPathName = datastoreVolume;
            configSpec.files = vmfi;
            // Add a scsi controller
            int diskCtlrKey = 1;
            VirtualDeviceConfigSpec scsiCtrlSpec = new VirtualDeviceConfigSpec();
            scsiCtrlSpec.operation = VirtualDeviceConfigSpecOperation.add;
            scsiCtrlSpec.operationSpecified = true;
            VirtualLsiLogicController scsiCtrl = new VirtualLsiLogicController();
            scsiCtrl.busNumber = 0;
            scsiCtrlSpec.device = scsiCtrl;
            scsiCtrl.key = diskCtlrKey;
            scsiCtrl.sharedBus = VirtualSCSISharing.noSharing;
            String ctlrType = scsiCtrl.GetType().Name;


            // Find the IDE controller
            VirtualDevice ideCtlr = null;
            for (int di = 0; di < defaultDevices.Length; di++)
            {
                if (defaultDevices[di].GetType().Name.Equals("VirtualIDEController"))
                {
                    ideCtlr = defaultDevices[di];
                    break;
                }
            }

            // Add a floppy
            VirtualDeviceConfigSpec floppySpec = new VirtualDeviceConfigSpec();
            floppySpec.operation = VirtualDeviceConfigSpecOperation.add;
            floppySpec.operationSpecified = true;
            VirtualFloppy floppy = new VirtualFloppy();
            VirtualFloppyDeviceBackingInfo flpBacking = new VirtualFloppyDeviceBackingInfo();
            flpBacking.deviceName = "/dev/fd0";
            floppy.backing = flpBacking;
            floppy.key = 3;
            floppySpec.device = floppy;

            // Add a cdrom based on a physical device
            VirtualDeviceConfigSpec cdSpec = null;

            if (ideCtlr != null)
            {
                cdSpec = new VirtualDeviceConfigSpec();
                cdSpec.operation = VirtualDeviceConfigSpecOperation.add;
                cdSpec.operationSpecified = true;
                VirtualCdrom cdrom = new VirtualCdrom();
                VirtualCdromIsoBackingInfo cdDeviceBacking = new VirtualCdromIsoBackingInfo();
                cdDeviceBacking.datastore = datastoreRef;
                cdDeviceBacking.fileName = datastoreVolume + "testcd.iso";
                cdrom.backing = cdDeviceBacking;
                cdrom.key = 20;
                cdrom.controllerKey = ideCtlr.key;
                cdrom.controllerKeySpecified = true;
                cdrom.unitNumberSpecified = true;
                cdrom.unitNumber = 0;
                cdSpec.device = cdrom;
            }

            // Create a new disk - file based - for the vm
            VirtualDeviceConfigSpec diskSpec = null;
            diskSpec = createVirtualDisk(datastoreName, diskCtlrKey, datastoreRef, diskSizeMB);

            // Add a NIC. the network Name must be set as the device name to create the NIC.
            VirtualDeviceConfigSpec nicSpec = new VirtualDeviceConfigSpec();
            if (networkName != null)
            {
                nicSpec.operation = VirtualDeviceConfigSpecOperation.add;
                nicSpec.operationSpecified = true;
                VirtualEthernetCard nic = new VirtualPCNet32();
                VirtualEthernetCardNetworkBackingInfo nicBacking = new VirtualEthernetCardNetworkBackingInfo();
                nicBacking.deviceName = networkName;
                nic.addressType = "generated";
                nic.backing = nicBacking;
                nic.key = 4;
                nicSpec.device = nic;
            }

            var deviceConfigSpec = new List<VirtualDeviceConfigSpec>();
            deviceConfigSpec.Add(scsiCtrlSpec);
            deviceConfigSpec.Add(floppySpec);
            deviceConfigSpec.Add(diskSpec);
            deviceConfigSpec.Add(nicSpec);

            if (ideCtlr != null)
            {
                deviceConfigSpec.Add(cdSpec);
            }

            configSpec.deviceChange = deviceConfigSpec.ToArray();
            return configSpec;
        }
예제 #6
0
       private void reConfig()  {
    String deviceType = cb.get_option("device");
    VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec();
    
    if(deviceType.Equals("memory")) {
       Console.WriteLine("Reconfiguring The Virtual Machine For Memory Update " 
                         + cb.get_option("vmname"));
       try {
          vmConfigSpec.memoryAllocation = getShares();          
       }
       catch(Exception nfe) {
          Console.WriteLine("Value of Memory update must "
                            +"be either Custom or Integer");
          return;
       }
    }
    else if(deviceType.Equals("cpu")) {
       Console.WriteLine("Reconfiguring The Virtual Machine For CPU Update " 
                         + cb.get_option("vmname"));       
       try {
          vmConfigSpec.cpuAllocation=getShares();
       }
       catch(Exception nfe) {
          Console.WriteLine("Value of CPU update must "
                            +"be either Custom or Integer");
          return;
       }
    }
    else if(deviceType.Equals("disk")) {
       Console.WriteLine("Reconfiguring The Virtual Machine For Disk Update " 
                         + cb.get_option("vmname"));
       
       VirtualDeviceConfigSpec vdiskSpec = getDiskDeviceConfigSpec();
       if(vdiskSpec != null) {
           VirtualMachineConfigInfo vmConfigInfo
     = (VirtualMachineConfigInfo)cb.getServiceUtil().GetDynamicProperty(
         _virtualMachine, "config");
           int ckey = -1;
           VirtualDevice[] test = vmConfigInfo.hardware.device;
           for (int k = 0; k < test.Length; k++)
           {
               if (test[k].deviceInfo.label.Equals(
                  "SCSI Controller 0"))
               {
                   ckey = test[k].key;
               }
           }
           
           if (ckey == -1)
           {
               int diskCtlrKey = 1;
               VirtualDeviceConfigSpec scsiCtrlSpec = new VirtualDeviceConfigSpec();
               scsiCtrlSpec.operation = VirtualDeviceConfigSpecOperation.add;
               scsiCtrlSpec.operationSpecified = true;
               VirtualLsiLogicController scsiCtrl = new VirtualLsiLogicController();
               scsiCtrl.busNumber = 0;
               scsiCtrlSpec.device = scsiCtrl;
               scsiCtrl.key = diskCtlrKey;
               scsiCtrl.sharedBus = VirtualSCSISharing.physicalSharing;
               String ctlrType = scsiCtrl.GetType().Name;
               vdiskSpec.device.controllerKey = scsiCtrl.key;
               VirtualDeviceConfigSpec[] vdiskSpecArray = { scsiCtrlSpec, vdiskSpec };
               vmConfigSpec.deviceChange = vdiskSpecArray;
           }
           else
           {
               vdiskSpec.device.controllerKey = ckey;
               VirtualDeviceConfigSpec[] vdiskSpecArray = { vdiskSpec };
               vmConfigSpec.deviceChange = vdiskSpecArray;
           }
                   
         
       }
       else {
          return;
       }
    }
    else if(deviceType.Equals("nic")) {
       Console.WriteLine("Reconfiguring The Virtual Machine For NIC Update " 
                         + cb.get_option("vmname"));                          
       VirtualDeviceConfigSpec nicSpec = getNICDeviceConfigSpec();
       if(nicSpec != null) {
          VirtualDeviceConfigSpec [] nicSpecArray = {nicSpec};                     
          vmConfigSpec.deviceChange=nicSpecArray;
       }
       else {
          return;
       }          
    }
    else if(deviceType.Equals("cd")) {
       Console.WriteLine("Reconfiguring The Virtual Machine For CD Update "  
                         + cb.get_option("vmname"));                          
       VirtualDeviceConfigSpec cdSpec = getCDDeviceConfigSpec();
       if(cdSpec != null) {
          VirtualDeviceConfigSpec [] cdSpecArray = {cdSpec};                     
          vmConfigSpec.deviceChange=cdSpecArray;
       }
       else {
          return;
       } 
    }
    else {
       Console.WriteLine("Invlaid device type [memory|cpu|disk|nic|cd]");
       return;
    }      
    
    ManagedObjectReference tmor 
       = cb.getConnection()._service.ReconfigVM_Task(
           _virtualMachine, vmConfigSpec);
    monitorTask(tmor);   
 }
예제 #7
0
        private void reConfig()
        {
            String deviceType = cb.get_option("device");
            VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec();

            if (deviceType.Equals("memory"))
            {
                Console.WriteLine("Reconfiguring The Virtual Machine For Memory Update "
                                  + cb.get_option("vmname"));
                try {
                    vmConfigSpec.memoryAllocation = getShares();
                }
                catch (Exception nfe) {
                    Console.WriteLine("Value of Memory update must "
                                      + "be either Custom or Integer");
                    return;
                }
            }
            else if (deviceType.Equals("cpu"))
            {
                Console.WriteLine("Reconfiguring The Virtual Machine For CPU Update "
                                  + cb.get_option("vmname"));
                try {
                    vmConfigSpec.cpuAllocation = getShares();
                }
                catch (Exception nfe) {
                    Console.WriteLine("Value of CPU update must "
                                      + "be either Custom or Integer");
                    return;
                }
            }
            else if (deviceType.Equals("disk"))
            {
                Console.WriteLine("Reconfiguring The Virtual Machine For Disk Update "
                                  + cb.get_option("vmname"));

                VirtualDeviceConfigSpec vdiskSpec = getDiskDeviceConfigSpec();
                if (vdiskSpec != null)
                {
                    VirtualMachineConfigInfo vmConfigInfo
                        = (VirtualMachineConfigInfo)cb.getServiceUtil().GetDynamicProperty(
                              _virtualMachine, "config");
                    int             ckey = -1;
                    VirtualDevice[] test = vmConfigInfo.hardware.device;
                    for (int k = 0; k < test.Length; k++)
                    {
                        if (test[k].deviceInfo.label.Equals(
                                "SCSI Controller 0"))
                        {
                            ckey = test[k].key;
                        }
                    }

                    if (ckey == -1)
                    {
                        int diskCtlrKey = 1;
                        VirtualDeviceConfigSpec scsiCtrlSpec = new VirtualDeviceConfigSpec();
                        scsiCtrlSpec.operation          = VirtualDeviceConfigSpecOperation.add;
                        scsiCtrlSpec.operationSpecified = true;
                        VirtualLsiLogicController scsiCtrl = new VirtualLsiLogicController();
                        scsiCtrl.busNumber  = 0;
                        scsiCtrlSpec.device = scsiCtrl;
                        scsiCtrl.key        = diskCtlrKey;
                        scsiCtrl.sharedBus  = VirtualSCSISharing.physicalSharing;
                        String ctlrType = scsiCtrl.GetType().Name;
                        vdiskSpec.device.controllerKey = scsiCtrl.key;
                        VirtualDeviceConfigSpec[] vdiskSpecArray = { scsiCtrlSpec, vdiskSpec };
                        vmConfigSpec.deviceChange = vdiskSpecArray;
                    }
                    else
                    {
                        vdiskSpec.device.controllerKey = ckey;
                        VirtualDeviceConfigSpec[] vdiskSpecArray = { vdiskSpec };
                        vmConfigSpec.deviceChange = vdiskSpecArray;
                    }
                }
                else
                {
                    return;
                }
            }
            else if (deviceType.Equals("nic"))
            {
                Console.WriteLine("Reconfiguring The Virtual Machine For NIC Update "
                                  + cb.get_option("vmname"));
                VirtualDeviceConfigSpec nicSpec = getNICDeviceConfigSpec();
                if (nicSpec != null)
                {
                    VirtualDeviceConfigSpec [] nicSpecArray = { nicSpec };
                    vmConfigSpec.deviceChange = nicSpecArray;
                }
                else
                {
                    return;
                }
            }
            else if (deviceType.Equals("cd"))
            {
                Console.WriteLine("Reconfiguring The Virtual Machine For CD Update "
                                  + cb.get_option("vmname"));
                VirtualDeviceConfigSpec cdSpec = getCDDeviceConfigSpec();
                if (cdSpec != null)
                {
                    VirtualDeviceConfigSpec [] cdSpecArray = { cdSpec };
                    vmConfigSpec.deviceChange = cdSpecArray;
                }
                else
                {
                    return;
                }
            }
            else
            {
                Console.WriteLine("Invlaid device type [memory|cpu|disk|nic|cd]");
                return;
            }

            ManagedObjectReference tmor
                = cb.getConnection()._service.ReconfigVM_Task(
                      _virtualMachine, vmConfigSpec);

            monitorTask(tmor);
        }