欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。

欢迎跳转到本文的原文链接:https://honeypps.com/backend/vmware-vsphere-webservice-sdk-warn-info/

获取告警信息相对而言比较简单点,这里先陈述告警信息的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的告警就不一一赘述了,相信看得懂上面代码的小伙伴一定能很快的自己写出实现的方法。

这个系列暂时到此为止,如有意见或者建议的小伙伴记得在下方留言哦~

欢迎跳转到本文的原文链接:https://honeypps.com/backend/vmware-vsphere-webservice-sdk-warn-info/

欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。

使用VMware VSphere WebService SDK进行开发 (六)——检测告警信息相关推荐

  1. 使用VMware VSphere WebService SDK进行开发 (一)——基本信息阐述

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  2. 使用VMware VSphere WebService SDK进行开发 (七)——获取数据中心、集群、主机、虚拟机的目录结构

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  3. 使用VMware VSphere WebService SDK进行开发 (二)——获取虚拟机cpu的使用情况

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  4. 使用VMware VSphere WebService SDK进行开发 (五)——根据虚拟机的名称获取对应主机的IP地址

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  5. 使用VMware VSphere WebService SDK进行开发 (四)——获取集群(Cluster, ComputeResource)的相关信息

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  6. 使用VMware VSphere WebService SDK进行开发 (三)——获取主机(HostSystem)的基本信息

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  7. VMware vSphere开发(1)安装配置VMware vSphere Web Services SDK的运行环境

    一.准备 使用VMware vSphere Web Services SDK开发Java Web-service客户端应用,需要使用到java SDK和Java Web Service开发工具,如下: ...

  8. VMware vSphere Web Services SDK编程指南(二)-Java 开发设置

    Java 开发设置 这节说明如何设置开发java客户端的开发环境. 主要包括以下内容: ■ Java 开发的各项要求 ■ java 开发设置 ■ 生成存根和编译类文件 ■ 运行 SimpleClien ...

  9. VMware vSphere Web Services SDK编程指南(一)-SDK简介

    vSphere Web Services SDK 简介 VMware vSphere® Web Services SDK 包含了与VMware vSphere API一起工作所需的所有组件,如 WSD ...

最新文章

  1. linux xxd查看二进制文件命令
  2. python2 与 python3 语法区别
  3. TortoiseSVN操作
  4. 不在 sudoers 文件中。此事将被报告_快餐包装中检出致癌物质?麦当劳、汉堡王回应!...
  5. 美团饿了么:严禁诱导强迫骑手注册个体工商户
  6. Since WWDC released the first developer
  7. 迹中元素可交换性的证明tr(AB)=tr(BA)
  8. UOS (deepin)刻录u盘安装系统
  9. k2p华硕系统怎么设置_双频路由器怎么设置网速快(k2p刷华硕怎么设置网速好)
  10. 路由与交换技术(交换机中的冗余链路管理)
  11. pythonurllib爬虫教学_Python学习教程:这里是Python爬虫的起点,抢占资源啦
  12. 通过CSS样式缩放图片导致图片模糊的解决方案
  13. Nginx Web 基础入门
  14. 数据库PostrageSQL-证书认证
  15. 十大老牌黑客之:米特尼克
  16. 源生的html属性js,使用源生JS自定义动画(支持多个属性)
  17. 两数之差的补码等于被减数的补码与减数相反数的补码。_二进制的原码、反码、补码...
  18. 新概念英语第一册 (2)
  19. 有哪些投资小的生意(盘点四个投资小风险低的生意)
  20. 重装系统win10安装教程

热门文章

  1. python字典有什么用_在Python中使用范围作为字典键,我有什么选...
  2. Matlab随笔之求解线性方程
  3. springboot 项目部署为war项目
  4. Powercli的一些使用案例
  5. 窗体间传值和窗体间互操作
  6. 不要“个人英雄主义”,物联网安全共同体更稳固
  7. Java代码质量监控工具Sonar安装
  8. 如何监控和提高IIS的性能
  9. 一个简单的防爬虫脚本(转载欧彬)
  10. 牛客 - 收集纸片(最短哈密顿路径-状压dp)