blob: b91a63e9569b21f7c32c042249b5acb40adf3e9d [file] [log] [blame]
/*
* 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.cloudsigma2.domain;
import com.google.inject.name.Named;
import org.jclouds.javax.annotation.Nullable;
import java.beans.ConstructorProperties;
import java.net.URI;
public class IP {
public static class Builder {
protected Owner owner;
protected String uuid;
protected Server server;
protected URI resourceUri;
/**
* @param uuid Uuid of the ip.
* @return IP Builder
*/
public Builder uuid(String uuid) {
this.uuid = uuid;
return this;
}
/**
* @param owner Owner of the ip.
* @return IP Builder
*/
public Builder owner(Owner owner) {
this.owner = owner;
return this;
}
/**
* @param server Server this IP assigned to
* @return IP Builder
*/
public Builder server(Server server) {
this.server = server;
return this;
}
/**
* @param resourceUri Resource uri
* @return IP Builder
*/
public Builder resourceUri(URI resourceUri) {
this.resourceUri = resourceUri;
return this;
}
public IP build() {
return new IP(uuid, owner, server, resourceUri);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Builder)) return false;
Builder builder = (Builder) o;
if (owner != null ? !owner.equals(builder.owner) : builder.owner != null) return false;
if (resourceUri != null ? !resourceUri.equals(builder.resourceUri) : builder.resourceUri != null)
return false;
if (server != null ? !server.equals(builder.server) : builder.server != null) return false;
if (uuid != null ? !uuid.equals(builder.uuid) : builder.uuid != null) return false;
return true;
}
@Override
public int hashCode() {
int result = owner != null ? owner.hashCode() : 0;
result = 31 * result + (uuid != null ? uuid.hashCode() : 0);
result = 31 * result + (server != null ? server.hashCode() : 0);
result = 31 * result + (resourceUri != null ? resourceUri.hashCode() : 0);
return result;
}
}
protected final Owner owner;
protected final String uuid;
protected final Server server;
@Named("resource_uri")
protected final URI resourceUri;
@ConstructorProperties({
"uuid", "owner", "server", "resource_uri"
})
public IP(String uuid, Owner owner, Server server, URI resourceUri) {
this.owner = owner;
this.uuid = uuid;
this.server = server;
this.resourceUri = resourceUri;
}
/**
* @return Uuid of the ip.
*/
@Nullable
public String getUuid() {
return uuid;
}
/**
* @return Owner of the ip.
*/
public Owner getOwner() {
return owner;
}
/**
* @return Server this IP assigned to
*/
public Server getServer() {
return server;
}
/**
* @return Resource uri
*/
public URI getResourceUri() {
return resourceUri;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof IP)) return false;
IP ip = (IP) o;
if (owner != null ? !owner.equals(ip.owner) : ip.owner != null) return false;
if (resourceUri != null ? !resourceUri.equals(ip.resourceUri) : ip.resourceUri != null) return false;
if (server != null ? !server.equals(ip.server) : ip.server != null) return false;
if (uuid != null ? !uuid.equals(ip.uuid) : ip.uuid != null) return false;
return true;
}
@Override
public int hashCode() {
int result = owner != null ? owner.hashCode() : 0;
result = 31 * result + (uuid != null ? uuid.hashCode() : 0);
result = 31 * result + (server != null ? server.hashCode() : 0);
result = 31 * result + (resourceUri != null ? resourceUri.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "[" +
"owner=" + owner +
", uuid='" + uuid + '\'' +
", server=" + server +
", resourceUri=" + resourceUri +
"]";
}
/**
* Creates DHCP V4 NIC for attaching to server
*
* @param model Interface model
* @param firewallPolicy Firewall policy for interface
* @return server's NIC
*/
public static NIC createDHCPIPv4ConfNIC(Model model, FirewallPolicy firewallPolicy) {
return new NIC.Builder()
.ipV4Configuration(new IPConfiguration(IPConfigurationType.DHCP, null))
.model(model)
.firewallPolicy(firewallPolicy)
.build();
}
/**
* Creates DHCP V4 NIC for attaching to server
*
* @param model Interface model
* @return server's NIC
*/
public static NIC createDHCPIPv4ConfNIC(Model model) {
return createDHCPIPv4ConfNIC(model, null);
}
/**
* Creates DHCP V6 NIC for attaching to server
*
* @param model Interface model
* @param firewallPolicy Firewall policy for interface
* @return server's NIC
*/
public static NIC createDHCPIPv6ConfNIC(Model model, FirewallPolicy firewallPolicy) {
return new NIC.Builder()
.ipV4Configuration(new IPConfiguration(IPConfigurationType.DHCP, null))
.model(model)
.firewallPolicy(firewallPolicy)
.build();
}
/**
* Creates DHCP V6 NIC for attaching to server
*
* @param model Interface model
* @return server's NIC
*/
public static NIC createDHCPIPv6ConfNIC(Model model) {
return createDHCPIPv6ConfNIC(model, null);
}
/**
* Creates NIC with static IP for attaching to server
*
* @param model Interface model
* @param firewallPolicy Firewall policy
* @return server's NIC
*/
public NIC toNIC(Model model, FirewallPolicy firewallPolicy) {
return new NIC.Builder()
.ipV4Configuration(new IPConfiguration(IPConfigurationType.STATIC, this))
.firewallPolicy(firewallPolicy)
.build();
}
/**
* Creates NIC with static IP for attaching to server
*
* @return server's NIC
*/
public NIC toNIC() {
return toNIC(null, null);
}
}