![JAR search and dependency download from the Maven repository](/logo.png)
org.openstack4j.openstack.compute.domain.NovaServerCreate Maven / Gradle / Ivy
package org.openstack4j.openstack.compute.domain;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.openstack4j.model.compute.BlockDeviceMappingCreate;
import org.openstack4j.model.compute.Flavor;
import org.openstack4j.model.compute.Image;
import org.openstack4j.model.compute.NetworkCreate;
import org.openstack4j.model.compute.Personality;
import org.openstack4j.model.compute.Server.DiskConfig;
import org.openstack4j.model.compute.ServerCreate;
import org.openstack4j.model.compute.builder.ServerCreateBuilder;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;
import com.fasterxml.jackson.databind.node.BinaryNode;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@JsonRootName("server")
public class NovaServerCreate implements ServerCreate {
private static final long serialVersionUID = 1L;
private String name;
private String adminPass;
private String imageRef;
private String flavorRef;
private String accessIPv4;
private String accessIPv6;
private Integer min;
private Integer max;
private DiskConfig diskConfig = DiskConfig.MANUAL;
@JsonProperty("metadata")
private Map metadata = new HashMap();
@JsonProperty("user_data")
private String userData;
@JsonProperty("key_name")
private String keyName;
@JsonProperty("availability_zone")
private String availabilityZone;
@JsonProperty("config_drive")
private boolean configDrive;
@JsonIgnore
private transient Map schedulerHints;
@JsonProperty("security_groups")
private List securityGroups;
@JsonProperty("networks")
private List networks = Lists.newArrayList();
private List personality;
@JsonProperty("block_device_mapping_v2")
private List blockDeviceMapping = Lists.newArrayList();
public static ServerCreateBuilder builder() {
return new ServerCreateConcreteBuilder();
}
@Override
public ServerCreateBuilder toBuilder() {
return new ServerCreateConcreteBuilder(this);
}
public String getName() {
return name;
}
public String getAdminPass() {
return adminPass;
}
public String getImageRef() {
return imageRef;
}
public String getFlavorRef() {
return flavorRef;
}
@Override
public String getAccessIPv4() {
return accessIPv4;
}
@Override
public String getAccessIPv6() {
return accessIPv6;
}
@Override
public Integer getMin() {
return min;
}
@Override
public Integer getMax() {
return max;
}
@Override
public DiskConfig getDiskConfig() {
return diskConfig;
}
@Override
public String getKeyName() {
return keyName;
}
@Override
public String getUserData() {
return userData;
}
@JsonIgnore
@Override
public Map getMetaData() {
return metadata;
}
@Override
public List extends SecurityGroup> getSecurityGroups() {
return securityGroups;
}
@Override
public String getAvailabilityZone() {
return availabilityZone;
}
@JsonIgnore
@Override
public Map getSchedulerHints() {
return schedulerHints;
}
public boolean isConfigDrive() {
return configDrive;
}
@Override
public List extends NetworkCreate> getNetworks() {
return networks;
}
public List getPersonality() {
return personality;
}
@Override
public void addPersonality(String path, String contents) {
if (personality == null)
personality = Lists.newArrayList();
personality.add(new Personality(path, contents));
}
@Override
public void addSecurityGroup(String name) {
if (securityGroups == null)
securityGroups = Lists.newArrayList();
securityGroups.add(new SecurityGroupInternal(name));
}
@Override
public void addNetwork(String id, String fixedIP) {
networks.add(new NovaNetworkCreate(id, fixedIP));
}
@Override
public void addNetworkPort(String id) {
networks.add(new NovaNetworkCreate(null,null,id));
}
static class SecurityGroupInternal implements SecurityGroup {
private static final long serialVersionUID = 1L;
private String name;
SecurityGroupInternal() { }
SecurityGroupInternal(String name) { this.name = name; }
@Override
public String getName() {
return name;
}
}
public static class ServerCreateConcreteBuilder implements ServerCreateBuilder {
NovaServerCreate m;
ServerCreateConcreteBuilder() {
this(new NovaServerCreate());
}
ServerCreateConcreteBuilder(NovaServerCreate m) {
this.m = m;
}
public ServerCreateConcreteBuilder name(String name) {
m.name = name;
return this;
}
public ServerCreateConcreteBuilder flavor(String flavorId) {
m.flavorRef = flavorId;
return this;
}
public ServerCreateConcreteBuilder flavor(Flavor flavor) {
m.flavorRef = flavor.getId();
return this;
}
public ServerCreateConcreteBuilder image(String imageId) {
m.imageRef = imageId;
return this;
}
public ServerCreateConcreteBuilder image(Image image) {
m.imageRef = image.getId();
return this;
}
public ServerCreateConcreteBuilder zone(String availabilityZone) {
m.availabilityZone = availabilityZone;
return this;
}
@Override
public ServerCreateConcreteBuilder networks(List idList) {
if (idList != null) {
for (String id : idList) {
m.addNetwork(id, null);
}
}
return this;
}
@Override
public ServerCreateBuilder addNetworkPort(String portId) {
m.addNetworkPort(portId);
return this;
}
@Override
public ServerCreateBuilder addSecurityGroup(String name) {
if (name != null && !name.isEmpty())
m.addSecurityGroup(name);
return this;
}
@Override
public ServerCreateBuilder addPersonality(String path, String contents) {
if (path == null || contents == null) return this;
if (m.personality == null)
m.personality = Lists.newArrayList();
m.personality.add(new Personality(path, new BinaryNode(contents.getBytes()).asText()));
return this;
}
@Override
public ServerCreateBuilder keypairName(String name) {
m.keyName = name;
return this;
}
@Override
public ServerCreateBuilder availabilityZone(String availabilityZone) {
m.availabilityZone = availabilityZone;
return this;
}
@Override
public ServerCreate build() {
return m;
}
@Override
public ServerCreateConcreteBuilder from(ServerCreate in) {
m = (NovaServerCreate)in;
return this;
}
@Override
public ServerCreateBuilder blockDevice(BlockDeviceMappingCreate blockDevice) {
m.blockDeviceMapping.add(blockDevice);
return this;
}
@Override
public ServerCreateBuilder userData(String userData) {
m.userData = userData;
return this;
}
@Override
public ServerCreateBuilder addMetadataItem(String key, String value) {
if (m.metadata == null)
m.metadata = Maps.newHashMap();
m.metadata.put(key, value);
return this;
}
@Override
public ServerCreateBuilder addMetadata(Map metadata) {
m.metadata = metadata;
return this;
}
@Override
public ServerCreateBuilder addSchedulerHint(String key, String value) {
if (m.schedulerHints == null)
m.schedulerHints = Maps.newHashMap();
m.schedulerHints.put(key, value);
return this;
}
@Override
public ServerCreateBuilder addSchedulerHints(Map schedulerHints) {
m.schedulerHints = schedulerHints;
return this;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy