/**
* Licensed to The Apereo Foundation under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
*
* The Apereo Foundation licenses this file to you under the Educational
* Community 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://opensource.org/licenses/ecl2.txt
*
* 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 org.opencastproject.serviceregistry.impl.jpa;
import org.opencastproject.serviceregistry.api.HostRegistration;
import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
/**
* A record of a host providing Matterhorn services.
*/
@Entity(name = "HostRegistration")
@Access(AccessType.FIELD)
@Table(name = "mh_host_registration", uniqueConstraints = @UniqueConstraint(columnNames = "host"))
@NamedQueries({
@NamedQuery(name = "HostRegistration.getMaxLoad", query = "SELECT sum(hr.maxLoad) FROM HostRegistration hr where hr.active = true"),
@NamedQuery(name = "HostRegistration.getMaxLoadByHostName", query = "SELECT hr.maxLoad FROM HostRegistration hr where hr.baseUrl = :host and hr.active = true"),
@NamedQuery(name = "HostRegistration.byHostName", query = "SELECT hr from HostRegistration hr where hr.baseUrl = :host"),
@NamedQuery(name = "HostRegistration.getAll", query = "SELECT hr FROM HostRegistration hr where hr.active = true") })
public class HostRegistrationJpaImpl implements HostRegistration {
@Id
@Column(name = "id")
@GeneratedValue
private Long id;
@Column(name = "host", nullable = false, length = 255)
private String baseUrl;
@Column(name = "address", nullable = false, length = 39)
private String ipAddress;
@Column(name = "memory", nullable = false)
private long memory;
@Column(name = "cores", nullable = false)
private int cores;
/**
* The maximum load this host can run. This is not necessarily 1-to-1 with the number of jobs.
*/
@Column(name = "max_load", nullable = false)
private float maxLoad;
@Column(name = "online", nullable = false)
private boolean online = true;
@Column(name = "active", nullable = false)
private boolean active = true;
@Column(name = "maintenance", nullable = false)
private boolean maintenanceMode = false;;
/**
* Creates a new host registration which is online
*/
public HostRegistrationJpaImpl() {
}
public HostRegistrationJpaImpl(String baseUrl, String address, long memory, int cores, float maxLoad, boolean online,
boolean maintenance) {
this.baseUrl = baseUrl;
this.ipAddress = address;
this.memory = memory;
this.cores = cores;
this.maxLoad = maxLoad;
this.online = online;
this.maintenanceMode = maintenance;
this.active = true;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public String getBaseUrl() {
return baseUrl;
}
@Override
public void setBaseUrl(String baseUrl) {
this.baseUrl = baseUrl;
}
@Override
public String getIpAddress() {
return ipAddress;
}
@Override
public void setIpAddress(String address) {
this.ipAddress = address;
}
@Override
public long getMemory() {
return memory;
}
@Override
public void setMemory(long memory) {
this.memory = memory;
}
@Override
public int getCores() {
return cores;
}
@Override
public void setCores(int cores) {
this.cores = cores;
}
@Override
public float getMaxLoad() {
return maxLoad;
}
@Override
public void setMaxLoad(float maxLoad) {
this.maxLoad = maxLoad;
}
@Override
public boolean isOnline() {
return online;
}
@Override
public void setOnline(boolean online) {
this.online = online;
}
@Override
public boolean isActive() {
return active;
}
@Override
public void setActive(boolean active) {
this.active = active;
}
@Override
public boolean isMaintenanceMode() {
return maintenanceMode;
}
@Override
public void setMaintenanceMode(boolean maintenanceMode) {
this.maintenanceMode = maintenanceMode;
}
@Override
public int hashCode() {
return toString().hashCode();
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof HostRegistration))
return false;
HostRegistration registration = (HostRegistration) obj;
return baseUrl.equals(registration.getBaseUrl());
}
@Override
public String toString() {
return baseUrl;
}
}