使用VMware VSphere WebService SDK进行开发 (六)——检测告警信息
2023-09-27 14:29:21 时间
获取告警信息相对而言比较简单点,这里先陈述告警信息的pojo类,作为存储告警信息的源头(省略getter和setter方法):
public class AlarmItem //对象 private String ObjectName; //状态 private ManagedEntityStatus overallStatus; //名称 private String alarmName; //触发时间 private Date time; //确认时间 private Date acknowledgedTime; //确认者 private String acknowledgedByUser; //是否被确认 private Boolean acknowledged; }
以获取主机告警信息为例:
public static List AlarmItem getHostAlarms(String hostName) throws Exception List AlarmItem ansList = null; ManagedObjectReference hostmor = getHostByHostName(hostName); ansList = getAlarms(hostmor); return ansList; }这里先根据主机名称获取主机的对象(HostSystem),相关代码可以参考前面的相关文章。
接下去就是获取告警的方法getAlarms(ManagedObjectReference mor):
private static List AlarmItem getAlarms(ManagedObjectReference mor) throws Exception List AlarmItem ansList = new ArrayList AlarmItem List AlarmState list = vimPort.getAlarmState(alarmManager, mor); for(AlarmState alarmState : list) if(alarmState.getOverallStatus().toString().equals("YELLOW") || alarmState.getOverallStatus().toString().equals("RED")) AlarmItem alarmItem = new AlarmItem(); ManagedObjectReference alarm = alarmState.getAlarm(); if(alarm!=null) PropertyFilterSpec alarmFilterSpec = createAlarmFilterSpec(alarm); ArrayList PropertyFilterSpec listpfs = new ArrayList PropertyFilterSpec listpfs.add(alarmFilterSpec); List ObjectContent listobjcont = retrievePropertiesAllObjects(listpfs); if(listobjcont != null) ObjectContent oc = (ObjectContent) listobjcont.get(0); AlarmInfo alarmInfo = (AlarmInfo) oc.getPropSet().get(0).getVal(); alarmItem.setAlarmName(alarmInfo.getName()); alarmItem.setAcknowledged(alarmState.isAcknowledged()); alarmItem.setAcknowledgedByUser(alarmState.getAcknowledgedByUser()); alarmItem.setAcknowledgedTime(DateConvert.convertToDate(alarmState.getAcknowledgedTime())); alarmItem.setOverallStatus(alarmState.getOverallStatus()); alarmItem.setTime(DateConvert.convertToDate(alarmState.getTime())); alarmItem.setObjectName(getObjectName(alarmState.getEntity())); ansList.add(alarmItem); return ansList; }
private static PropertyFilterSpec createAlarmFilterSpec(ManagedObjectReference eventHistoryCollectorRef) PropertySpec propSpec = new PropertySpec(); propSpec.setAll(new Boolean(false)); propSpec.getPathSet().add("info"); propSpec.setType(eventHistoryCollectorRef.getType()); ObjectSpec objSpec = new ObjectSpec(); objSpec.setObj(eventHistoryCollectorRef); objSpec.setSkip(new Boolean(false)); PropertyFilterSpec spec = new PropertyFilterSpec(); spec.getPropSet().add(propSpec); spec.getObjectSet().add(objSpec); return spec; private static String getObjectName(ManagedObjectReference mor) throws Exception String objectName = null; PropertySpec propSpec = new PropertySpec(); propSpec.setAll(new Boolean(false)); propSpec.getPathSet().add("name"); propSpec.setType(mor.getType()); ObjectSpec objSpec = new ObjectSpec(); objSpec.setObj(mor); objSpec.setSkip(new Boolean(false)); PropertyFilterSpec spec = new PropertyFilterSpec(); spec.getPropSet().add(propSpec); spec.getObjectSet().add(objSpec); ArrayList PropertyFilterSpec listpfs = new ArrayList PropertyFilterSpec listpfs.add(spec); List ObjectContent listobjcont = retrievePropertiesAllObjects(listpfs); if(listobjcont != null) ObjectContent oc = (ObjectContent) listobjcont.get(0); objectName = (String) oc.getPropSet().get(0).getVal(); return objectName; }这样就可以获取相关的主机告警信息。
对于其他的,比如虚拟机的告警信息就可以这样:
public static List AlarmItem getVmAlarms(String vmName) throws Exception List AlarmItem ansList = null; ManagedObjectReference hostmor = getVmByVmName(vmName); ansList = getAlarms(hostmor); return ansList; }对于其他的譬如vCenter, Cluster, Datacenter的告警就不一一赘述了,相信看得懂上面代码的小伙伴一定能很快的自己写出实现的方法。
这个系列暂时到此为止,如有意见或者建议的小伙伴记得在下方留言哦~
RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像 buildroot虽然灵活,但是基于实际情况,本身是侧重驱动和应用定制开发的只定制一次文件系统投入有点多,还不如直接ubunt自己交叉编译依赖库,做一些库的移植裁剪。 于是本篇就使用ubuntu系统了,至于其他库自己下源码在宿主机交叉编译号后,再拷贝过去或者直接在板子上编译也行(只是会比较慢),但是意义不大,因为开发过程肯定是用宿主机,不然核心板编译太慢,在编译上会花费不少可以省去的时间。
相关文章
- 75Linux - VMware虚拟机三种联网方法( Host-Only私有网络共享主机:默认使用VMnet1 )
- 最新VMware虚拟机安装Linux系统图文教程(超详细)
- Win10开启Hyper-V后无法运行VMware虚拟机的解决方法
- Ubuntu18.04 虚拟机使用 NAT 模式设置静态 IP 并可以成功访问互联网(VMWare下)
- VMWare安装苹果操作系统OS X
- 虚拟机安装(Vmware+kail)安装+配置全家桶
- #VMware#ESXI 修改主机的控制台HTTP/HTTPS端口
- VMware全面更新产品线 Workspace ONE乃重中之重
- 反应神速!VMware紧急修复黑客大赛被攻破漏洞
- VMWare中Linux虚拟机设置静态IP上网的设置方法