Package com.cybozu.vmbkp.soap

Source Code of com.cybozu.vmbkp.soap.VirtualDiskManager

/**
* @file
* @brief VirtualDiskManager
*
* !!!Causion!!! This is not 'com.vmware.vim25.mo.VirtualDiskManager'.
*
* Copyright (C) 2009,2010 Cybozu Inc., all rights reserved.
*
* @author Takashi HOSHINO <hoshino@labs.cybozu.co.jp>
*/
package com.cybozu.vmbkp.soap;

import com.vmware.vim25.VirtualDeviceConfigSpec;
import com.vmware.vim25.VirtualDeviceConfigSpecOperation;
import com.vmware.vim25.VirtualDeviceConfigSpecFileOperation;
import com.vmware.vim25.VirtualDisk;
import com.vmware.vim25.VirtualDiskFlatVer2BackingInfo;

import com.cybozu.vmbkp.util.AdapterType;

/**
* @brief Manage a virtual disk specification.
*
* This class is used to add disks to a virtual machine.
*/
public class VirtualDiskManager
    implements Comparable<VirtualDiskManager>
{
    /**
     * device key of the disk.
     */
    private int key_;

    /**
     * unit number of the disk. (B of scsiA:B for example.)
     */
    private int unitNumber_;

    /**
     * Disk capacity.
     */
    private long capacityInKb_;

    /**
     * Datastore name.
     */
    private String datastore_;
   
    /**
     * Disk controller data.
     */
    private VirtualControllerManager controller_;

    /**
     * Constructor.
     *
     * @param key device key. you can set 0 and it will be automatically set,
     *        but you cannot detect the newly added disk uniquely.
     * @param unitNumber unit number of the disk.
     * @param capacityInKb disk capacity in kilo bytes.
     * @param datastore datastore name (not disk path).
     */
    public VirtualDiskManager(int key, int unitNumber,
                              long capacityInKb, String datastore)
    {
        key_ = key;
        unitNumber_ = unitNumber;
        capacityInKb_ = capacityInKb;
        datastore_ = datastore;
        controller_ = null;
    }

    /**
     * Comparator
     *
     * Rule 1. controller_ order.
     * Rule 2. unitNumber_ order.
     */
    public int compareTo(VirtualDiskManager rht)
    {
        int cmpCtrl = this.controller_.compareTo(rht.controller_);
        if (cmpCtrl == 0) {
            return this.unitNumber_ - rht.unitNumber_;
        } else {
            return cmpCtrl;
        }
    }

    /**
     * This is called by VirtualControllerManager.add().
     */
    protected void setController(VirtualControllerManager controller)
    {
        controller_ = controller;
    }

    /**
     * Create disk spec for VMware vSphere environment.
     */
    public VirtualDeviceConfigSpec create(boolean isThinProvisioned)
    {
        /* controller_ must not be null */
        if (controller_ == null) { return null; }
       
        VirtualDeviceConfigSpec diskSpec =
            new VirtualDeviceConfigSpec();
        diskSpec.setOperation(VirtualDeviceConfigSpecOperation.add);
        diskSpec.setFileOperation
            (VirtualDeviceConfigSpecFileOperation.create);
   
        VirtualDisk vd = new VirtualDisk();
        vd.setCapacityInKB(capacityInKb_);
        diskSpec.setDevice(vd);
        vd.setKey(key_); /* no need to set key_ */
        vd.setUnitNumber(unitNumber_);
        vd.setControllerKey(controller_.getCkey());

        VirtualDiskFlatVer2BackingInfo diskfileBacking =
            new VirtualDiskFlatVer2BackingInfo();
        String fileName = "["+ datastore_ +"]";
        diskfileBacking.setFileName(fileName);
        diskfileBacking.setDiskMode("persistent");
        diskfileBacking.setThinProvisioned(isThinProvisioned);
        vd.setBacking(diskfileBacking);
        return diskSpec;
    }

    /**
     * Print information for debug.
     */
    public void print()
    {
        System.out.println(toString());
    }

    /**
     * Convert to string.
     */
    public String toString()
    {
        return
            String.format
            ("VirtualDiskManager: " +
             "key: %d, unitNumber: %d, capacityInKb: %d, datastore: %s\n",
             key_, unitNumber_, capacityInKb_, datastore_);
    }

}
TOP

Related Classes of com.cybozu.vmbkp.soap.VirtualDiskManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.