/**
* Copyright 2016-2017 Sixt GmbH & Co. Autovermietung KG
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain a
* copy of the License at http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package com.sixt.service.framework.registry.consul;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
public class ConsulHealthEntry {
enum Status {
Passing, Warning, Critical;
public static Status fromString(String status) {
switch (status) {
case "passing":
return Passing;
case "warning":
return Warning;
case "critical":
return Critical;
default:
return Passing;
}
}
}
private String id;
private Status status;
String address;
int port;
public ConsulHealthEntry(String id, Status status, String address, int port) {
this.id = id;
this.status = status;
this.address = address;
this.port = port;
}
public String getId() {
return id;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public String getAddressAndPort() {
return address + ":" + port;
}
//TODO: implement when we do avail zones
public String getAvailZone() {
return "";
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(id).append(status).append(address).append(port).build();
}
@Override
public boolean equals(Object obj) {
if (obj == null) { return false; }
if (obj == this) { return true; }
if (obj.getClass() != getClass()) {
return false;
}
ConsulHealthEntry rhs = (ConsulHealthEntry) obj;
return new EqualsBuilder().append(id, rhs.id).
append(status, rhs.status).
append(address, rhs.address).
append(port, rhs.port).build();
}
}