public Vdc withName(String name) { setName(name); return this; } }
/** * Single VDC constructor. */ public ObjectConfig(Protocol protocol, int port, String... hosts) { this(protocol, port, new Vdc(hosts)); }
public Vdc(String name, List<? extends Host> hosts) { this.name = name; this.hosts = createVdcHosts(hosts); }
@Override public void runHealthCheck(Host host) { // header is workaround for STORAGE-1833 PingResponse response = client.resource(getRequestUri(host, "/?ping")).header("x-emc-namespace", "x") .get(PingResponse.class); if (host instanceof VdcHost) { PingItem.Status status = PingItem.Status.OFF; if (response != null && response.getPingItemMap() != null) { PingItem pingItem = response.getPingItemMap().get(PingItem.MAINTENANCE_MODE); if (pingItem != null) status = pingItem.getStatus(); } if (status == PingItem.Status.ON) ((VdcHost) host).setMaintenanceMode(true); else ((VdcHost) host).setMaintenanceMode(false); } }
@Override public String stringFromValue(Object value) { if (value == null) return null; Vdc vdc = (Vdc) value; StringBuilder stringBuilder = new StringBuilder(); String separator = ""; for (Host host : vdc.getHosts()) { stringBuilder.append(separator).append(host.getName()); separator = ","; } return stringBuilder.toString(); } }
public EcsHostListProvider withVdcs(Vdc... vdcs) { setVdcs(Arrays.asList(vdcs)); return this; } }
public Vdc(String... hostNames) { this.name = hostNames[0]; hosts = new ArrayList<VdcHost>(); for (String hostName : hostNames) { hosts.add(new VdcHost(this, hostName)); } }
@XmlTransient public Map<String, PingItem> getPingItemMap() { Map<String, PingItem> pingItemMap = null; if (pingItems != null) { pingItemMap = new HashMap<String, PingItem>(); for (PingItem item : pingItems) { pingItemMap.put(item.getName(), item); } } return pingItemMap; }
@Override public boolean isHealthy() { return !isMaintenanceMode() && super.isHealthy(); }
@Override public int hashCode() { return getName().hashCode(); }
@Override public Host resolveHost() { return getVdcs().get(0).getHosts().get(0); }
@Override public Object valueFromString(String param) { if (param == null) return null; return new Vdc(param.split(",")); }
protected List<VdcHost> createVdcHosts(List<? extends Host> hosts) { List<VdcHost> vdcHosts = new ArrayList<VdcHost>(); for (Host host : hosts) { vdcHosts.add(new VdcHost(this, host.getName())); } return vdcHosts; }
@Override public String toString() { return vdc.getName() + ":" + super.toString(); }
/** * Sets a single server host */ public void setHost(String host) { setVdcs(Collections.singletonList(new Vdc(host))); }