vmware vsphere 物理机 Hostsystem

Hostsystem 物理机

public List listHost(ServiceInstance si, String dcName, String clusterName,String name) throws Exception
{
List vcHosts = new ArrayList();
if (si != null)
{
Folder rootFolder = si.getRootFolder();
ManagedEntity[] hosts = null;
boolean ifDcNameEmpty = ( dcNamenull || “”.equals(dcName));
boolean ifClusterNameEmpty = ( clusterName
null || “”.equals(clusterName));
if( ifDcNameEmpty && ifClusterNameEmpty){
hosts = new InventoryNavigator(rootFolder).searchManagedEntities(“HostSystem”);
}else if(ifClusterNameEmpty){
Datacenter dc = (Datacenter) new InventoryNavigator(rootFolder).searchManagedEntity(“Datacenter”, dcName);
hosts = new InventoryNavigator(dc).searchManagedEntities(“HostSystem”);
}else{
Datacenter dc = (Datacenter) new InventoryNavigator(rootFolder).searchManagedEntity(“Datacenter”, dcName);
ClusterComputeResource cluster = (ClusterComputeResource)new InventoryNavigator(dc).searchManagedEntity(“ClusterComputeResource”,clusterName);
hosts = new InventoryNavigator(cluster).searchManagedEntities(“HostSystem”);
}
if(hosts!=null){
for(int i=0;i<hosts.length;i++)
{
HostSystem host = (HostSystem)hosts[i];

						if(null != name && !"".equals(name) && !host.getName().contains(name))
						{
							continue;
						}
						Datastore[] datastores=host.getDatastores();
						long datastoreCapacity=0;
						long datastoreFreeSpace=0;
						if(null!=datastores) {
							for(Datastore datastore:datastores) {
								datastoreCapacity+=datastore.getSummary().getCapacity();
								datastoreFreeSpace+=datastore.getSummary().getFreeSpace();
							}
						}
						JSONObject object = new JSONObject();
						
						HostHardwareInfo h=host.getHardware();
						String cpuVersion =h.getCpuPkg()[0].getDescription();
						//String hostVersion = host.getHostImageConfigManager().hostImageConfigGetProfile().getName();
						String systemModel= h.getSystemInfo().getModel();
						String systemProducter=h.getSystemInfo().getVendor();
					    String biosVersion=h.getBiosInfo().getBiosVersion();
					    long cpuhz=h.getCpuInfo().getHz()/1024/1024/1024;
					    object.put("cpuVersion", cpuVersion);
					    //object.put("hostVersion", hostVersion);
					    object.put("systemModel", systemModel);
					    object.put("systemProducter", systemProducter);
					    object.put("biosVersion", biosVersion);
					    object.put("cpuhz", cpuhz);
					    object.put("cpuCore", h.getCpuInfo().getNumCpuCores());
					    
						VcHost vchost = new VcHost();
						vchost.setStorageCapacity(datastoreCapacity/1024/1024/1024);
						vchost.setStorageAvaiable(datastoreFreeSpace/1024/1024/1024);
	        			vchost.setName(host.getName());
	        			
	        			ManagedEntity cluster =getTypeFromParentEntity(host,"ClusterComputeResource");
	        			if(cluster != null){ // 防止生产环境数据异常,查不到集群报错
	        			    vchost.setClusterName(cluster.getName());
                            vchost.setClusterUuid(cluster.getMOR().get_value());
                           
	        			}
	        			 ManagedEntity datacenter =getTypeFromParentEntity(host,"Datacenter");
                            vchost.setDcName(datacenter.getName());
                            vchost.setDcUuid(datacenter.getMOR().get_value());
                            vchost.setStatus(host.getSummary().getOverallStatus().name()); //red(警示)、green(正常)、yellow(警告)、gray(未知)
                            HostHardwareSummary hardwareSummary =host.getSummary().getHardware();
                            vchost.setHypersivorUuid(hardwareSummary.getUuid());
                            vchost.setCpuCapacity((hardwareSummary.getCpuMhz()*hardwareSummary.getNumCpuCores()));
                            vchost.setCpuCore(hardwareSummary.getNumCpuCores());
                            vchost.setMemoryCapacity(hardwareSummary.getMemorySize()/1024/1024);
                            if(HostSystemConnectionState.connected.toString().equals(host.getRuntime().getConnectionState().name())){
                            	HostListSummaryQuickStats quickStats=host.getSummary().getQuickStats();
                            	 vchost.setCpuAvaiable(vchost.getCpuCapacity()-quickStats.getOverallCpuUsage());
                            	 vchost.setCpuUsaged(String.valueOf(Math.round(quickStats.getOverallCpuUsage()*100/vchost.getCpuCapacity()))); 
                            	 vchost.setMemoryAvaiable(vchost.getMemoryCapacity()-quickStats.getOverallMemoryUsage().doubleValue());
                                 vchost.setMemoryUsaged(String.valueOf(Math.round(quickStats.getOverallMemoryUsage()*100/vchost.getMemoryCapacity()))); //百分号后面数字
                                 vchost.setUptime(Math.round(quickStats.getUptime() /3600)); //单位小时
                            }
                            vchost.setMetadata(object);
                            vcHosts.add(vchost);
					}
			}
	 }
	log.info("count host:{}",vcHosts.size());
	return vcHosts;
}



ManagedEntity getTypeFromParentEntity(ManagedEntity me, String targetType) {
    try {
        if(me.getParent() != null){
            if (targetType.equals(me.getParent().getMOR().getType())) {
                return me.getParent();
            } else {
                return getTypeFromParentEntity(me.getParent(), targetType);
            }
        }
    } catch (Exception e) {
        log.error( "getTypeFromParent", e);
    }
    return null;
}
发布了5 篇原创文章 · 获赞 0 · 访问量 16

猜你喜欢

转载自blog.csdn.net/pingzhilidexingfu/article/details/105139601