Vijava 学习笔记之ResourcePool(基础配置信息)

来源:互联网 发布:红楼梦 脂评本 知乎 编辑:程序博客网 时间:2024/05/16 19:00

Vijava 代码

实体类:

package  com.vmware.pojo;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;/** * 虚拟机信息 * @author zhb * */public class VirtualMachineInfo extends Entity{    private String changeVersion; //更改后版本号    private Calendar modified;  //修改时间    private String name;  //名称    private String guestFullName; //操作系统全名    private String guestState;//操作系统运行状态    private String vmPowerState; //电源状态    private String version; //虚拟机版本号    private String uuid;  //特定id    private String instanceUuid;  //虚拟机实例id    private boolean template; //是否为模板    private String guestId;  //操作系统名称    private String alternateGuestName; //操作系统名称    private String annotation;//虚拟机的描述。    private String locationId; //本地目录    private int numCPU; //cpu数    private Integer numCoresPerSocket; //插槽cpu数    private int memoryMB; //内存大小,单位为MB    private String hostName;//主机全名    private String ipAddress; //IP地址    private ArrayList<VirtualMachineDiskInfo> disks = new ArrayList<VirtualMachineDiskInfo>(); //虚拟磁盘    private ArrayList<VirtualMachineNicInfo> nics = new ArrayList<VirtualMachineNicInfo>();//虚拟网卡    private ArrayList<String> datastores = new  ArrayList<String>(); //存储数据源    private ArrayList<String> networks = new ArrayList<String>();//网络信息,存储网络名称    private ArrayList<ControllerInfo> conts = new  ArrayList<ControllerInfo>();//控制器集    private ArrayList<GuestNicObject> guestNics = new ArrayList<GuestNicObject>();//客户机网卡地址配置信息    //下面一些关联关系,辅助查询    private String hostProdId; //主机程序内部id    private String resPoolProdId;//资源池程序内部id    private ResourceAllocationInfo cpuAllocation = new ResourceAllocationInfo(); //cpu分配信息    private ResourceAllocationInfo memoryAllocation = new ResourceAllocationInfo(); //内存分配信息    private VirtualMachineLogicDiskInfo[] logicDisks; //虚拟机逻辑磁盘信息    private ArrayList<VmSnapshot> snapshots = new ArrayList<VmSnapshot>();  //快照信息列表    private String parentFolderProgId;//父目录    private Date timePeriod;   //时间期限    private String applicant;  //资源申请人    private String currentSnapProgId;  //当前快照名称    private String vmPath; //存储位置    public String getChangeVersion() {        return changeVersion;    }    public void setChangeVersion(String changeVersion) {        this.changeVersion = changeVersion;    }    public Calendar getModified() {        return modified;    }    public void setModified(Calendar modified) {        this.modified = modified;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getGuestFullName() {        return guestFullName;    }    public void setGuestFullName(String guestFullName) {        this.guestFullName = guestFullName;    }    public String getVersion() {        return version;    }    public void setVersion(String version) {        this.version = version;    }    public String getUuid() {        return uuid;    }    public void setUuid(String uuid) {        this.uuid = uuid;    }    public String getInstanceUuid() {        return instanceUuid;    }    public void setInstanceUuid(String instanceUuid) {        this.instanceUuid = instanceUuid;    }    public boolean isTemplate() {        return template;    }    public void setTemplate(boolean template) {        this.template = template;    }    public String getGuestId() {        return guestId;    }    public void setGuestId(String guestId) {        this.guestId = guestId;    }    public String getAlternateGuestName() {        return alternateGuestName;    }    public void setAlternateGuestName(String alternateGuestName) {        this.alternateGuestName = alternateGuestName;    }    public String getAnnotation() {        return annotation;    }    public void setAnnotation(String annotation) {        this.annotation = annotation;    }    public String getLocationId() {        return locationId;    }    public void setLocationId(String locationId) {        this.locationId = locationId;    }    public int getNumCPU() {        return numCPU;    }    public void setNumCPU(int numCPU) {        this.numCPU = numCPU;    }    public Integer getNumCoresPerSocket() {        return numCoresPerSocket;    }    public void setNumCoresPerSocket(Integer numCoresPerSocket) {        this.numCoresPerSocket = numCoresPerSocket;    }    public int getMemoryMB() {        return memoryMB;    }    public void setMemoryMB(int memoryMB) {        this.memoryMB = memoryMB;    }    public String getHostName() {        return hostName;    }    public void setHostName(String hostName) {        this.hostName = hostName;    }    public String getIpAddress() {        return ipAddress;    }    public void setIpAddress(String ipAddress) {        this.ipAddress = ipAddress;    }    public ArrayList<VirtualMachineDiskInfo> getDisks() {        return disks;    }    public void setDisk(VirtualMachineDiskInfo disk){        this.disks.add(disk);    }    public void setDisks(ArrayList<VirtualMachineDiskInfo> disks) {        this.disks = disks;    }    public ArrayList<VirtualMachineNicInfo> getNics() {        return nics;    }    public void setNic(VirtualMachineNicInfo nic){        this.nics.add(nic);    }    public void setNics(ArrayList<VirtualMachineNicInfo> nics) {        this.nics = nics;    }    public ArrayList<String> getDatastores() {        return datastores;    }    public void setDatastore(String datastore){        this.datastores.add(datastore);    }    public void setDatastores(ArrayList<String> datastores) {        this.datastores = datastores;    }    public ArrayList<String> getNetworks() {        return networks;    }    public void setNetwork(String network){        this.networks.add(network);    }    public void setNetworks(ArrayList<String> networks) {        this.networks = networks;    }    public ArrayList<ControllerInfo> getConts() {        return conts;    }    public void setCont(ControllerInfo cont){        this.conts.add(cont);    }    public void setConts(ArrayList<ControllerInfo> conts) {        this.conts = conts;    }    public String getGuestState() {        return guestState;    }    public void setGuestState(String guestState) {        this.guestState = guestState;    }    public String getVmPowerState() {        return vmPowerState;    }    public void setVmPowerState(String vmPowerState) {        this.vmPowerState = vmPowerState;    }    public String getHostProdId() {        return hostProdId;    }    public void setHostProdId(String hostProdId) {        this.hostProdId = hostProdId;    }    public String getResPoolProdId() {        return resPoolProdId;    }    public void setResPoolProdId(String resPoolProdId) {        this.resPoolProdId = resPoolProdId;    }    public ResourceAllocationInfo getCpuAllocation() {        return cpuAllocation;    }    public void setCpuAllocation(ResourceAllocationInfo cpuAllocation) {        this.cpuAllocation = cpuAllocation;    }    public ResourceAllocationInfo getMemoryAllocation() {        return memoryAllocation;    }    public void setMemoryAllocation(ResourceAllocationInfo memoryAllocation) {        this.memoryAllocation = memoryAllocation;    }    public VirtualMachineLogicDiskInfo[] getLogicDisks() {        return logicDisks;    }    public void setLogicDisks(VirtualMachineLogicDiskInfo[] logicDisks) {        this.logicDisks = logicDisks;    }    public ArrayList<GuestNicObject> getGuestNics() {        return guestNics;    }    public void setGuestNics(ArrayList<GuestNicObject> guestNics) {        this.guestNics = guestNics;    }    public ArrayList<VmSnapshot> getSnapshots() {        return snapshots;    }    public void addSnapshot(VmSnapshot vmSnapshot){        snapshots.add(vmSnapshot);    }    public void setSnapshots(ArrayList<VmSnapshot> snapshots) {        this.snapshots = snapshots;    }    public String getParentFolderProgId() {        return parentFolderProgId;    }    public void setParentFolderProgId(String parentFolderProgId) {        this.parentFolderProgId = parentFolderProgId;    }    public String getApplicant() {        return applicant;    }    public void setApplicant(String applicant) {        this.applicant = applicant;    }    public Date getTimePeriod() {        return timePeriod;    }    public void setTimePeriod(Date timePeriod) {        this.timePeriod = timePeriod;    }    public String getCurrentSnapProgId() {        return currentSnapProgId;    }    public void setCurrentSnapProgId(String currentSnapProgId) {        this.currentSnapProgId = currentSnapProgId;    }    public String getVmPath() {        return vmPath;    }    public void setVmPath(String vmPath) {        this.vmPath = vmPath;    }}
package com.vmware.pojo;/** * 虚拟机磁盘信息 * @author zhb * */public class VirtualMachineDiskInfo {    private String diskType;//参数列表    /**     * 1:Sparse disk format, version 1 VirtualDiskSparseVer1BackingInfo     * 2:Sparse disk format, version 2 VirtualDiskSparseVer2BackingInfo     * 3:Flat disk format, version 1 VirtualDiskFlatVer1BackingInfo     * 4:Flat disk format, version 2 VirtualDiskFlatVer2BackingInfo     * 5:Raw disk format, version 2 VirtualDiskRawDiskVer2BackingInfo     * 6:Partitioned raw disk format, version 2  VirtualDiskPartitionedRawDiskVer2BackingInfo     * 7:Raw disk mapping, version 1 VirtualDiskRawDiskMappingVer1BackingInfo     */    private String diskMode;    private String fileName;  //磁盘路经    private Long capacity;    //容量     private String uuid;      //特定id      private String label;     //名称    private String datastoreId; //数据源id    private int[] partition; //分区数    private String deviceName; //设备名    private int contIdKey; //对应相应的控制器    private int key;//程序内部用到的key    private int unitNumber; //内部序号    private String diskFlag; //磁盘标识    private String contentId;//容量id    public Long getCapacity() {        return capacity;    }    public void setCapacity(Long capacity) {        this.capacity = capacity;    }    public String getDiskType() {        return diskType;    }    public void setDiskType(String diskType) {        this.diskType = diskType;    }    public String getDiskMode() {        return diskMode;    }    public void setDiskMode(String diskMode) {        this.diskMode = diskMode;    }    public String getFileName() {        return fileName;    }    public void setFileName(String fileName) {        this.fileName = fileName;    }    public String getUuid() {        return uuid;    }    public void setUuid(String uuid) {        this.uuid = uuid;    }    public String getLabel() {        return label;    }    public void setLabel(String label) {        this.label = label;    }    public String getDatastoreId() {        return datastoreId;    }    public void setDatastoreId(String datastoreId) {        this.datastoreId = datastoreId;    }    public int[] getPartition() {        return partition;    }    public void setPartition(int[] partition) {        this.partition = partition;    }    public String getDeviceName() {        return deviceName;    }    public void setDeviceName(String deviceName) {        this.deviceName = deviceName;    }    public int getKey() {        return key;    }    public void setKey(int key) {        this.key = key;    }    public int getContIdKey() {        return contIdKey;    }    public void setContIdKey(int contIdKey) {        this.contIdKey = contIdKey;    }    public int getUnitNumber() {        return unitNumber;    }    public void setUnitNumber(int unitNumber) {        this.unitNumber = unitNumber;    }    public String getContentId() {        return contentId;    }    public void setContentId(String contentId) {        this.contentId = contentId;    }    public String getDiskFlag() {        return diskFlag;    }    public void setDiskFlag(String diskFlag) {        this.diskFlag = diskFlag;    }}
package com.vmware.pojo;/** * 虚拟机网卡配置信息 * @author zhb * */public class VirtualMachineNicInfo extends Entity{    private int vmId;  //虚拟机id    private String nicType;  /*类型  N参数集:VirtualE1000VirtualPCNet32VirtualVmxnetVirtualVmxnet2VirtualVmxnet3Unknown*/    private String addressType; //地址类型    private String macAddress; //mac地址    private String switchUuid; //交换机id    private String portgroupKey; //端口组id    private String portKey;//端口    private String deviceName;//设备名称    private int key;//内部键    private String networkType;//网络类型    private String wakeOnLanEnabled;  //局域网是否唤醒  1:唤醒 0: 不唤醒    private String startConnected;  //打开电源是否连接   1、连接 0、不连接    private String connected; //已连接  1、连接 0、不连接    public int getVmId() {        return vmId;    }    public void setVmId(int vmId) {        this.vmId = vmId;    }    public String getNicType() {        return nicType;    }    public void setNicType(String nicType) {        this.nicType = nicType;    }    public String getAddressType() {        return addressType;    }    public void setAddressType(String addressType) {        this.addressType = addressType;    }    public String getMacAddress() {        return macAddress;    }    public void setMacAddress(String macAddress) {        this.macAddress = macAddress;    }    public String getSwitchUuid() {        return switchUuid;    }    public void setSwitchUuid(String switchUuid) {        this.switchUuid = switchUuid;    }    public String getPortgroupKey() {        return portgroupKey;    }    public void setPortgroupKey(String portgroupKey) {        this.portgroupKey = portgroupKey;    }    public String getPortKey() {        return portKey;    }    public void setPortKey(String portKey) {        this.portKey = portKey;    }    public String getDeviceName() {        return deviceName;    }    public void setDeviceName(String deviceName) {        this.deviceName = deviceName;    }    public int getKey() {        return key;    }    public void setKey(int key) {        this.key = key;    }    public String getNetworkType() {        return networkType;    }    public void setNetworkType(String networkType) {        this.networkType = networkType;    }    public String getWakeOnLanEnabled() {        return wakeOnLanEnabled;    }    public void setWakeOnLanEnabled(String wakeOnLanEnabled) {        this.wakeOnLanEnabled = wakeOnLanEnabled;    }    public String getStartConnected() {        return startConnected;    }    public void setStartConnected(String startConnected) {        this.startConnected = startConnected;    }    public String getConnected() {        return connected;    }    public void setConnected(String connected) {        this.connected = connected;    }}

package com.vmware.pojo;/** * 控制器信息 * @author zhb * */public class ControllerInfo {    private int contId; //控制器id    private String contType;//控制器类型 1:表示scsi控制器    private String contLable;//控制器标签    private int unitNumber;//设备节点    private int busNumber;//总线    private int key; //内部键    private int[] deviceKey; //所挂设备    private String busShareMode;//总线共享模式    public int getContId() {        return contId;    }    public void setContId(int contId) {        this.contId = contId;    }    public String getContLable() {        return contLable;    }    public void setContLable(String contLable) {        this.contLable = contLable;    }    public int getUnitNumber() {        return unitNumber;    }    public void setUnitNumber(int unitNumber) {        this.unitNumber = unitNumber;    }    public int getBusNumber() {        return busNumber;    }    public void setBusNumber(int busNumber) {        this.busNumber = busNumber;    }    public int getKey() {        return key;    }    public void setKey(int key) {        this.key = key;    }    public int[] getDeviceKey() {        return deviceKey;    }    public void setDeviceKey(int[] deviceKey) {        this.deviceKey = deviceKey;    }    public String getContType() {        return contType;    }    public void setContType(String contType) {        this.contType = contType;    }    public String getBusShareMode() {        return busShareMode;    }    public void setBusShareMode(String busShareMode) {        this.busShareMode = busShareMode;    }}
package com.vmware.pojo;/** * 客户机网卡IP地址配置信息 * @author zhb * */public class GuestNicObject {    private String network;   //网络名称    private String ipAddress;//ip地址列表    private String macAddress;  //mac地址    private boolean connected;  //是否连接虚拟设备    private int deviceConfigId;    private GuestNicDnsObject nicDnsObject; //dns配置信息    public boolean isConnected() {        return connected;    }    public void setConnected(boolean connected) {        this.connected = connected;    }    public int getDeviceConfigId() {        return deviceConfigId;    }    public void setDeviceConfigId(int deviceConfigId) {        this.deviceConfigId = deviceConfigId;    }    public String getIpAddress() {        return ipAddress;    }    public void setIpAddress(String ipAddress) {        this.ipAddress = ipAddress;    }    public String getMacAddress() {        return macAddress;    }    public void setMacAddress(String macAddress) {        this.macAddress = macAddress;    }    public String getNetwork() {        return network;    }    public void setNetwork(String network) {        this.network = network;    }    public GuestNicDnsObject getNicDnsObject() {        return nicDnsObject;    }    public void setNicDnsObject(GuestNicDnsObject nicDnsObject) {        this.nicDnsObject = nicDnsObject;    }}
package com.vmware.pojo;public class GuestNicDnsObject {    private boolean dhcp;    private String hostName;    private String domainName;    private String primaryAddress; //主dns地址    private String prepAddress;    //预备地址    private String[] searchDomain;    public boolean isDhcp() {        return dhcp;    }    public void setDhcp(boolean dhcp) {        this.dhcp = dhcp;    }    public String getDomainName() {        return domainName;    }    public void setDomainName(String domainName) {        this.domainName = domainName;    }    public String getHostName() {        return hostName;    }    public void setHostName(String hostName) {        this.hostName = hostName;    }    public String getPrepAddress() {        return prepAddress;    }    public void setPrepAddress(String prepAddress) {        this.prepAddress = prepAddress;    }    public String getPrimaryAddress() {        return primaryAddress;    }    public void setPrimaryAddress(String primaryAddress) {        this.primaryAddress = primaryAddress;    }    public String[] getSearchDomain() {        return searchDomain;    }    public void setSearchDomain(String[] searchDomain) {        this.searchDomain = searchDomain;    }}

逻辑层:

package com.vmware.resourcepool;import com.vmware.pojo.ResourcePoolInfo;import com.vmware.vim25.mo.*;/** * Created by vixuan-008 on 2015/4/27. */public class ResourcePoolOption {    /**     * 数据中心发现资源池     * @param dcName      数据中心     * @param clusterName 集群资源池名称     * @return     */    public ResourcePoolInfo resourcePoolDiscovery(ServiceInstance serviceInstance,String dcName,String clusterName){      //  ServiceInstance serviceInstance = null;        ResourcePoolInfo resPoolInfo = null;        try        {     //       serviceInstance = resourcePoolServiceInstance.getServiceInstance();            Folder rootFolder = serviceInstance.getRootFolder();            Datacenter dc = (Datacenter) new InventoryNavigator(rootFolder).searchManagedEntity("Datacenter", dcName);            ClusterComputeResource clusterResPool = (ClusterComputeResource) new InventoryNavigator(dc).searchManagedEntity("ClusterComputeResource",clusterName);            ResourcePool resPool= clusterResPool.getResourcePool();            resPoolInfo = new ResourcePoolInfo();            resPoolInfo.setName(resPool.getName());            resPoolInfo.setChangeVersion(resPool.getConfig().getChangeVersion());            resPoolInfo.setLastModified(resPool.getConfig().getLastModified());            //cpu配置信息            resPoolInfo.setCpuExpandableReservation(resPool.getConfig().getCpuAllocation().getExpandableReservation());            resPoolInfo.setCpuLevel(resPool.getConfig().getCpuAllocation().getShares().getLevel().name());            resPoolInfo.setCpuLimit(resPool.getConfig().getCpuAllocation().getLimit());            resPoolInfo.setCpuReservation(resPool.getConfig().getCpuAllocation().getReservation());            //内存配置信息            resPoolInfo.setMemExpandableReservation(resPool.getConfig().getMemoryAllocation().getExpandableReservation());            resPoolInfo.setMemLevel(resPool.getConfig().getMemoryAllocation().getShares().getLevel().name());            resPoolInfo.setMemLimit(resPool.getConfig().getMemoryAllocation().getLimit());            resPoolInfo.setMemReservation(resPool.getConfig().getMemoryAllocation().getReservation());            resPoolInfo.setProgId(resPool.getMOR().val);            //主机信息            for(int i=0;i<clusterResPool.getHosts().length;i++)            {                HostSystem host = clusterResPool.getHosts()[i];               // resPoolInfo.setHost(host.getMOR().val);                resPoolInfo.setHost(host.getName());            }            //存储信息            for(int i=0;i<clusterResPool.getDatastores().length;i++)            {                Datastore datastore = clusterResPool.getDatastores()[i];             //   resPoolInfo.setDatastore(datastore.getMOR().val);                resPoolInfo.setDatastore(datastore.getName());            }            //网络信息            for(int i=0;i<clusterResPool.getNetworks().length;i++)            {                Network network = clusterResPool.getNetworks()[i];           //     resPoolInfo.setNetwork(network.getMOR().val);                resPoolInfo.setNetwork(network.getName());            }            setResouceVms(resPoolInfo,resPool);            getChildPools(resPoolInfo,resPool);        }catch(Exception e)        {        }        return resPoolInfo;    }    private void getChildPools(ResourcePoolInfo resPoolInfo,ResourcePool resPool)    {        try        {            System.out.println(resPool.getName());            if(resPool.getResourcePools()!=null && resPool.getResourcePools().length>0)            {                for(int i=0;i<resPool.getResourcePools().length;i++)                {                    ResourcePoolInfo newResPoolInfo = new ResourcePoolInfo();                    ResourcePool newResPool= resPool.getResourcePools()[i];                    newResPoolInfo.setName(newResPool.getName());                    newResPoolInfo.setChangeVersion(newResPool.getConfig().getChangeVersion());                    newResPoolInfo.setLastModified(newResPool.getConfig().getLastModified());                    //cpu配置信息                    newResPoolInfo.setCpuExpandableReservation(newResPool.getConfig().getCpuAllocation().getExpandableReservation());                    newResPoolInfo.setCpuLevel(newResPool.getConfig().getCpuAllocation().getShares().getLevel().name());                    newResPoolInfo.setCpuLimit(newResPool.getConfig().getCpuAllocation().getLimit());                    newResPoolInfo.setCpuReservation(newResPool.getConfig().getCpuAllocation().getReservation());                    //内存配置信息                    newResPoolInfo.setMemExpandableReservation(newResPool.getConfig().getMemoryAllocation().getExpandableReservation());                    newResPoolInfo.setMemLevel(newResPool.getConfig().getMemoryAllocation().getShares().getLevel().name());                    newResPoolInfo.setMemLimit(newResPool.getConfig().getMemoryAllocation().getLimit());                    newResPoolInfo.setMemReservation(newResPool.getConfig().getMemoryAllocation().getReservation());                    newResPoolInfo.setProgId(newResPool.getMOR().val);                    resPoolInfo.setChildResPool(newResPoolInfo);                    setResouceVms(newResPoolInfo,newResPool);                    getChildPools(newResPoolInfo,newResPool);                }            }        }catch(Exception e)        {        }    }    private void setResouceVms(ResourcePoolInfo resPoolInfo,ResourcePool resPool)    {        try        {            if(resPool.getVMs()!=null)            {                for(int i=0;i<resPool.getVMs().length;i++)                {                    resPoolInfo.setVm(resPool.getVMs()[i].getMOR().val);                }            }        }catch(Exception e)        {        }    }}


测试代码:

package com.vmware.main;import com.vmware.pojo.ResourcePoolInfo;import com.vmware.resourcepool.ResourcePoolOption;import com.vmware.util.Session;import com.vmware.vim25.mo.ServiceInstance;import java.util.ArrayList;/** * Created by vixuan-008 on 2015/4/27. */public class ResourcePoolOptionTest {    public static void main(String[] args){        try{            ServiceInstance serviceInstance= Session.getInstance("172.16.1.20", "root", "vmware");            ResourcePoolOption resourcePoolOption=new ResourcePoolOption();            ResourcePoolInfo resourcePoolInfo=resourcePoolOption.resourcePoolDiscovery(serviceInstance,"Datacenter","ehc");            if(resourcePoolInfo!=null){                //资源池名称                System.out.println("pool name is:"+resourcePoolInfo.getName());               //虚拟机信息                ArrayList<String> vms=resourcePoolInfo.getVms();                if(vms.size()>0){                    for(String vm:vms){                        System.out.println("virtualMachine Name is:" + vm);                    }                }                //物理服务器                ArrayList<String> hosts=resourcePoolInfo.getHosts();                if(hosts.size()>0){                    for(String host:hosts){                        System.out.println("HostSystem Name is:" + host);                    }                }            }            serviceInstance.getServerConnection().logout();        }catch (Exception e){            e.printStackTrace();        }    }}

效果展示:




0 0