org.openstack4j.openstack.image.domain.GlanceImage Maven / Gradle / Ivy
package org.openstack4j.openstack.image.domain;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
import org.openstack4j.model.common.builder.BasicResourceBuilder;
import org.openstack4j.model.image.ContainerFormat;
import org.openstack4j.model.image.DiskFormat;
import org.openstack4j.model.image.Image;
import org.openstack4j.model.image.StoreType;
import org.openstack4j.model.image.builder.ImageBuilder;
import org.openstack4j.openstack.common.ListResult;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;
import com.google.common.base.Objects;
import com.google.common.collect.Maps;
/**
* A Glance v1.1 Image model implementation
*
* @author Jeremy Unruh
* @see http://docs.openstack.org/api/openstack-image-service/1.1/content/index.html
*/
@JsonRootName("image")
public class GlanceImage implements Image {
private static final long serialVersionUID = 1L;
private String id;
private String name;
private String location;
@JsonProperty("disk_format")
private DiskFormat diskFormat;
@JsonProperty("container_format")
private ContainerFormat containerFormat;
private Long size;
private String checksum;
private String owner;
@JsonProperty("created_at")
private Date createdAt;
@JsonProperty("updated_at")
private Date updatedAt;
@JsonProperty("deleted_at")
private Date deletedAt;
private Status status;
@JsonProperty("is_public")
private boolean isPublic;
@JsonProperty("min_ram")
private Long minRam;
@JsonProperty("min_disk")
private Long minDisk;
@JsonProperty("deleted")
private boolean isDeleted;
@JsonProperty("protected")
private boolean isProtected;
@JsonProperty("copy_from")
private String copyFrom;
private Map properties;
private transient StoreType storeType;
public static ImageBuilder builder() {
return new ImageConcreteBuilder();
}
@Override
public ImageBuilder toBuilder() {
return new ImageConcreteBuilder(this);
}
/**
* {@inheritDoc}
*/
@Override
public String getId() {
return id;
}
/**
* {@inheritDoc}
*/
@Override
public String getName() {
return name;
}
/**
* {@inheritDoc}
*/
@Override
public void setId(String id) {
this.id = id;
}
/**
* {@inheritDoc}
*/
@Override
public void setName(String name) {
this.name = name;
}
/**
* {@inheritDoc}
*/
@Override
public ContainerFormat getContainerFormat() {
return (containerFormat != null) ? containerFormat : ContainerFormat.UNRECOGNIZED;
}
/**
* {@inheritDoc}
*/
@Override
public DiskFormat getDiskFormat() {
return (diskFormat != null) ? diskFormat : DiskFormat.UNRECOGNIZED;
}
/**
* {@inheritDoc}
*/
@Override
public Long getSize() {
return size;
}
/**
* {@inheritDoc}
*/
@Override
public String getChecksum() {
return checksum;
}
/**
* {@inheritDoc}
*/
@Override
public long getMinDisk() {
return (minDisk == null) ? 0L : minDisk;
}
/**
* {@inheritDoc}
*/
@Override
public long getMinRam() {
return (minRam == null) ? 0L : minRam;
}
/**
* {@inheritDoc}
*/
@Override
public String getLocation() {
return location;
}
/**
* {@inheritDoc}
*/
@Override
@Nullable
public String getOwner() {
return owner;
}
/**
* {@inheritDoc}
*/
@Override
public Date getUpdatedAt() {
return updatedAt;
}
/**
* {@inheritDoc}
*/
@Override
public Date getCreatedAt() {
return createdAt;
}
/**
* {@inheritDoc}
*/
@Override
@Nullable
public Date getDeletedAt() {
return deletedAt;
}
/**
* {@inheritDoc}
*/
@Override
public Status getStatus() {
return status;
}
/**
* {@inheritDoc}
*/
@Override
public boolean isPublic() {
return isPublic;
}
/**
* {@inheritDoc}
*/
@Override
public boolean isDeleted() {
return isDeleted;
}
/**
* {@inheritDoc}
*/
@Override
public boolean isProtected() {
return isProtected;
}
/**
* {@inheritDoc}
*/
@Override
public StoreType getStoreType() {
return storeType;
}
/**
* {@inheritDoc}
*/
@Override
public Map getProperties() {
return properties;
}
@Override
public String getCopyFrom() {
return copyFrom;
}
/* Business Domain Method Chains for Conversion */
public GlanceImage isProtected(Boolean isProtected) {
if (isProtected != null)
this.isProtected = isProtected;
return this;
}
public GlanceImage isDeleted(Boolean isDeleted) {
if (isDeleted != null)
this.isDeleted = isDeleted;
return this;
}
public GlanceImage status(Status status) {
this.status = status;
return this;
}
public GlanceImage createdAt(Date createdAt) {
this.createdAt = createdAt;
return this;
}
public GlanceImage updatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
return this;
}
public GlanceImage deletedAt(Date deletedAt) {
this.deletedAt = deletedAt;
return this;
}
public GlanceImage size(Long size) {
this.size = size;
return this;
}
public GlanceImage location(String location) {
this.location = location;
return this;
}
public GlanceImage properties(Map properties) {
this.properties = properties;
return this;
}
/**
* {@inheritDoc}
*/
@JsonIgnore
@Override
public boolean isSnapshot() {
return properties != null && properties.containsKey("image_location") && "snapshot".equals(properties.get("image_location"));
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return Objects.toStringHelper(this).omitNullValues()
.add("id", id).add("name", name).add("status", status).add("location", location).add("diskFormat", diskFormat)
.add("containerFormat", containerFormat).add("size", size).add("owner", owner).add("minRam", minRam).add("minDisk", minDisk)
.add("created", createdAt).add("updated", updatedAt).add("deleted", deletedAt).add("isPublic", isPublic)
.add("isProtected", isProtected).add("isDeleted", isDeleted).add("propterties", properties).addValue("\n")
.toString();
}
public static class Images extends ListResult {
private static final long serialVersionUID = 1L;
@JsonProperty("images")
private List images;
@Override
protected List value() {
return images;
}
}
public static class ImageConcreteBuilder extends BasicResourceBuilder implements ImageBuilder {
private GlanceImage m;
ImageConcreteBuilder() {
this(new GlanceImage());
}
ImageConcreteBuilder(GlanceImage m) {
this.m = m;
}
@Override
public ImageBuilder diskFormat(DiskFormat diskFormat) {
m.diskFormat = diskFormat;
return this;
}
@Override
public ImageBuilder containerFormat(ContainerFormat containerFormat) {
m.containerFormat = containerFormat;
return this;
}
@Override
public ImageBuilder size(Long size) {
m.size = size;
return this;
}
@Override
public ImageBuilder checksum(String checksum) {
m.checksum = checksum;
return this;
}
@Override
public ImageBuilder minDisk(Long minDisk) {
m.minDisk = minDisk;
return this;
}
@Override
public ImageBuilder minRam(Long minRam) {
m.minRam = minRam;
return this;
}
@Override
public ImageBuilder owner(String owner) {
m.owner = owner;
return this;
}
@Override
public ImageBuilder isPublic(Boolean isPublic) {
if (isPublic != null)
m.isPublic = isPublic;
return this;
}
@Override
public ImageBuilder properties(Map properties) {
m.properties = properties;
return this;
}
@Override
protected Image reference() {
return m;
}
@Override
public Image build() {
return m;
}
@Override
public ImageBuilder from(Image in) {
this.m = (GlanceImage) in;
return this;
}
@Override
public ImageBuilder property(String key, String value) {
if (key != null && value != null)
{
if (m.properties == null)
m.properties = Maps.newHashMap();
m.properties.put(key, value);
}
return this;
}
@Override
public ImageBuilder storeType(StoreType storeType) {
m.storeType = storeType;
return this;
}
@Override
public ImageBuilder copyFrom(String copyFrom) {
m.copyFrom = copyFrom;
return this;
}
}
}