Vijava 学习笔记之ResourcePool(基础配置信息)
2015-04-28 11:28
316 查看
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 参数集: VirtualE1000 VirtualPCNet32 VirtualVmxnet VirtualVmxnet2 VirtualVmxnet3 Unknown*/ 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(); } } }
效果展示:
相关文章推荐
- Vijava 学习笔记之VirtualMachine(基础配置信息{VirtualMachineConfigSummary})
- Vijava学习笔记之DataCenter(基础配置信息)
- Vijava学习笔记之Cluster(基础配置信息)
- Vijava 学习笔记之 DataStore(基础配置信息)
- Vijava 学习笔记之NetWork(基础配置信息)
- Vijava 学习笔记之(VirtualMachine 获取网卡配置信息)
- Vijava 学习笔记之(获取自定义规范定义的IP相关配置信息)
- Python基础学习笔记(一)安装以及IDE的配置
- Debian系统学习笔记(2):网卡配置信息
- Vijava 学习笔记之(获取用户自定义规范相关信息)
- Yii学习笔记之一(安装与基础环境的配置)
- Vijava 学习笔记之(Cluster 关联资源信息:CPU、内存、Datastore容量信息)
- 博科SAN交换机学习笔记之二:配置文件备份与固件升级 作者 LiaoJL | 转载时请务必以超链接形式标明文章原文链接和作者信息及本版权声明。 原文链接:http://www.liaojl.co
- WebX学习笔记2--项目基础文件配置
- 东软学习,hibernate初级学习的部分截图和笔记(一)-入门以及XMl基础配置
- 《objective-c基础教程》学习笔记 (一)—— 开发环境配置和简单类型输出
- 密码学基本概念与信息理论基础学习笔记
- DNS与BIND学习笔记-基础知识及配置详解
- 黑马程序员-Java学习笔记之容易让人忽视的环境变量配置和语法基础