
org.jclouds.glesys.domain.ServerDetails Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of glesys Show documentation
Show all versions of glesys Show documentation
jclouds components to access GleSYS
The newest version!
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.jclouds.glesys.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import java.util.Set;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.MoreObjects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
/**
* Detailed information about a server such as cpuCores, hardware configuration
* (cpu, memory and disk), ip addresses, cost, transfer, os and more.
*
* @see
*/
public class ServerDetails extends Server {
public static Builder> builder() {
return new ConcreteBuilder();
}
public Builder> toBuilder() {
return new ConcreteBuilder().fromServerDetails(this);
}
public abstract static class Builder> extends Server.Builder {
protected Server.State state;
protected String description;
protected String templateName;
protected int cpuCores;
protected int memorySizeMB;
protected int diskSizeGB;
protected int transferGB;
protected Cost cost;
protected Set ips = ImmutableSet.of();
/**
* @see ServerDetails#getState()
*/
public T state(Server.State state) {
this.state = checkNotNull(state, "state");
return self();
}
/**
* @see ServerDetails#getDescription()
*/
public T description(String description) {
this.description = checkNotNull(description, "description");
return self();
}
/**
* @see ServerDetails#getTemplateName()
*/
public T templateName(String templateName) {
this.templateName = checkNotNull(templateName, "templateName");
return self();
}
/**
* @see ServerDetails#getCpuCores()
*/
public T cpuCores(int cpuCores) {
this.cpuCores = cpuCores;
return self();
}
/**
* @see ServerDetails#getMemorySizeMB()
*/
public T memorySizeMB(int memorySizeMB) {
this.memorySizeMB = memorySizeMB;
return self();
}
/**
* @see ServerDetails#getDiskSizeGB()
*/
public T diskSizeGB(int diskSizeGB) {
this.diskSizeGB = diskSizeGB;
return self();
}
/**
* @see ServerDetails#getTransferGB()
*/
public T transferGB(int transferGB) {
this.transferGB = transferGB;
return self();
}
/**
* @see ServerDetails#getCost()
*/
public T cost(Cost cost) {
this.cost = checkNotNull(cost, "cost");
return self();
}
/**
* @see ServerDetails#getIps()
*/
public T ips(Set ips) {
this.ips = ImmutableSet.copyOf(checkNotNull(ips, "ips"));
return self();
}
public T ips(Ip... in) {
return ips(ImmutableSet.copyOf(in));
}
public ServerDetails build() {
return new ServerDetails(id, hostname, datacenter, platform, state, description, templateName, cpuCores, memorySizeMB, diskSizeGB, transferGB, cost, ips);
}
public T fromServerDetails(ServerDetails in) {
return super.fromServer(in)
.state(in.getState())
.description(in.getDescription())
.templateName(in.getTemplateName())
.cpuCores(in.getCpuCores())
.memorySizeMB(in.getMemorySizeMB())
.diskSizeGB(in.getDiskSizeGB())
.transferGB(in.getTransferGB())
.cost(in.getCost())
.ips(in.getIps());
}
}
private static class ConcreteBuilder extends Builder {
@Override
protected ConcreteBuilder self() {
return this;
}
}
private final Server.State state;
private final String description;
private final String templateName;
private final int cpuCores;
private final int memorySizeMB;
private final int diskSizeGB;
private final int transferGB;
private final Cost cost;
private final Set ips;
@ConstructorProperties({
"serverid", "hostname", "datacenter", "platform", "state", "description", "templatename", "cpucores",
"memorysize", "disksize", "transfer", "cost", "iplist"
})
protected ServerDetails(String id, String hostname, String datacenter, String platform, @Nullable Server.State state,
@Nullable String description, String templateName, int cpuCores, int memorySizeMB,
int diskSizeGB, int transferGB, Cost cost, @Nullable Set ips) {
super(id, hostname, datacenter, platform);
this.state = state;
this.description = description;
this.templateName = checkNotNull(templateName, "templateName");
this.cpuCores = cpuCores;
this.memorySizeMB = memorySizeMB;
this.diskSizeGB = diskSizeGB;
this.transferGB = transferGB;
this.cost = checkNotNull(cost, "cost");
this.ips = ips == null ? ImmutableSet.of() : ImmutableSet.copyOf(checkNotNull(ips, "ips"));
}
/**
* @return the state of the server (e.g. "running")
*/
public Server.State getState() {
return this.state;
}
/**
* @return the user-specified description of the server
*/
public String getDescription() {
return this.description;
}
/**
* @return the name of the template used to create the server
*/
public String getTemplateName() {
return this.templateName;
}
/**
* @return number of cores on the server
*/
public int getCpuCores() {
return this.cpuCores;
}
/**
* @return the memory of the server in MB
*/
public int getMemorySizeMB() {
return this.memorySizeMB;
}
/**
* @return the disk of the server in GB
*/
public int getDiskSizeGB() {
return this.diskSizeGB;
}
/**
* @return the transfer of the server
*/
public int getTransferGB() {
return this.transferGB;
}
/**
* @return details of the cost of the server
*/
public Cost getCost() {
return this.cost;
}
/**
* @return the ip addresses assigned to the server
*/
public Set getIps() {
return this.ips;
}
protected ToStringHelper string() {
return super.string().add("state", state).add("description", description).add("templateName", templateName)
.add("cpuCores", cpuCores).add("memorySizeMB", memorySizeMB).add("diskSizeGB", diskSizeGB)
.add("transferGB", transferGB).add("cost", cost).add("ips", ips);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy