diff options
Diffstat (limited to 'nova-client/src/main/java')
19 files changed, 1929 insertions, 0 deletions
diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/Nova.java b/nova-client/src/main/java/com/woorea/openstack/nova/Nova.java new file mode 100644 index 0000000..f81de7d --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/Nova.java @@ -0,0 +1,113 @@ +package com.woorea.openstack.nova; + + +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackClientConnector; +import com.woorea.openstack.nova.api.ExtensionsResource; +import com.woorea.openstack.nova.api.FlavorsResource; +import com.woorea.openstack.nova.api.ImagesResource; +import com.woorea.openstack.nova.api.QuotaSetsResource; +import com.woorea.openstack.nova.api.ServersResource; +import com.woorea.openstack.nova.api.extensions.AggregatesExtension; +import com.woorea.openstack.nova.api.extensions.FloatingIpsExtension; +import com.woorea.openstack.nova.api.extensions.KeyPairsExtension; +import com.woorea.openstack.nova.api.extensions.SecurityGroupsExtension; +import com.woorea.openstack.nova.api.extensions.SnapshotsExtension; +import com.woorea.openstack.nova.api.extensions.VolumesExtension; +import com.woorea.openstack.nova.api.extensions.HostsExtension; + +public class Nova extends OpenStackClient { + + private final ExtensionsResource EXTENSIONS; + + private final ServersResource SERVERS; + + private final ImagesResource IMAGES; + + private final FlavorsResource FLAVORS; + + private final KeyPairsExtension KEY_PAIRS; + + private final FloatingIpsExtension FLOATING_IPS; + + private final SecurityGroupsExtension SECURITY_GROUPS; + + private final SnapshotsExtension SNAPSHOTS; + + private final VolumesExtension VOLUMES; + + private final AggregatesExtension AGGREGATES; + + private final QuotaSetsResource QUOTA_SETS; + + private final HostsExtension HOSTS; + + public Nova(String endpoint, OpenStackClientConnector connector) { + super(endpoint, connector); + EXTENSIONS = new ExtensionsResource(this); + SERVERS = new ServersResource(this); + IMAGES = new ImagesResource(this); + FLAVORS = new FlavorsResource(this); + KEY_PAIRS = new KeyPairsExtension(this); + FLOATING_IPS = new FloatingIpsExtension(this); + SECURITY_GROUPS = new SecurityGroupsExtension(this); + SNAPSHOTS = new SnapshotsExtension(this); + VOLUMES = new VolumesExtension(this); + AGGREGATES = new AggregatesExtension(this); + QUOTA_SETS = new QuotaSetsResource(this); + HOSTS = new HostsExtension(this); + } + + public Nova(String endpoint) { + this(endpoint, null); + } + + public ExtensionsResource extensions() { + return EXTENSIONS; + } + + public ServersResource servers() { + return SERVERS; + } + + public ImagesResource images() { + return IMAGES; + } + + public FlavorsResource flavors() { + return FLAVORS; + } + + public KeyPairsExtension keyPairs() { + return KEY_PAIRS; + } + + public FloatingIpsExtension floatingIps() { + return FLOATING_IPS; + } + + public SecurityGroupsExtension securityGroups() { + return SECURITY_GROUPS; + } + + public SnapshotsExtension snapshots() { + return SNAPSHOTS; + } + + public VolumesExtension volumes() { + return VOLUMES; + } + + public AggregatesExtension aggregates() { + return AGGREGATES; + } + + public QuotaSetsResource quotaSets() { + return QUOTA_SETS; + } + + public HostsExtension hosts() { + return HOSTS; + } + +} diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/ExtensionsResource.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/ExtensionsResource.java new file mode 100644 index 0000000..46e16c4 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/ExtensionsResource.java @@ -0,0 +1,30 @@ +package com.woorea.openstack.nova.api; + + +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Extensions; + +public class ExtensionsResource { + + private final OpenStackClient CLIENT; + + public ExtensionsResource(OpenStackClient client) { + CLIENT = client; + } + + public List list(boolean detail) { + return new List(detail); + } + + public class List extends OpenStackRequest<Extensions> { + + public List(boolean detail) { + super(CLIENT, HttpMethod.GET, detail ? "extensions/detail" : "extensions", null, Extensions.class); + } + + } + +} + diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/FlavorsResource.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/FlavorsResource.java new file mode 100644 index 0000000..c3e2256 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/FlavorsResource.java @@ -0,0 +1,85 @@ +package com.woorea.openstack.nova.api; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Flavor; +import com.woorea.openstack.nova.model.Flavors; +import com.woorea.openstack.nova.model.Metadata; + +public class FlavorsResource { + + private final OpenStackClient CLIENT; + + public FlavorsResource(OpenStackClient client) { + CLIENT = client; + } + + public List list(boolean detail) { + return new List(detail); + } + + public Create create(Flavor flavor) { + return new Create(flavor); + } + + public Show show(String id) { + return new Show(id); + } + + public ShowMetadata showMetadata(String id) { + return new ShowMetadata(id); + } + + + public Delete delete(String id) { + return new Delete(id); + } + + public class List extends OpenStackRequest<Flavors> { + + public List(boolean detail) { + super(CLIENT, HttpMethod.GET, detail ? "/flavors/detail" : "/flavors", null, Flavors.class); + } + + } + + public class Create extends OpenStackRequest<Flavor> { + + private Flavor flavor; + + public Create(Flavor flavor) { + super(CLIENT, HttpMethod.POST, "/flavors", Entity.json(flavor), Flavor.class); + this.flavor = flavor; + } + + } + + public class Show extends OpenStackRequest<Flavor> { + + public Show(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/flavors/").append(id).toString(), null, Flavor.class); + } + + } + + public class ShowMetadata extends OpenStackRequest<Metadata> { + + public ShowMetadata(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/flavors/").append(id).append("/metadata").toString(), null, Metadata.class); + } + + } + + public class Delete extends OpenStackRequest<Void> { + + public Delete(String id) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/flavors/").append(id).toString(), null, Void.class); + } + + } + +} + diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/ImagesResource.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/ImagesResource.java new file mode 100644 index 0000000..780cb12 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/ImagesResource.java @@ -0,0 +1,85 @@ +package com.woorea.openstack.nova.api; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Image; +import com.woorea.openstack.nova.model.Images; +import com.woorea.openstack.nova.model.Metadata; + +public class ImagesResource { + + private final OpenStackClient CLIENT; + + public ImagesResource(OpenStackClient client) { + CLIENT = client; + } + + public List list(boolean detail) { + return new List(detail); + } + + public Create create(Image image) { + return new Create(image); + } + + public Show show(String id) { + return new Show(id); + } + + public ShowMetadata showMetadata(String id) { + return new ShowMetadata(id); + } + + + public Delete delete(String id) { + return new Delete(id); + } + + public class List extends OpenStackRequest<Images> { + + public List(boolean detail) { + super(CLIENT, HttpMethod.GET, detail ? "/images/detail" : "/images", null, Images.class); + } + + } + + public class Create extends OpenStackRequest<Image> { + + private Image image; + + public Create(Image image) { + super(CLIENT, HttpMethod.POST, "/images", Entity.json(image), Image.class); + this.image = image; + } + + } + + public class Show extends OpenStackRequest<Image> { + + public Show(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/images/").append(id).toString(), null, Image.class); + } + + } + + public class ShowMetadata extends OpenStackRequest<Metadata> { + + public ShowMetadata(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/images/").append(id).append("/metadata").toString(), null, Metadata.class); + } + + } + + public class Delete extends OpenStackRequest<Void> { + + public Delete(String id) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/images/").append(id).toString(), null, Void.class); + } + + } + +} + diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/QuotaSetsResource.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/QuotaSetsResource.java new file mode 100644 index 0000000..166fb42 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/QuotaSetsResource.java @@ -0,0 +1,61 @@ +package com.woorea.openstack.nova.api; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Limits; +import com.woorea.openstack.nova.model.QuotaSet; +import com.woorea.openstack.nova.model.SimpleTenantUsage; + +public class QuotaSetsResource { + + private final OpenStackClient CLIENT; + + public QuotaSetsResource(OpenStackClient client) { + CLIENT = client; + } + + public ShowQuota showQuota(String tenantId) { + return new ShowQuota(tenantId); + } + + public UpdateQuota updateQuota(String tenantId, QuotaSet quotaSet) { + return new UpdateQuota(tenantId, quotaSet); + } + + public ShowUsage showUsage(String tenantId) { + return new ShowUsage(tenantId); + } + + public ShowUsedLimits showUsedLimits() { + return new ShowUsedLimits(); + } + + public class ShowQuota extends OpenStackRequest<QuotaSet> { + public ShowQuota(String tenantId) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-quota-sets/").append(tenantId), null, QuotaSet.class); + } + + } + + public class UpdateQuota extends OpenStackRequest<QuotaSet> { + public UpdateQuota(String tenantId, QuotaSet quotaSet) { + super(CLIENT, HttpMethod.PUT, new StringBuilder("/os-quota-sets/").append(tenantId), Entity.json(quotaSet), QuotaSet.class); + } + } + + public class ShowUsage extends OpenStackRequest<SimpleTenantUsage> { + public ShowUsage(String tenantId) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-simple-tenant-usage/").append(tenantId), null, SimpleTenantUsage.class); + } + } + + public class ShowUsedLimits extends OpenStackRequest<Limits> { + public ShowUsedLimits() { + super(CLIENT, HttpMethod.GET, new StringBuilder("/limits"), null, Limits.class); + } + } +} + diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/ServersResource.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/ServersResource.java new file mode 100644 index 0000000..ca48b6f --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/ServersResource.java @@ -0,0 +1,541 @@ +package com.woorea.openstack.nova.api; + + +import java.util.Map; + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Metadata; +import com.woorea.openstack.nova.model.Server; +import com.woorea.openstack.nova.model.Server.Addresses; +import com.woorea.openstack.nova.model.ServerAction.ChangePassword; +import com.woorea.openstack.nova.model.ServerAction.ConfirmResize; +import com.woorea.openstack.nova.model.ServerAction.ConsoleOutput; +import com.woorea.openstack.nova.model.ServerAction.CreateBackup; +import com.woorea.openstack.nova.model.ServerAction.CreateImage; +import com.woorea.openstack.nova.model.ServerAction.GetConsoleOutput; +import com.woorea.openstack.nova.model.ServerAction.GetVncConsole; +import com.woorea.openstack.nova.model.ServerAction.Lock; +import com.woorea.openstack.nova.model.ServerAction.Pause; +import com.woorea.openstack.nova.model.ServerAction.Reboot; +import com.woorea.openstack.nova.model.ServerAction.Rebuild; +import com.woorea.openstack.nova.model.ServerAction.Rescue; +import com.woorea.openstack.nova.model.ServerAction.Resize; +import com.woorea.openstack.nova.model.ServerAction.Resume; +import com.woorea.openstack.nova.model.ServerAction.RevertResize; +import com.woorea.openstack.nova.model.ServerAction.Start; +import com.woorea.openstack.nova.model.ServerAction.Stop; +import com.woorea.openstack.nova.model.ServerAction.Suspend; +import com.woorea.openstack.nova.model.ServerAction.Unlock; +import com.woorea.openstack.nova.model.ServerAction.Unpause; +import com.woorea.openstack.nova.model.ServerAction.Unrescue; +import com.woorea.openstack.nova.model.ServerAction.VncConsole; +import com.woorea.openstack.nova.model.ServerForCreate; +import com.woorea.openstack.nova.model.Servers; +import com.woorea.openstack.nova.model.VolumeAttachment; +import com.woorea.openstack.nova.model.VolumeAttachments; + +public class ServersResource { + + private final OpenStackClient CLIENT; + + public ServersResource(OpenStackClient client) { + CLIENT = client; + } + + public List list(boolean detail) { + return new List(detail); + } + + public Boot boot(ServerForCreate server) { + return new Boot(server); + } + + public Show show(String id) { + return new Show(id); + } + + public ShowMetadata showMetadata(String id) { + return new ShowMetadata(id); + } + + public CreateOrUpdateMetadata createOrUpdateMetadata(String id,Metadata metadata) { + return new CreateOrUpdateMetadata(id,metadata); + } + + public ReplaceMetadata replaceMetadata(String id,Metadata metadata) { + return new ReplaceMetadata(id,metadata); + } + public DeleteMetadata deleteMetadata(String id, String key) { + return new DeleteMetadata(id,key); + } + + public Delete delete(String id) { + return new Delete(id); + } + + public class List extends OpenStackRequest<Servers> { + + public List(boolean detail) { + super(CLIENT, HttpMethod.GET, detail ? "/servers/detail" : "/servers", null, Servers.class); + } + + } + + public class Boot extends OpenStackRequest<Server> { + + private ServerForCreate server; + + public Boot(ServerForCreate server) { + super(CLIENT, HttpMethod.POST, "/servers", Entity.json(server), Server.class); + this.server = server; + } + + } + + public class Show extends OpenStackRequest<Server> { + + public Show(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/servers/").append(id), null, Server.class); + } + + } + + public class ShowMetadata extends OpenStackRequest<Metadata> { + + public ShowMetadata(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/servers/").append(id).append("/metadata"), null, Metadata.class); + } + + } + + public class CreateOrUpdateMetadata extends OpenStackRequest<Metadata> { + + public CreateOrUpdateMetadata(String id,Metadata metadata) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/metadata"), Entity.json(metadata), Metadata.class); + } + + } + public class ReplaceMetadata extends OpenStackRequest<Metadata> { + + public ReplaceMetadata(String id,Metadata metadata) { + super(CLIENT, HttpMethod.PUT, new StringBuilder("/servers/").append(id).append("/metadata"), Entity.json(metadata), Metadata.class); + } + + } + + public class DeleteMetadata extends OpenStackRequest<Void> { + + public DeleteMetadata(String id,String key) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/servers/").append(id).append("/metadata/").append(key), null, Void.class); + } + + } + + + public class Delete extends OpenStackRequest<Void> { + + public Delete(String id) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/servers/").append(id), null, Void.class); + } + + } + + public class ShowServerAddresses extends OpenStackRequest<Addresses> { + + public ShowServerAddresses(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/servers/").append(id).append("/ips"), null, Addresses.class); + } + + } + + public class UpdateServer extends OpenStackRequest<Server> { + + private Server server; + + public UpdateServer(String id, Server server) { + super(CLIENT, HttpMethod.PUT, new StringBuilder("/servers/").append(id), Entity.json(server), Server.class); + this.server = server; + } + + } + + public UpdateServer update(String serverId, String name, String accessIPv4, String accessIPv6) { + Server server = new Server(); + //server.setName(name); + //server.setAccessIPv4(accessIPv4); + //server.setAccessIPv6(accessIPv6); + return new UpdateServer(serverId, server); + } + + public abstract class Action<T> extends OpenStackRequest<T> { + + public Action(String id, Entity<?> entity, Class<T> returnType) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), entity, returnType); + } + + } + + public class ChangePasswordAction extends Action<Server> { + + private ChangePassword action; + + public ChangePasswordAction(String id, ChangePassword action) { + super(id, Entity.json(action), Server.class); + } + + } + + public ChangePasswordAction changePassword(String serverId, String adminPass) { + ChangePassword changePassword = new ChangePassword(); + changePassword.setAdminPass(adminPass); + return new ChangePasswordAction(serverId, changePassword); + } + + public class RebootAction extends Action<Void> { + + private Reboot action; + + public RebootAction(String id, Reboot action) { + super(id, Entity.json(action), Void.class); + } + + } + + public RebootAction reboot(String serverId, String rebootType) { + Reboot reboot = new Reboot(); + reboot.setType(rebootType); + return new RebootAction(serverId, reboot); + } + + public class RebuildAction extends Action<Server> { + + private Rebuild action; + + public RebuildAction(String id, Rebuild action) { + super(id, Entity.json(action), Server.class); + } + + } + + public RebuildAction rebuild(String serverId, Rebuild rebuild) { + return new RebuildAction(serverId, rebuild); + } + + public class ResizeAction extends Action<Server> { + + private Resize action; + + public ResizeAction(String id, Resize action) { + super(id, Entity.json(action), Server.class); + } + + } + + public ResizeAction resize(String serverId, String flavorId, String diskConfig) { + Resize resize = new Resize(); + resize.setFlavorRef(flavorId); + resize.setDiskConfig(diskConfig); + return new ResizeAction(serverId, resize); + } + + public class ConfirmResizeAction extends Action<Server> { + + public ConfirmResizeAction(String id) { + super(id, Entity.json(new ConfirmResize()), Server.class); + } + + } + + public ConfirmResizeAction confirmResize(String serverId) { + return new ConfirmResizeAction(serverId); + } + + public class RevertResizeAction extends Action<Server> { + + public RevertResizeAction(String id) { + super(id, Entity.json(new RevertResize()), Server.class); + } + + } + + public RevertResizeAction revertResize(String serverId) { + return new RevertResizeAction(serverId); + } + + public class CreateImageAction extends Action<Void> { + + public CreateImageAction(String id, CreateImage createImage) { + super(id, Entity.json(createImage), Void.class); + } + + } + + public CreateImageAction createImage(String serverId, String name, Map<String, String> metadata) { + CreateImage createImage = new CreateImage(); + createImage.setName(name); + createImage.setMetadata(metadata); + return new CreateImageAction(serverId, createImage); + } + + public class StartServer extends OpenStackRequest<Void> { + + private Start action; + + private String id; + + public StartServer(String id) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(new Start()), Void.class); + } + + } + + public class StopServer extends OpenStackRequest<Void> { + + private Stop action; + + private String id; + + public StopServer(String id) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(new Stop()), Void.class); + } + + } + + public StartServer start(String id) { + return new StartServer(id); + } + + public StopServer stop(String id) { + return new StopServer(id); + } + + public class GetVncConsoleServer extends OpenStackRequest<VncConsole> { + + private GetVncConsole action; + + private String id; + + public GetVncConsoleServer(String id, GetVncConsole action) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(action), VncConsole.class); + } + + } + + public GetVncConsoleServer getVncConsole(String id, String type) { + GetVncConsole action = new GetVncConsole(type); + return new GetVncConsoleServer(id, action); + } + + public class GetConsoleOutputServer extends OpenStackRequest<ConsoleOutput> { + + public GetConsoleOutputServer(String id, GetConsoleOutput action) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(action), ConsoleOutput.class); + } + + } + + public GetConsoleOutputServer getConsoleOutput(String id, int length) { + GetConsoleOutput action = new GetConsoleOutput(length); + return new GetConsoleOutputServer(id, action); + } + + public class PauseServer extends OpenStackRequest<Void> { + + public PauseServer(String id) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(new Pause()), Void.class); + } + + } + + public class UnpauseServer extends OpenStackRequest<Void> { + + public UnpauseServer(String id) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(new Unpause()), Void.class); + } + + + } + + public class LockServer extends OpenStackRequest<Void> { + + private Lock action; + + private String id; + + public LockServer(String id) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(new Lock()), Void.class); + } + + } + + public class UnlockServer extends OpenStackRequest<Void> { + + private Unlock action; + + private String id; + + public UnlockServer(String id) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(new Unlock()), Void.class); + } + + } + + public class SuspendServer extends OpenStackRequest<Void> { + + public SuspendServer(String id) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(new Suspend()), Void.class); + } + + } + + public class ResumeServer extends OpenStackRequest<Void> { + + public ResumeServer(String id) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(new Resume()), Void.class); + } + + } + + public class CreateBackupServer extends OpenStackRequest<Void> { + + public CreateBackupServer(String id, CreateBackup action) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(action), Void.class); + } + + } + + public PauseServer pause(String serverId) { + return new PauseServer(serverId); + } + + public UnpauseServer unpause(String serverId) { + return new UnpauseServer(serverId); + } + + public LockServer lock(String serverId) { + return new LockServer(serverId); + } + + public UnlockServer unlock(String serverId) { + return new UnlockServer(serverId); + } + + public SuspendServer suspend(String serverId) { + return new SuspendServer(serverId); + } + + public ResumeServer resume(String serverId) { + return new ResumeServer(serverId); + } + + public CreateBackupServer createBackup(String serverId, CreateBackup action) { + return new CreateBackupServer(serverId, action); + } + + public class RescueServer extends OpenStackRequest<Void> { + + public RescueServer(String id, Rescue action) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(action), Void.class); + } + + } + + public class UnrescueServer extends OpenStackRequest<Void> { + + public UnrescueServer(String id) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(new Unrescue()), Void.class); + } + + } + + public RescueServer rescue(String serverId, String adminPass) { + Rescue action = new Rescue(adminPass); + return new RescueServer(serverId, action); + } + + public UnrescueServer unrescue(String serverId) { + return new UnrescueServer(serverId); + } + + public class AssociateFloatingIp extends OpenStackRequest<Void> { + + public AssociateFloatingIp(String id, com.woorea.openstack.nova.model.ServerAction.AssociateFloatingIp action) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(action), Void.class); + } + + } + + public class DisassociateFloatingIp extends OpenStackRequest<Void> { + + public DisassociateFloatingIp(String id, com.woorea.openstack.nova.model.ServerAction.DisassociateFloatingIp action) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(id).append("/action"), Entity.json(action), Void.class); + } + + } + + public AssociateFloatingIp associateFloatingIp(String serverId, String floatingIpAddress) { + com.woorea.openstack.nova.model.ServerAction.AssociateFloatingIp action = new com.woorea.openstack.nova.model.ServerAction.AssociateFloatingIp(floatingIpAddress); + return new AssociateFloatingIp(serverId, action); + } + + public DisassociateFloatingIp disassociateFloatingIp(String serverId, String floatingIpAddress) { + com.woorea.openstack.nova.model.ServerAction.DisassociateFloatingIp action = new com.woorea.openstack.nova.model.ServerAction.DisassociateFloatingIp(floatingIpAddress); + return new DisassociateFloatingIp(serverId, action); + } + + public class AttachVolume extends OpenStackRequest<Void> { + + public AttachVolume(String serverId, final VolumeAttachment volumeAttachment) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/").append(serverId).append("/os-volume_attachments"), Entity.json(volumeAttachment), Void.class); + } + + } + + public class DetachVolume extends OpenStackRequest<Void> { + + public DetachVolume(String serverId, String volumeId) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/servers/").append(serverId).append("/os-volume_attachments/").append(volumeId), null, Void.class); + } + + } + + public class ListVolumeAttachments extends OpenStackRequest<VolumeAttachments> { + + public ListVolumeAttachments(String serverId) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/servers/").append(serverId).append("/os-volume_attachments"), null, VolumeAttachments.class); + } + + } + + public class ShowVolumeAttachment extends OpenStackRequest<VolumeAttachment> { + + public ShowVolumeAttachment(String serverId, String volumeAttachmentId) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/servers/").append(serverId).append("/os-volume_attachments/").append(volumeAttachmentId), null, VolumeAttachment.class); + } + + } + + public AttachVolume attachVolume(String serverId, String volumeId, String device) { + VolumeAttachment volumeAttachment = new VolumeAttachment(); + volumeAttachment.setVolumeId(volumeId); + volumeAttachment.setDevice(device); + return new AttachVolume(serverId, volumeAttachment); + } + + public DetachVolume detachVolume(String serverId, String volumeId) { + return new DetachVolume(serverId, volumeId); + } + + public ListVolumeAttachments listVolumeAttachments(String serverId) { + return new ListVolumeAttachments(serverId); + } + + public ShowVolumeAttachment showVolumeAttachment(String serverId, String volumeAttachmentId) { + return new ShowVolumeAttachment(serverId, volumeAttachmentId); + } + +} + diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/AggregatesExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/AggregatesExtension.java new file mode 100644 index 0000000..fa757af --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/AggregatesExtension.java @@ -0,0 +1,163 @@ +package com.woorea.openstack.nova.api.extensions; + +import java.util.Map; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.HostAggregate; +import com.woorea.openstack.nova.model.HostAggregates; + +public class AggregatesExtension { + + private final OpenStackClient CLIENT; + + public AggregatesExtension(OpenStackClient client) { + CLIENT = client; + } + + public List list() { + return new List(); + } + + public ShowAggregate showAggregate(String id) { + return new ShowAggregate(id); + } + + public UpdateAggregateMetadata updateAggregateMetadata(String id, + String name, String availabilityZone) { + return new UpdateAggregateMetadata(id, name, availabilityZone); + } + + public CreateAggregate createAggregate(String aggregateName, + String availabilityZoneName) { + return new CreateAggregate(aggregateName, availabilityZoneName); + } + + public DeleteAggregate deleteAggregate(String id) { + return new DeleteAggregate(id); + } + + public AddHost addHost(String aggregateId, String hostId) { + return new AddHost(aggregateId, hostId); + } + + public RemoveHost removeHost(String aggregateId, String hostId) { + return new RemoveHost(hostId, aggregateId); + } + + public SetMetadata setMetadata(String aggregateId, + String key, String value) { + return new SetMetadata(aggregateId, key, value); + } + + public class List extends OpenStackRequest<HostAggregates> { + + public List() { + super(CLIENT, HttpMethod.GET, "/os-aggregates", + null, + HostAggregates.class); + } + + } + + public class ShowAggregate extends OpenStackRequest<HostAggregate> { + + public ShowAggregate(String id) { + super(CLIENT, HttpMethod.GET, + new StringBuffer("/os-aggregates/").append(id), + null, + HostAggregate.class); + } + + } + + public class UpdateAggregateMetadata extends OpenStackRequest<HostAggregate> { + public UpdateAggregateMetadata(String id, + String name, String availabilityZone) { + super(CLIENT, HttpMethod.PUT, + new StringBuffer("/os-aggregates/").append(id), + availabilityZone == null ? + Entity.json("{\"aggregate\": {\"name\": \"" + name + "\" }}") + : + Entity.json("{\"aggregate\": {\"name\": \"" + + name + + "\", \"availability_zone\": \"" + + availabilityZone + + "\" }}"), + HostAggregate.class); + } + + } + + public class CreateAggregate extends OpenStackRequest<HostAggregate> { + + public CreateAggregate(String name, String availabilityZone) { + super(CLIENT, HttpMethod.POST, + new StringBuffer("/os-aggregates"), + availabilityZone == null ? + Entity.json("{\"aggregate\": {\"name\": \"" + + name + + "\", \"availability_zone\": null }}") + : + Entity.json("{\"aggregate\": {\"name\": \"" + + name + + "\", \"availability_zone\": \"" + + availabilityZone + + "\" }}"), + HostAggregate.class); + } + + } + + public class DeleteAggregate extends OpenStackRequest<Void> { + + public DeleteAggregate(String id) { + super(CLIENT, HttpMethod.DELETE, + new StringBuffer("/os-aggregates/").append(id), + null, + null); + } + } + + public class AddHost extends OpenStackRequest<HostAggregate> { + + public AddHost(String aggregateId, String hostId) { + super(CLIENT, HttpMethod.POST, + new StringBuffer("/os-aggregates/") + .append(aggregateId).append("/action"), + Entity.json("{\"add_host\": {\"host\": \"" + + hostId + "\" }}"), + HostAggregate.class); + } + + } + + public class RemoveHost extends OpenStackRequest<HostAggregate> { + + public RemoveHost(String hostId, String aggregateId) { + super(CLIENT, HttpMethod.POST, + new StringBuffer("/os-aggregates/") + .append(aggregateId).append("/action"), + Entity.json("{\"remove_host\": {\"host\": \"" + + hostId + "\" }}"), + HostAggregate.class); + } + + } + + public class SetMetadata extends OpenStackRequest<HostAggregate> { + + public SetMetadata(String aggregateId, String key, String value) { + super(CLIENT, HttpMethod.POST, + new StringBuffer("/os-aggregates/") + .append(aggregateId).append("/action"), + Entity.json("{\"set_metadata\": {\"metadata\": { \"" + + key + "\": \"" + value + "\" }}}"), + HostAggregate.class); + } + } +} + diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/CloudpipesExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/CloudpipesExtension.java new file mode 100644 index 0000000..90450c8 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/CloudpipesExtension.java @@ -0,0 +1,49 @@ +package com.woorea.openstack.nova.api.extensions; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Cloudpipe; +import com.woorea.openstack.nova.model.Cloudpipes; + +public class CloudpipesExtension { + + private final OpenStackClient CLIENT; + + public CloudpipesExtension(OpenStackClient client) { + CLIENT = client; + } + + public List list() { + return new List(); + } + + public Create create(Cloudpipe cloudpipe) { + return new Create(cloudpipe); + } + + public class List extends OpenStackRequest<Cloudpipes> { + + + public List() { + super(CLIENT, HttpMethod.GET, "/os-cloudpipes", null, Cloudpipes.class); + } + + } + + public class Create extends OpenStackRequest<Cloudpipe> { + + private Cloudpipe cloudpipe; + + public Create(Cloudpipe cloudpipe) { + super(CLIENT, HttpMethod.POST, "/os-cloudpipes", Entity.json(cloudpipe), Cloudpipe.class); + this.cloudpipe = cloudpipe; + } + + } + + + +} diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/CredentialsExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/CredentialsExtension.java new file mode 100644 index 0000000..b689fd6 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/CredentialsExtension.java @@ -0,0 +1,43 @@ +package com.woorea.openstack.nova.api.extensions; + + +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Certificate; + +public class CredentialsExtension { + + private final OpenStackClient CLIENT; + + public CredentialsExtension(OpenStackClient client) { + CLIENT = client; + } + + public Create createCertificate(String id) { + return new Create(id); + } + + public Show showCertificate(String id) { + return new Show(); + } + + public class Create extends OpenStackRequest<Certificate> { + + public Create(String id) { + super(CLIENT, HttpMethod.GET, new StringBuffer("/os-certificates").append(id).toString(), null, Certificate.class); + } + + } + + public class Show extends OpenStackRequest<Certificate> { + + public Show() { + super(CLIENT, HttpMethod.GET, "/os-certificates", null, Certificate.class); + } + + } + + + +} diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/FloatingIpDnsExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/FloatingIpDnsExtension.java new file mode 100644 index 0000000..e2a399a --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/FloatingIpDnsExtension.java @@ -0,0 +1,89 @@ +package com.woorea.openstack.nova.api.extensions; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.FloatingIpDomain; +import com.woorea.openstack.nova.model.FloatingIpDomains; + +public class FloatingIpDnsExtension { + + private final OpenStackClient CLIENT; + + public FloatingIpDnsExtension(OpenStackClient client) { + CLIENT = client; + } + + public ListDomains listFloatingIpDomains() { + return new ListDomains(); + } + + public CreateDomain create(FloatingIpDomain floatingIpDomain) { + return new CreateDomain(floatingIpDomain); + } + + public ShowDomain show(String id) { + return new ShowDomain(id); + } + + public UpdateDomain update(FloatingIpDomain floatingIpDomain) { + return new UpdateDomain(floatingIpDomain); + } + + public DeleteDomain delete(String id) { + return new DeleteDomain(id); + } + + public class ListDomains extends OpenStackRequest<FloatingIpDomains> { + + public ListDomains() { + super(CLIENT, HttpMethod.GET, "/os-floating-ip-dns", null, FloatingIpDomains.class); + } + + } + + public class CreateDomain extends OpenStackRequest<FloatingIpDomain> { + + private FloatingIpDomain floatingIpDomain; + + public CreateDomain(FloatingIpDomain floatingIpDomain) { + super(CLIENT, HttpMethod.POST, "/os-floating-ip-dns", Entity.json(floatingIpDomain), FloatingIpDomain.class); + this.floatingIpDomain = floatingIpDomain; + } + + } + + public class ShowDomain extends OpenStackRequest<FloatingIpDomain> { + + public ShowDomain(String id) { + super(CLIENT, HttpMethod.GET, new StringBuffer("/os-floating-ip-dns/").append(id).toString(), null, FloatingIpDomain.class); + } + + } + + + public static class UpdateDomain extends OpenStackRequest<FloatingIpDomain> { + + private FloatingIpDomain floatingIpDomain; + + public UpdateDomain(FloatingIpDomain floatingIpDomain) { + //super(CLIENT, HttpMethod.PUT, new StringBuffer("/os-floating-ip-dns/").append(id).toString(), Entity.json(floatingIpDomain), FloatingIpDomain.class); + this.floatingIpDomain = floatingIpDomain; + } + + } + + + public class DeleteDomain extends OpenStackRequest<Void> { + + public DeleteDomain(String id) { + super(CLIENT, HttpMethod.DELETE, new StringBuffer("/os-floating-ip-dns/").append(id).toString(), null, Void.class); + } + + } + + + +} diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/FloatingIpPoolsExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/FloatingIpPoolsExtension.java new file mode 100644 index 0000000..cfcba23 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/FloatingIpPoolsExtension.java @@ -0,0 +1,31 @@ +package com.woorea.openstack.nova.api.extensions; + + +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.FloatingIpPools; + +public class FloatingIpPoolsExtension { + + private final OpenStackClient CLIENT; + + public FloatingIpPoolsExtension(OpenStackClient client) { + CLIENT = client; + } + + public List list() { + return new List(); + } + + public class List extends OpenStackRequest<FloatingIpPools> { + + public List() { + super(CLIENT, HttpMethod.GET, "/os-floating-ip-pools", null, FloatingIpPools.class); + } + + } + + + +} diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/FloatingIpsExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/FloatingIpsExtension.java new file mode 100644 index 0000000..0923b7e --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/FloatingIpsExtension.java @@ -0,0 +1,67 @@ +package com.woorea.openstack.nova.api.extensions; + +import java.util.HashMap; +import java.util.Map; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.FloatingIp; +import com.woorea.openstack.nova.model.FloatingIps; + +public class FloatingIpsExtension { + + private final OpenStackClient CLIENT; + + public FloatingIpsExtension(OpenStackClient client) { + CLIENT = client; + } + + public class List extends OpenStackRequest<FloatingIps> { + + public List() { + super(CLIENT, HttpMethod.GET, "/os-floating-ips", null, FloatingIps.class); + } + + } + + public class Allocate extends OpenStackRequest<FloatingIp> { + + public Allocate(Entity<?> entity) { + super(CLIENT, HttpMethod.POST, "/os-floating-ips", entity, FloatingIp.class); + } + + } + + public class Deallocate extends OpenStackRequest<Void> { + + public Deallocate(String id) { + super(CLIENT, HttpMethod.DELETE, new StringBuffer("/os-floating-ips/").append(id).toString(), null, Void.class); + } + + } + + public List list() { + return new List(); + } + + public Allocate allocate(String pool) { + Entity<?> entity=null; + if(pool!=null) { + Map<String, String> body = new HashMap<String, String>(); + body.put("pool", pool); + entity=Entity.json(body); + } + return new Allocate(entity); + } + + public Deallocate deallocate(String id) { + return new Deallocate(id); + } + + + +} + diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/HostsExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/HostsExtension.java new file mode 100644 index 0000000..9a4814d --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/HostsExtension.java @@ -0,0 +1,44 @@ +package com.woorea.openstack.nova.api.extensions; + + +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Host; +import com.woorea.openstack.nova.model.Hosts; + +public class HostsExtension { + + private final OpenStackClient CLIENT; + + public HostsExtension(OpenStackClient client) { + CLIENT = client; + } + + public List list() { + return new List(); + } + + public Show show(String id) { + return new Show(id); + } + + public class List extends OpenStackRequest<Hosts> { + + public List() { + super(CLIENT, HttpMethod.GET, "/os-hosts", null, Hosts.class); + } + + } + + public class Show extends OpenStackRequest<Host> { + + public Show(String id) { + super(CLIENT, HttpMethod.GET, new StringBuffer("/os-hosts/").append(id).toString(), null, Host.class); + } + + } + + + +} diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/HypervisorsExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/HypervisorsExtension.java new file mode 100644 index 0000000..ed1ad10 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/HypervisorsExtension.java @@ -0,0 +1,5 @@ +package com.woorea.openstack.nova.api.extensions; + +public class HypervisorsExtension { + +} diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/KeyPairsExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/KeyPairsExtension.java new file mode 100644 index 0000000..5e2c555 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/KeyPairsExtension.java @@ -0,0 +1,65 @@ +package com.woorea.openstack.nova.api.extensions; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.KeyPair; +import com.woorea.openstack.nova.model.KeyPairs; + +public class KeyPairsExtension { + + private final OpenStackClient CLIENT; + + public KeyPairsExtension(OpenStackClient client) { + CLIENT = client; + } + + public List list() { + return new List(); + } + + public Create create(String name, String publicKey) { + KeyPair keyPairForCreate = new KeyPair(name, publicKey); + return new Create(keyPairForCreate); + } + + public Create create(String name) { + return create(name, null); + } + + public Delete delete(String name) { + return new Delete(name); + } + + public class Create extends OpenStackRequest<KeyPair> { + + private KeyPair keyPairForCreate; + + public Create(KeyPair keyPairForCreate) { + super(CLIENT, HttpMethod.POST, "/os-keypairs", Entity.json(keyPairForCreate), KeyPair.class); + this.keyPairForCreate = keyPairForCreate; + } + + } + + public class Delete extends OpenStackRequest<Void> { + + private String name; + + public Delete(String name) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/os-keypairs/").append(name).toString(), null, Void.class); + } + + } + + public class List extends OpenStackRequest<KeyPairs> { + + public List() { + super(CLIENT, HttpMethod.GET, "/os-keypairs", null, KeyPairs.class); + } + + } + +} diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/NetworksExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/NetworksExtension.java new file mode 100644 index 0000000..ad316e0 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/NetworksExtension.java @@ -0,0 +1,82 @@ +package com.woorea.openstack.nova.api.extensions; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Network; +import com.woorea.openstack.nova.model.Networks; + +public class NetworksExtension { + + private final OpenStackClient CLIENT; + + public NetworksExtension(OpenStackClient client) { + CLIENT = client; + } + + public List list() { + return new List(); + } + + public Show show(String id) { + return new Show(id); + } + + public Delete delete(String id) { + return new Delete(id); + } + + public Disassociate disassociate(String id) { + return new Disassociate(id); + } + + public class List extends OpenStackRequest<Networks> { + + + public List() { + super(CLIENT, HttpMethod.GET, "/os-networks", null, Networks.class); + } + + } + + public class Create extends OpenStackRequest<Network> { + + private Network network; + + public Create(Network network) { + super(CLIENT, HttpMethod.POST, "/os-networks", Entity.json(network), Network.class); + this.network = network; + } + + } + + public class Show extends OpenStackRequest<Network> { + + public Show(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-networks/").append(id).toString(), null, Network.class); + } + + } + + public class Disassociate extends OpenStackRequest<Void> { + + public Disassociate(String id) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/os-networks/").append(id).toString(), Entity.json("{\"action\":\"disassociate\"}"), Void.class); + ; + } + + } + + public class Delete extends OpenStackRequest<Void> { + + public Delete(String id) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/os-networks/").append(id).toString(), null, Void.class); + } + + } + + + +} diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/SecurityGroupsExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/SecurityGroupsExtension.java new file mode 100644 index 0000000..5a80a10 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/SecurityGroupsExtension.java @@ -0,0 +1,184 @@ +package com.woorea.openstack.nova.api.extensions; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.SecurityGroup; +import com.woorea.openstack.nova.model.SecurityGroupForCreate; +import com.woorea.openstack.nova.model.SecurityGroupRuleForCreate; +import com.woorea.openstack.nova.model.SecurityGroups; + +public class SecurityGroupsExtension { + + private final OpenStackClient CLIENT; + + public SecurityGroupsExtension(OpenStackClient client) { + CLIENT = client; + } + + public class List extends OpenStackRequest<SecurityGroups> { + + public List() { + super(CLIENT, HttpMethod.GET, "/os-security-groups", null, SecurityGroups.class); + } + + } + + public class Create extends OpenStackRequest<SecurityGroup> { + + private SecurityGroupForCreate securityGroupForCreate; + + public Create(SecurityGroupForCreate securityGroupForCreate) { + super(CLIENT, HttpMethod.POST, "/os-security-groups", Entity.json(securityGroupForCreate), SecurityGroup.class); + this.securityGroupForCreate = securityGroupForCreate; + } + + } + + public class Show extends OpenStackRequest<SecurityGroup> { + + /** + * @deprecated + * @param id + */ + public Show(Integer id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-security-groups/").append(id).toString(), null, SecurityGroup.class); + } + public Show(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-security-groups/").append(id).toString(), null, SecurityGroup.class); + } + + } + + public class Delete extends OpenStackRequest<Void> { + + /** + * + * @param id + * @deprecated + */ + public Delete(Integer id) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/os-security-groups/").append(String.valueOf(id)).toString(), null, Void.class); + } + public Delete(String id) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/os-security-groups/").append(id).toString(), null, Void.class); + } + + } + + public class CreateRule extends OpenStackRequest<SecurityGroup.Rule> { + + private SecurityGroupRuleForCreate securityGroupRuleForCreate; + + public CreateRule(SecurityGroupRuleForCreate securityGroupRuleForCreate) { + super(CLIENT, HttpMethod.POST, "/os-security-group-rules", Entity.json(securityGroupRuleForCreate), SecurityGroup.Rule.class); + this.securityGroupRuleForCreate = securityGroupRuleForCreate; + } + } + + public class DeleteRule extends OpenStackRequest<Void> { + + /** + * + * @param id + * @deprecated + */ + public DeleteRule(Integer id) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/os-security-group-rules/").append(String.valueOf(id)).toString(), null, Void.class); + } + + public DeleteRule(String id) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/os-security-group-rules/").append(String.valueOf(id)).toString(), null, Void.class); + } + } + + public List listSecurityGroups() { + return new List(); + } + + public Create createSecurityGroup(String name, + String description) { + return new Create(new SecurityGroupForCreate(name, description)); + } + + public Create createSecurityGroup(String name) { + return createSecurityGroup(name, null); + } + + public Show showSecurityGroup(Integer id) { + return new Show(String.valueOf(id)); + } + + public Show showSecurityGroup(String id) { + return new Show(id); + } + public Delete deleteSecurityGroup(Integer id) { + return new Delete(String.valueOf(id)); + } + + public Delete deleteSecurityGroup(String id) { + return new Delete(id); + } + + /** + * + * @param parentSecurityGroupId + * @param ipProtocol + * @param fromPort + * @param toPort + * @param cidr + * @return + * @deprecated Use {@link #createSecurityGroupRule(String, String, Integer, Integer, String)} + */ + public CreateRule createSecurityGroupRule( + Integer parentSecurityGroupId, String ipProtocol, Integer fromPort, + Integer toPort, String cidr) { + SecurityGroupRuleForCreate securityGroupRuleForCreate = new SecurityGroupRuleForCreate( + parentSecurityGroupId, ipProtocol, fromPort, toPort, cidr); + return new CreateRule(securityGroupRuleForCreate); + } + /** + * + * @param parentSecurityGroupId + * @param ipProtocol + * @param fromPort + * @param toPort + * @param cidr + * @return + * @deprecated Use {@link #createSecurityGroupRule(String, String, String, Integer, Integer)} + */ + public CreateRule createSecurityGroupRule( + Integer parentSecurityGroupId, String ipProtocol, Integer fromPort, + Integer toPort, Integer sourceGroupId) { + SecurityGroupRuleForCreate securityGroupRuleForCreate = new SecurityGroupRuleForCreate( + parentSecurityGroupId, ipProtocol, fromPort, toPort, + sourceGroupId); + return new CreateRule(securityGroupRuleForCreate); + } + + public CreateRule createSecurityGroupRule( + String parentSecurityGroupId, String ipProtocol, Integer fromPort, + Integer toPort, String cidr) { + SecurityGroupRuleForCreate securityGroupRuleForCreate = new SecurityGroupRuleForCreate( + parentSecurityGroupId, ipProtocol, fromPort, toPort, cidr); + return new CreateRule(securityGroupRuleForCreate); + } + + public CreateRule createSecurityGroupRule( + String parentSecurityGroupId,String sourceGroupId,String ipProtocol, Integer fromPort, + Integer toPort) { + SecurityGroupRuleForCreate securityGroupRuleForCreate = new SecurityGroupRuleForCreate( + parentSecurityGroupId, sourceGroupId,ipProtocol, fromPort, toPort + ); + return new CreateRule(securityGroupRuleForCreate); + } + public DeleteRule deleteSecurityGroupRule(String id) { + return new DeleteRule(id); + } + public DeleteRule deleteSecurityGroupRule(Integer id) { + return new DeleteRule(String.valueOf(id)); + } + +} diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/SnapshotsExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/SnapshotsExtension.java new file mode 100644 index 0000000..62c2542 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/SnapshotsExtension.java @@ -0,0 +1,86 @@ +package com.woorea.openstack.nova.api.extensions; + + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Metadata; +import com.woorea.openstack.nova.model.Snapshot; +import com.woorea.openstack.nova.model.SnapshotForCreate; +import com.woorea.openstack.nova.model.Snapshots; + +public class SnapshotsExtension { + + private final OpenStackClient CLIENT; + + public SnapshotsExtension(OpenStackClient client) { + CLIENT = client; + } + + public List list(boolean detail) { + return new List(detail); + } + + public Create create(SnapshotForCreate snapshotForCreate) { + return new Create(snapshotForCreate); + } + + public Show show(String id) { + return new Show(id); + } + + public ShowMetadata showMetadata(String id) { + return new ShowMetadata(id); + } + + + public Delete delete(String id) { + return new Delete(id); + } + + public class List extends OpenStackRequest<Snapshots> { + + public List(boolean detail) { + super(CLIENT, HttpMethod.GET, detail ? "/os-snapshots/detail" : "/os-snapshots", null, Snapshots.class); + } + + } + + public class Create extends OpenStackRequest<SnapshotForCreate> { + + private SnapshotForCreate snapshotForCreate; + + public Create(SnapshotForCreate snapshotForCreate) { + super(CLIENT, HttpMethod.POST, "/os-snapshots", Entity.json(snapshotForCreate), SnapshotForCreate.class); + this.snapshotForCreate = snapshotForCreate; + } + + } + + public class Show extends OpenStackRequest<Snapshot> { + + public Show(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-snapshots/").append(id).toString(), null, Snapshot.class); + } + + } + + public class ShowMetadata extends OpenStackRequest<Metadata> { + + public ShowMetadata(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-snapshots/").append(id).append("/metadata").toString(), null, Metadata.class); + } + + } + + public class Delete extends OpenStackRequest<Void> { + + public Delete(String id) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/os-snapshots/").append(id).toString(), null, Void.class); + } + + } + +} + diff --git a/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/VolumesExtension.java b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/VolumesExtension.java new file mode 100644 index 0000000..de35577 --- /dev/null +++ b/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/VolumesExtension.java @@ -0,0 +1,106 @@ +package com.woorea.openstack.nova.api.extensions; + +import com.woorea.openstack.base.client.Entity; +import com.woorea.openstack.base.client.HttpMethod; +import com.woorea.openstack.base.client.OpenStackClient; +import com.woorea.openstack.base.client.OpenStackRequest; +import com.woorea.openstack.nova.model.Metadata; +import com.woorea.openstack.nova.model.Volume; +import com.woorea.openstack.nova.model.VolumeForCreate; +import com.woorea.openstack.nova.model.VolumeForImageCreate; +import com.woorea.openstack.nova.model.Volumes; + +public class VolumesExtension { + + private final OpenStackClient CLIENT; + + public VolumesExtension(OpenStackClient client) { + CLIENT = client; + } + + public List list(boolean detail) { + return new List(detail); + } + + public Create create(VolumeForCreate volume) { + return new Create(volume); + } + + public UploadToImage uploadToImage(VolumeForImageCreate volumeForImage) { + return new UploadToImage(volumeForImage); + } + + public Show show(String id) { + return new Show(id); + } + + public ShowMetadata showMetadata(String id) { + return new ShowMetadata(id); + } + + public Delete delete(String id) { + return new Delete(id); + } + + public class List extends OpenStackRequest<Volumes> { + + public List(boolean detail) { + super(CLIENT, HttpMethod.GET, detail ? "/os-volumes/detail" + : "/os-volumes", null, Volumes.class); + } + + } + + public class Create extends OpenStackRequest<Volume> { + + // private Volume volume; + + public Create(VolumeForCreate volume) { + super(CLIENT, HttpMethod.POST, "/os-volumes", Entity.json(volume), + Volume.class); + // this.volume = volume; + } + + } + + // Upload volume to image service as image + + public class UploadToImage extends OpenStackRequest<Void> { + + public UploadToImage(VolumeForImageCreate volumeForImageCreate) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/volumes/") + .append(volumeForImageCreate.getVolumeId() + "/action"), + Entity.json(volumeForImageCreate), Void.class); + } + + } + + public class Show extends OpenStackRequest<Volume> { + + public Show(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-volumes/") + .append(id).toString(), null, Volume.class); + } + + } + + public class ShowMetadata extends OpenStackRequest<Metadata> { + + public ShowMetadata(String id) { + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-volumes/") + .append(id).append("/metadata").toString(), null, + Metadata.class); + } + + } + + public class Delete extends OpenStackRequest<Void> { + + public Delete(String id) { + super(CLIENT, HttpMethod.DELETE, new StringBuilder("/os-volumes/") + .append(id).toString(), null, Void.class); + } + + } + +} |