From 239892310179f1ddf37ce15d31b2555f21c590bf Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Tue, 3 Sep 2013 16:59:08 +0530 Subject: [PATCH 01/16] Update RoutersResource.java Added the functionality of setting external gateway to a router. --- .../openstack/quantum/api/RoutersResource.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/quantum-client/src/main/java/com/woorea/openstack/quantum/api/RoutersResource.java b/quantum-client/src/main/java/com/woorea/openstack/quantum/api/RoutersResource.java index bcd646d09..d45b781ca 100644 --- a/quantum-client/src/main/java/com/woorea/openstack/quantum/api/RoutersResource.java +++ b/quantum-client/src/main/java/com/woorea/openstack/quantum/api/RoutersResource.java @@ -95,6 +95,19 @@ public Detach(RouterForAddInterface interfaceToAdd) { } } + public SetExternalGateway setExternalGateway(ExternalGatewayForCreate externalGatewayForCreate) { + return new SetExternalGateway(externalGatewayForCreate); + } + + public class SetExternalGateway extends OpenStackRequest { + + public SetExternalGateway(ExternalGatewayForCreate externalGatewayForCreate) { + super(CLIENT, HttpMethod.PUT, buildPath("routers/", + externalGatewayForCreate.getRouterId()), + Entity.json(externalGatewayForCreate), RouterExternalGateway.class); + } + + } From 7fb03ba0cbb0216882fa349ed8a52b1ed80bdb86 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Tue, 3 Sep 2013 17:04:13 +0530 Subject: [PATCH 02/16] Create ExternalGatewayForCreate.java Provides input attributes to set the external gateway to the router. --- .../model/ExternalGatewayForCreate.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 quantum-model/src/main/java/com/woorea/openstack/quantum/model/ExternalGatewayForCreate.java diff --git a/quantum-model/src/main/java/com/woorea/openstack/quantum/model/ExternalGatewayForCreate.java b/quantum-model/src/main/java/com/woorea/openstack/quantum/model/ExternalGatewayForCreate.java new file mode 100644 index 000000000..f809a5523 --- /dev/null +++ b/quantum-model/src/main/java/com/woorea/openstack/quantum/model/ExternalGatewayForCreate.java @@ -0,0 +1,37 @@ +package com.woorea.openstack.quantum.model; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import org.codehaus.jackson.annotate.JsonIgnore; +import org.codehaus.jackson.annotate.JsonProperty; +import org.codehaus.jackson.map.annotate.JsonRootName; + +@JsonRootName("router") +public class ExternalGatewayForCreate implements Serializable { + @JsonProperty("external_gateway_info") + private Map external_gateway_info; + + @JsonIgnore + String routerId; + + public Map getExternal_gateway_info() { + return external_gateway_info; + } + + public void setExternal_gateway_info( + Map external_gateway_info) { + this.external_gateway_info = external_gateway_info; + } + + public String getRouterId() { + return routerId; + } + + public void setRouterId(String routerId) { + this.routerId = routerId; + } + + +} From 7076613e739b3df4ccfc0fe70298ff8e23557ae5 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Tue, 3 Sep 2013 17:07:08 +0530 Subject: [PATCH 03/16] Create RouterExternalGateway.java Class to retrieve the json response. --- .../quantum/model/RouterExternalGateway.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 quantum-model/src/main/java/com/woorea/openstack/quantum/model/RouterExternalGateway.java diff --git a/quantum-model/src/main/java/com/woorea/openstack/quantum/model/RouterExternalGateway.java b/quantum-model/src/main/java/com/woorea/openstack/quantum/model/RouterExternalGateway.java new file mode 100644 index 000000000..b23be480c --- /dev/null +++ b/quantum-model/src/main/java/com/woorea/openstack/quantum/model/RouterExternalGateway.java @@ -0,0 +1,37 @@ +package com.woorea.openstack.quantum.model; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.codehaus.jackson.annotate.JsonProperty; +import org.codehaus.jackson.map.annotate.JsonRootName; + +@JsonRootName("router") +public class RouterExternalGateway { + @JsonProperty("external_gateway_info") +private Map external_gateway_info = new HashMap(); + + +public Map getExternal_gateway_info() { + return external_gateway_info; +} + +public void setExternal_gateway_info(Map external_gateway_info) { + this.external_gateway_info = external_gateway_info; +} +@JsonProperty("status") + String status; +@JsonProperty("name") + String name; +@JsonProperty("admin_state_up") + String admin_state_up; +@JsonProperty("tenant_id") + String tenant_id; +@JsonProperty("id") + String id; +@JsonProperty("routes") +private List list; + + +} From 3a1bf4468f0105e9489695f9871d0c7852984703 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Wed, 4 Sep 2013 14:28:38 +0530 Subject: [PATCH 04/16] Update ServersResource.java Updated to add Server Diagnostics functionality. --- .../openstack/nova/api/ServersResource.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 index 88c90ac6d..66528f9a3 100644 --- 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 @@ -464,6 +464,21 @@ public ListVolumeAttachments listVolumeAttachments(String serverId) { public ShowVolumeAttachment showVolumeAttachment(String serverId, String volumeAttachmentId) { return new ShowVolumeAttachment(serverId, volumeAttachmentId); } + public Diagnostics getServerDiagnostics(String id) { + return new Diagnostics(id); + } + + public class Diagnostics extends OpenStackRequest { + + public Diagnostics(String id) { + + super(CLIENT, HttpMethod.GET, new StringBuilder("/servers/") + .append(id).append("/diagnostics"), null, + ServerDiagnostics.class); + } + + } + } From 5237bfc98c972d62c18e22166445a8948e2ebdf2 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Wed, 4 Sep 2013 14:31:36 +0530 Subject: [PATCH 05/16] Create ServerDiagnostics.java Retrieves server diagnostics. --- .../nova/model/ServerDiagnostics.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 nova-model/src/main/java/com/woorea/openstack/nova/model/ServerDiagnostics.java diff --git a/nova-model/src/main/java/com/woorea/openstack/nova/model/ServerDiagnostics.java b/nova-model/src/main/java/com/woorea/openstack/nova/model/ServerDiagnostics.java new file mode 100644 index 000000000..4543d2bd5 --- /dev/null +++ b/nova-model/src/main/java/com/woorea/openstack/nova/model/ServerDiagnostics.java @@ -0,0 +1,43 @@ +package com.woorea.openstack.nova.model; + +import java.io.Serializable; + +import org.codehaus.jackson.annotate.JsonProperty; + +public class ServerDiagnostics implements Serializable { + @JsonProperty("memory") + String memory; + @JsonProperty("cpu0_time") + String cpu0_time; + @JsonProperty("vda_read") + String vda_read; + @JsonProperty("vda_write") + String vda_write; + @JsonProperty("vda_write_req") + String vda_write_req; + @JsonProperty("tap7baaefe5-d7_rx_packets") + String t1; + @JsonProperty("tap7baaefe5-d7_rx") + String tap1; + @JsonProperty("tap7baaefe5-d7_rx_drop") + String drop1; + @JsonProperty("tap7baaefe5-d7_tx") + String d7_tx; + @JsonProperty("tap7baaefe5-d7_tx_drop") + String d7_tx_drop; + @JsonProperty("tap7baaefe5-d7_rx_errors") + String rx_errors; + @JsonProperty("memory-actual") + String actual; + @JsonProperty("memory-rss") + String rss; + @JsonProperty("tap7baaefe5-d7_tx_packets") + String d7_tx_packets; + @JsonProperty("vda_read_req") + String vda_read_req; + @JsonProperty("vda_errors") + String vda_errors; + @JsonProperty("tap7baaefe5-d7_tx_errors") + String d7_tx_errors; + +} From 0e852b7d11d960a4fe76bf4735390b672125333c Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Fri, 6 Sep 2013 09:49:43 +0530 Subject: [PATCH 06/16] Create VolumeQuotaDefaults.java Retrieves default quotas for a tenant. --- .../nova/model/VolumeQuotaDefaults.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 nova-model/src/main/java/com/woorea/openstack/nova/model/VolumeQuotaDefaults.java diff --git a/nova-model/src/main/java/com/woorea/openstack/nova/model/VolumeQuotaDefaults.java b/nova-model/src/main/java/com/woorea/openstack/nova/model/VolumeQuotaDefaults.java new file mode 100644 index 000000000..fff954876 --- /dev/null +++ b/nova-model/src/main/java/com/woorea/openstack/nova/model/VolumeQuotaDefaults.java @@ -0,0 +1,51 @@ +package com.woorea.openstack.nova.model; + +import java.io.Serializable; + +import org.codehaus.jackson.annotate.JsonProperty; +import org.codehaus.jackson.map.annotate.JsonRootName; + +@JsonRootName("quota_set") +public class VolumeQuotaDefaults implements Serializable { + @JsonProperty("gigabytes") + String gigabytes; + @JsonProperty("volumes") + String volumes; + @JsonProperty("id") + String id; + @JsonProperty("snapshots") + String snapshots; + + public String getGigabytes() { + return gigabytes; + } + + public void setGigabytes(String gigabytes) { + this.gigabytes = gigabytes; + } + + public String getVolumes() { + return volumes; + } + + public void setVolumes(String volumes) { + this.volumes = volumes; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getSnapshots() { + return snapshots; + } + + public void setSnapshots(String snapshots) { + this.snapshots = snapshots; + } + +} From 7159be9b22ba1f095711da65a1474d48312d927b Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Fri, 6 Sep 2013 09:53:54 +0530 Subject: [PATCH 07/16] Update ServersResource.java Updated volume QuotaDefaults Request to retrive default quotas for a tenant. --- .../woorea/openstack/nova/api/ServersResource.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 index 66528f9a3..c3a4f7355 100644 --- 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 @@ -71,6 +71,9 @@ public List(boolean detail) { } } + public QuotaDefaults getquotaDefaults(String id) { + return new QuotaDefaults(id); + } public class Boot extends OpenStackRequest { @@ -478,6 +481,16 @@ public Diagnostics(String id) { } } + public class QuotaDefaults extends OpenStackRequest { + + public QuotaDefaults(String id) { + + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-quota-sets/") + .append(id).append("/defaults"), null, + VolumeQuotaDefaults.class); + } + + } } From d7e80d2d842241f13cf78b0f2fe24c3078110978 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Fri, 6 Sep 2013 10:08:03 +0530 Subject: [PATCH 08/16] Update ServersResource.java --- .../woorea/openstack/nova/api/ServersResource.java | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) 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 index c3a4f7355..6ecaedbf1 100644 --- 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 @@ -71,9 +71,6 @@ public List(boolean detail) { } } - public QuotaDefaults getquotaDefaults(String id) { - return new QuotaDefaults(id); - } public class Boot extends OpenStackRequest { @@ -481,16 +478,7 @@ public Diagnostics(String id) { } } - public class QuotaDefaults extends OpenStackRequest { - - public QuotaDefaults(String id) { - - super(CLIENT, HttpMethod.GET, new StringBuilder("/os-quota-sets/") - .append(id).append("/defaults"), null, - VolumeQuotaDefaults.class); - } - - } + } From 05f69222b62a7920c64158df87125e0dd6f3c058 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Fri, 6 Sep 2013 10:10:29 +0530 Subject: [PATCH 09/16] Update VolumesExtension.java Added QuotaDefault functionality to retrieve default quotas for a tenant. --- .../nova/api/extensions/VolumesExtension.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 index de3557731..56715601a 100644 --- 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 @@ -102,5 +102,18 @@ public Delete(String id) { } } + public QuotaDefaults getquotaDefaults(String id) { + return new QuotaDefaults(id); + } + public class QuotaDefaults extends OpenStackRequest { + + public QuotaDefaults(String id) { + + super(CLIENT, HttpMethod.GET, new StringBuilder("/os-quota-sets/") + .append(id).append("/defaults"), null, + VolumeQuotaDefaults.class); + } + + } } From 18a5ecb684ae8caf4722c7f0e88f0295cb8a7ec7 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Fri, 6 Sep 2013 10:28:10 +0530 Subject: [PATCH 10/16] Update ExamplesConfiguration.java CINDER_ENDPOINT is added to provide the facility to work with cinder volume functionalities which can not be achieved through nova volumes. --- .../com/woorea/openstack/examples/ExamplesConfiguration.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openstack-examples/src/main/java/com/woorea/openstack/examples/ExamplesConfiguration.java b/openstack-examples/src/main/java/com/woorea/openstack/examples/ExamplesConfiguration.java index 621c4aadb..d22750a5e 100644 --- a/openstack-examples/src/main/java/com/woorea/openstack/examples/ExamplesConfiguration.java +++ b/openstack-examples/src/main/java/com/woorea/openstack/examples/ExamplesConfiguration.java @@ -21,6 +21,8 @@ public class ExamplesConfiguration { public static final String CEILOMETER_ENDPOINT = ""; + public static final String CINDER_ENDPOINT ="http://volume/v1"; + public static void main(String[] args) { Keystone client = new Keystone(KEYSTONE_ENDPOINT); client.setTokenProvider(new OpenStackSimpleTokenProvider("secret0")); From f1312b3208510030913ec60beeb28cd375b54237 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Wed, 11 Sep 2013 11:24:23 +0530 Subject: [PATCH 11/16] Update ServersResource.java Updated to add live migration functionality to ServersResource --- .../openstack/nova/api/ServersResource.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) 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 index 6ecaedbf1..0764cf7ac 100644 --- 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 @@ -478,7 +478,36 @@ public Diagnostics(String id) { } } - + + public LiveMigration liveMigration(LiveMigrationSet liveMigrationSet) { + return new LiveMigration(liveMigrationSet); + } + + public GetServerForMigration getServerForMigration( + LiveMigrationSet liveMigrationSet) { + return new GetServerForMigration(liveMigrationSet); + } + + public class GetServerForMigration extends OpenStackRequest { + + public GetServerForMigration(LiveMigrationSet liveMigrationSet) { + + super(CLIENT, HttpMethod.GET, new StringBuilder("/servers/") + .append(liveMigrationSet.getServerId()), null, Server.class); + + } + + } + + public class LiveMigration extends OpenStackRequest { + LiveMigration(LiveMigrationSet liveMigrationSet) { + super(CLIENT, HttpMethod.POST, new StringBuilder("/servers/") + .append(liveMigrationSet.getServerId()).append("/action"), + Entity.json(liveMigrationSet), Void.class); + + } + + } } From bc586ae55806f8f00515184181f1c1f239046f46 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Wed, 11 Sep 2013 11:28:01 +0530 Subject: [PATCH 12/16] Create LiveMigrationSet.java Provides json request format to migrate a vm from one compute to other compute. (live migration) --- .../nova/model/LiveMigrationSet.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 nova-model/src/main/java/com/woorea/openstack/nova/model/LiveMigrationSet.java diff --git a/nova-model/src/main/java/com/woorea/openstack/nova/model/LiveMigrationSet.java b/nova-model/src/main/java/com/woorea/openstack/nova/model/LiveMigrationSet.java new file mode 100644 index 000000000..a8e72f15e --- /dev/null +++ b/nova-model/src/main/java/com/woorea/openstack/nova/model/LiveMigrationSet.java @@ -0,0 +1,52 @@ +package com.woorea.openstack.nova.model; + +import java.io.Serializable; + +import org.codehaus.jackson.annotate.JsonIgnore; +import org.codehaus.jackson.annotate.JsonProperty; +import org.codehaus.jackson.map.annotate.JsonRootName; + +@JsonRootName("os-migrateLive") +public class LiveMigrationSet implements Serializable { + @JsonIgnore + String serverId; + @JsonProperty("host") + String hostName; + @JsonProperty("block_migration") + boolean blockMigration; + @JsonProperty("disk_over_commit") + boolean diskOverCommit; + + public boolean isBlockMigration() { + return blockMigration; + } + + public void setBlockMigration(boolean blockMigration) { + this.blockMigration = blockMigration; + } + + public boolean isDiskOverCommit() { + return diskOverCommit; + } + + public void setDiskOverCommit(boolean diskOverCommit) { + this.diskOverCommit = diskOverCommit; + } + + public String getServerId() { + return serverId; + } + + public void setServerId(String serverId) { + this.serverId = serverId; + } + + public String getHostName() { + return hostName; + } + + public void setHostName(String hostName) { + this.hostName = hostName; + } + +} From c6ba46d08ef84ad67b1da6ee5e514d6aec06fe41 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Wed, 11 Sep 2013 11:36:42 +0530 Subject: [PATCH 13/16] Create LiveMigrationExample.java Sample class to migrate a running vm from one compute to other compute. --- .../compute/LiveMigrationExample.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 openstack-examples/src/main/java/com/woorea/openstack/examples/compute/LiveMigrationExample.java diff --git a/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/LiveMigrationExample.java b/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/LiveMigrationExample.java new file mode 100644 index 000000000..0f99c8376 --- /dev/null +++ b/openstack-examples/src/main/java/com/woorea/openstack/examples/compute/LiveMigrationExample.java @@ -0,0 +1,48 @@ +public class LiveMigrationExample { + + public Access authenticate(String tenantId) { + Keystone keystone = new Keystone( + ExamplesConfiguration.KEYSTONE_AUTH_URL); + // access with unscoped token + Access access = keystone + .tokens() + .authenticate( + new UsernamePassword( + ExamplesConfiguration.KEYSTONE_USERNAME, + ExamplesConfiguration.KEYSTONE_PASSWORD)) + .withTenantId(tenantId).execute(); + // authorization + access = keystone + .tokens() + .authenticate( + new TokenAuthentication(access.getToken().getId())) + .withTenantId(tenantId).execute(); + System.out.println("token" + access.getToken()); + return access; + } + public void liveMigration(Access access, String tenantId) { + System.out.println("in livemigration"); + Nova nova = new Nova( + ExamplesConfiguration.NOVA_ENDPOINT.concat(tenantId)); + + nova.setTokenProvider(new OpenStackSimpleTokenProvider(access + .getToken().getId())); + LiveMigrationSet liveMigrationSet = new LiveMigrationSet(); + //provide hostname of the compute node to wich you want to migrate + liveMigrationSet.setHostName("hostnname"); + //server id of the server , wich you want to migrate + liveMigrationSet.setServerId("serverId"); + nova.servers().getServerForMigration(liveMigrationSet).execute(); + nova.servers().liveMigration(liveMigrationSet).execute(); + + } + + public static void main(String[] args) { + // TODO Auto-generated method stub + LiveMigrationExample example = new LiveMigrationExample(); +//provide tenant id to authenticate and server id to migrate + Access access = example + .authenticate("tenantId"); + example.liveMigration(access, "serverId"); + } + } From 700d43f4d576b3596fd103fff7fd75a4033bd3f8 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Wed, 30 Oct 2013 11:58:21 +0530 Subject: [PATCH 14/16] Update ImagesResource.java X-Image-Meta-Location header has been added to support location option while creating an image.The location option is important to note. It does not copy the entire image into Glance, but reference an original location to where the image can be found. Upon launching an instance of that image, Glance accesses the image from the location specified. --- .../main/java/com/woorea/openstack/glance/ImagesResource.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/glance-client/src/main/java/com/woorea/openstack/glance/ImagesResource.java b/glance-client/src/main/java/com/woorea/openstack/glance/ImagesResource.java index ae46548db..58c816000 100644 --- a/glance-client/src/main/java/com/woorea/openstack/glance/ImagesResource.java +++ b/glance-client/src/main/java/com/woorea/openstack/glance/ImagesResource.java @@ -206,6 +206,7 @@ public static Map compose(Image image) { headers.put("X-Image-Meta-Checksum", image.getChecksum()); headers.put("X-Image-Meta-Is_public", String.valueOf(image.isPublic())); headers.put("X-Image-Meta-Owner", image.getOwner()); + headers.put("X-Image-Meta-Location", image.getLocation()); for(String key : image.getProperties().keySet()) { image.getProperties().put("x-image-meta-property-" + key, image.getProperties().get(key)); @@ -233,6 +234,7 @@ public static Image parse(Map headers) { image.setMinRam(asInteger(headers.get("X-Image-Meta-Min_ram"))); image.setMinDisk(asInteger(headers.get("X-Image-Meta-Min_disk"))); image.setOwner(headers.get("X-Image-Meta-Owner")); + image.setLocation(headers.get("X-Image-Meta-Location")); for(String key : headers.keySet()) { if(key.startsWith("x-image-meta-property-")) { image.getProperties().put(key.substring(22), headers.get(key)); From d6b74c2a2c09c13d689d80c14e3856931fef8c49 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Wed, 30 Oct 2013 12:01:38 +0530 Subject: [PATCH 15/16] Update Image.java location parameter has been included to provide external image reference functionality.The location option does not copy the entire image into Glance, but reference an original location to where the image can be found. Upon launching an instance of that image, Glance accesses the image from the location specified. --- .../com/woorea/openstack/glance/model/Image.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/glance-model/src/main/java/com/woorea/openstack/glance/model/Image.java b/glance-model/src/main/java/com/woorea/openstack/glance/model/Image.java index 491fde640..417dacc18 100644 --- a/glance-model/src/main/java/com/woorea/openstack/glance/model/Image.java +++ b/glance-model/src/main/java/com/woorea/openstack/glance/model/Image.java @@ -17,6 +17,7 @@ public class Image implements Serializable { private String name; + @JsonProperty("disk_format") private String diskFormat; @@ -55,6 +56,18 @@ public class Image implements Serializable { @JsonProperty("protected") private boolean isProtected; + @JsonProperty("location") + private String location; + + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + private Map properties; /** From 6472458ce81c5cff69301ae0bf8cffa73c4b6930 Mon Sep 17 00:00:00 2001 From: persistent-rCloud Date: Thu, 31 Oct 2013 10:53:23 +0530 Subject: [PATCH 16/16] Update ImagesResource.java --- .../main/java/com/woorea/openstack/glance/ImagesResource.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/glance-client/src/main/java/com/woorea/openstack/glance/ImagesResource.java b/glance-client/src/main/java/com/woorea/openstack/glance/ImagesResource.java index 58c816000..33541b41f 100644 --- a/glance-client/src/main/java/com/woorea/openstack/glance/ImagesResource.java +++ b/glance-client/src/main/java/com/woorea/openstack/glance/ImagesResource.java @@ -125,7 +125,7 @@ public Image execute() { } public class Upload extends OpenStackRequest { - + l public Upload(String id, ImageUpload imageUpload) { super(CLIENT, HttpMethod.PUT, new StringBuilder("/images/").append(id).toString(), Entity.stream(imageUpload.getInputStream()), Image.class); @@ -234,6 +234,7 @@ public static Image parse(Map headers) { image.setMinRam(asInteger(headers.get("X-Image-Meta-Min_ram"))); image.setMinDisk(asInteger(headers.get("X-Image-Meta-Min_disk"))); image.setOwner(headers.get("X-Image-Meta-Owner")); + //setting this location option will not copy the image to glance store image.setLocation(headers.get("X-Image-Meta-Location")); for(String key : headers.keySet()) { if(key.startsWith("x-image-meta-property-")) {