Skip to content

Commit b530f70

Browse files
committed
Merge pull request woorea#54 from simon3z/master
Glance image upload and download fixes
2 parents 3e08e60 + 1fbce98 commit b530f70

File tree

7 files changed

+164
-226
lines changed

7 files changed

+164
-226
lines changed

glance-client/src/main/java/com/woorea/openstack/glance/ImagesResource.java

Lines changed: 53 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Calendar;
44
import java.util.Collection;
5+
import java.util.HashMap;
56
import java.util.Map;
67

78
import org.codehaus.jackson.annotate.JsonProperty;
@@ -13,7 +14,7 @@
1314
import com.woorea.openstack.base.client.OpenStackResponse;
1415
import com.woorea.openstack.glance.model.Image;
1516
import com.woorea.openstack.glance.model.ImageDownload;
16-
import com.woorea.openstack.glance.model.ImageForUpload;
17+
import com.woorea.openstack.glance.model.ImageUpload;
1718
import com.woorea.openstack.glance.model.ImageMember;
1819
import com.woorea.openstack.glance.model.ImageMembers;
1920
import com.woorea.openstack.glance.model.Images;
@@ -46,10 +47,14 @@ public Delete delete(String id) {
4647
return new Delete(id);
4748
}
4849

49-
public Upload upload(ImageForUpload image) {
50+
public Upload upload(ImageUpload image) {
5051
return new Upload(image);
5152
}
5253

54+
public Upload upload(String id, ImageUpload image) {
55+
return new Upload(id, image);
56+
}
57+
5358
public Download download(String id) {
5459
return new Download(id);
5560
}
@@ -80,22 +85,19 @@ public List(boolean detail) {
8085

8186
public class Create extends OpenStackRequest<Image> {
8287

83-
private Image image;
84-
8588
public Create(Image image) {
86-
super(CLIENT, HttpMethod.POST, "/images", Entity.json(image), Image.class);
87-
this.image = image;
89+
super(CLIENT, HttpMethod.POST, "/images", null, Image.class);
90+
for (Map.Entry<String, String> entry : compose(image).entrySet()) {
91+
header(entry.getKey(), entry.getValue());
92+
}
8893
}
8994

9095
}
9196

9297
public class Update extends OpenStackRequest<Image> {
9398

94-
private Image image;
95-
9699
public Update(String id, Image image) {
97100
super(CLIENT, HttpMethod.PUT, new StringBuilder("/images/").append(id).toString(), Entity.json(image), Image.class);
98-
this.image = image;
99101
}
100102

101103
}
@@ -124,31 +126,28 @@ public Image execute() {
124126

125127
public class Upload extends OpenStackRequest<Image> {
126128

127-
private ImageForUpload imageForUpload;
128-
129-
public Upload(ImageForUpload imageForUpload) {
130-
super(CLIENT, HttpMethod.POST, "/images", Entity.stream(imageForUpload.getInputStream()), Image.class);
131-
header("x-image-meta-name", imageForUpload.getName());
132-
header("x-image-meta-disk_format", imageForUpload.getDiskFormat());
133-
header("x-image-meta-container_format", imageForUpload.getContainerFormat());
134-
header("x-image-meta-id", imageForUpload.getId());
135-
//file,s3,swift
136-
header("x-image-meta-store", imageForUpload.getStore());
137-
header("x-image-meta-size", imageForUpload.getSize());
138-
header("x-image-meta-checksum", imageForUpload.getChecksum());
139-
header("x-image-meta-is-public", imageForUpload.isPublic());
140-
header("x-image-meta-owner", imageForUpload.getOwner());
141-
for(String key : imageForUpload.getProperties().keySet()) {
142-
imageForUpload.getProperties().put("x-image-meta-property-" + key, imageForUpload.getProperties().get(key));
129+
public Upload(String id, ImageUpload imageUpload) {
130+
super(CLIENT, HttpMethod.PUT, new StringBuilder("/images/").append(id).toString(),
131+
Entity.stream(imageUpload.getInputStream()), Image.class);
132+
}
133+
134+
public Upload(ImageUpload imageUpload) {
135+
super(CLIENT, HttpMethod.POST, "/images", Entity.stream(imageUpload.getInputStream()), Image.class);
136+
137+
for (Map.Entry<String, String> entry : compose(imageUpload.getImage()).entrySet()) {
138+
header(entry.getKey(), entry.getValue());
143139
}
140+
141+
//file,s3,swift
142+
header("x-image-meta-store", imageUpload.getStore());
144143
}
145144

146145
}
147146

148147
public class Download extends OpenStackRequest<ImageDownload> {
149148

150149
public Download(String id) {
151-
super(CLIENT, HttpMethod.HEAD, new StringBuilder("/images/").append(id).toString(), null, ImageDownload.class);
150+
super(CLIENT, HttpMethod.GET, new StringBuilder("/images/").append(id).toString(), null, ImageDownload.class);
152151
header("Accept", "application/octet-stream");
153152
}
154153

@@ -182,20 +181,39 @@ public ReplaceMembers(String id, Collection<ImageMember> members) {
182181

183182
public class AddMember extends OpenStackRequest<ImageMember> {
184183

185-
public AddMember(String id, String tenantId) {
186-
super(CLIENT, HttpMethod.PUT, new StringBuilder("/images/").append(id).append("/members").append(tenantId).toString(), null, ImageMember.class);
184+
public AddMember(String id, String tenantId) {
185+
super(CLIENT, HttpMethod.PUT, new StringBuilder("/images/").append(id).append("/members").append(tenantId).toString(), null, ImageMember.class);
186+
}
187+
187188
}
188-
189-
}
190189

191190
public class RemoveMember extends OpenStackRequest<Void> {
192191

193-
public RemoveMember(String id, String tenantId) {
194-
super(CLIENT, HttpMethod.DELETE, new StringBuilder("/images/").append(id).append("/members/").append(tenantId).toString(), null, Void.class);
192+
public RemoveMember(String id, String tenantId) {
193+
super(CLIENT, HttpMethod.DELETE, new StringBuilder("/images/").append(id).append("/members/").append(tenantId).toString(), null, Void.class);
194+
}
195+
195196
}
196-
197-
}
198-
197+
198+
public static Map<String, String> compose(Image image) {
199+
Map<String, String> headers = new HashMap<String, String>();
200+
201+
headers.put("X-Image-Meta-Name", image.getName());
202+
headers.put("X-Image-Meta-Disk_format", image.getDiskFormat());
203+
headers.put("X-Image-Meta-Container_format", image.getContainerFormat());
204+
headers.put("X-Image-Meta-Id", image.getId());
205+
headers.put("X-Image-Meta-Size", (image.getSize() != null) ? image.getSize().toString() : null);
206+
headers.put("X-Image-Meta-Checksum", image.getChecksum());
207+
headers.put("X-Image-Meta-Is_public", String.valueOf(image.isPublic()));
208+
headers.put("X-Image-Meta-Owner", image.getOwner());
209+
210+
for(String key : image.getProperties().keySet()) {
211+
image.getProperties().put("x-image-meta-property-" + key, image.getProperties().get(key));
212+
}
213+
214+
return headers;
215+
}
216+
199217
public static Image parse(Map<String, String> headers) {
200218
Image image = new Image();
201219
image.setId(headers.get("X-Image-Meta-Id"));

glance-model/src/main/java/com/woorea/openstack/glance/model/ImageForUpload.java

Lines changed: 0 additions & 183 deletions
This file was deleted.

0 commit comments

Comments
 (0)