package net.juniper.contrail.sandesh; import java.util.Map; import net.juniper.contrail.contrail_vrouter_api.ContrailVRouterApi; import net.juniper.contrail.vcenter.MainDB; import net.juniper.contrail.vcenter.VCenterMonitor; import net.juniper.contrail.vcenter.VCenterNotify; import net.juniper.contrail.vcenter.VRouterNotifier; import net.juniper.contrail.vcenter.VncDB; import com.vmware.vim25.mo.Datacenter; import com.vmware.vim25.mo.VmwareDistributedVirtualSwitch; public class VCenterPluginResp { private VCenterPlugin vCenterPluginInfo; public VCenterPluginResp(VCenterPluginReq req) { vCenterPluginInfo = new VCenterPlugin(); vCenterPluginInfo.setMaster(VCenterMonitor.isZookeeperLeader()); if (VCenterMonitor.isZookeeperLeader()) { populateVRouterStats(); populateApiServerInfo(); populateVCenterServerInfo(); populatePluginState(); populateVNetworkStats(); } } private void populatePluginState() { vCenterPluginInfo.setPluginSessions( (vCenterPluginInfo.getApiServerInfo().getConnected() == true) && (vCenterPluginInfo.getVCenterServerInfo().getConnected() == true) && (( vCenterPluginInfo.getVRouterStats().getDown() == 0))); } private void populateVRouterStats() { int up = 0; int down = 0; Map<String, ContrailVRouterApi> apiMap = VRouterNotifier.getVrouterApiMap(); if (apiMap == null) { return; } for (Map.Entry<String, ContrailVRouterApi> entry: apiMap.entrySet()) { Boolean active = (entry.getValue() != null); if (active == Boolean.TRUE) { up++; } else { down++; } } vCenterPluginInfo.getVRouterStats().setTotal(apiMap.size()); vCenterPluginInfo.getVRouterStats().setUp(up); vCenterPluginInfo.getVRouterStats().setDown(down); } private void populateApiServerInfo() { ApiServerInfo apiServerInfo = vCenterPluginInfo.getApiServerInfo(); VncDB vncDB = VCenterNotify.getVncDB(); if (vncDB != null) { apiServerInfo.setIpAddr(vncDB.getApiServerAddress()); apiServerInfo.setPort(vncDB.getApiServerPort()); apiServerInfo.setConnected(vncDB.isServerAlive()); } } private void populateVCenterServerInfo() { VCenterServerInfo vCenterServerInfo = vCenterPluginInfo.getVCenterServerInfo(); if (VCenterNotify.getVcenterDB() != null) { vCenterServerInfo.setUrl(VCenterNotify.getVcenterDB().getVcenterUrl() ); vCenterServerInfo.setConnected(VCenterNotify.getVCenterConnected()); vCenterServerInfo.setOperationalStatus(VCenterNotify.getVcenterDB().getOperationalStatus()); Datacenter dc = VCenterNotify.getVcenterDB().getDatacenter(); if (dc != null && dc.getMOR() != null) { vCenterServerInfo.setDatacenterMor(dc.getMOR().getVal()); } VmwareDistributedVirtualSwitch dvs = VCenterNotify.getVcenterDB().getDvs(); if (dvs != null && dvs.getMOR() != null) { vCenterServerInfo.setDvsMor(dvs.getMOR().getVal()); } } } private void populateVNetworkStats() { vCenterPluginInfo.getVNetworkStats().setTotal(MainDB.getVNs().size()); } public void writeObject(StringBuilder s) { if (s == null) { // log error return; } s.append("<vCenterPluginIntrospect type=\"sandesh\">"); vCenterPluginInfo.writeObject(s); s.append("</vCenterPluginIntrospect>"); } }