summaryrefslogtreecommitdiffstats
path: root/nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/AggregatesExtension.java
diff options
context:
space:
mode:
Diffstat (limited to 'nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/AggregatesExtension.java')
-rw-r--r--nova-client/src/main/java/com/woorea/openstack/nova/api/extensions/AggregatesExtension.java163
1 files changed, 163 insertions, 0 deletions
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);
+ }
+ }
+}
+