|
2 | 2 |
|
3 | 3 | import java.util.Calendar; |
4 | 4 | import java.util.Collection; |
| 5 | +import java.util.HashMap; |
5 | 6 | import java.util.Map; |
6 | 7 |
|
7 | 8 | import org.codehaus.jackson.annotate.JsonProperty; |
@@ -81,7 +82,10 @@ public List(boolean detail) { |
81 | 82 | public class Create extends OpenStackRequest<Image> { |
82 | 83 |
|
83 | 84 | public Create(Image image) { |
84 | | - super(CLIENT, HttpMethod.POST, "/images", Entity.json(image), Image.class); |
| 85 | + super(CLIENT, HttpMethod.POST, "/images", null, Image.class); |
| 86 | + for (Map.Entry<String, String> entry : compose(image).entrySet()) { |
| 87 | + header(entry.getKey(), entry.getValue()); |
| 88 | + } |
85 | 89 | } |
86 | 90 |
|
87 | 91 | } |
@@ -120,19 +124,13 @@ public class Upload extends OpenStackRequest<Image> { |
120 | 124 |
|
121 | 125 | public Upload(ImageUpload imageUpload) { |
122 | 126 | super(CLIENT, HttpMethod.POST, "/images", Entity.stream(imageUpload.getInputStream()), Image.class); |
123 | | - header("x-image-meta-name", imageUpload.getImage().getName()); |
124 | | - header("x-image-meta-disk_format", imageUpload.getImage().getDiskFormat()); |
125 | | - header("x-image-meta-container_format", imageUpload.getImage().getContainerFormat()); |
126 | | - header("x-image-meta-id", imageUpload.getImage().getId()); |
| 127 | + |
| 128 | + for (Map.Entry<String, String> entry : compose(imageUpload.getImage()).entrySet()) { |
| 129 | + header(entry.getKey(), entry.getValue()); |
| 130 | + } |
| 131 | + |
127 | 132 | //file,s3,swift |
128 | 133 | header("x-image-meta-store", imageUpload.getStore()); |
129 | | - header("x-image-meta-size", imageUpload.getImage().getSize()); |
130 | | - header("x-image-meta-checksum", imageUpload.getImage().getChecksum()); |
131 | | - header("x-image-meta-is-public", imageUpload.getImage().isPublic()); |
132 | | - header("x-image-meta-owner", imageUpload.getImage().getOwner()); |
133 | | - for(String key : imageUpload.getProperties().keySet()) { |
134 | | - imageUpload.getProperties().put("x-image-meta-property-" + key, imageUpload.getProperties().get(key)); |
135 | | - } |
136 | 134 | } |
137 | 135 |
|
138 | 136 | } |
@@ -187,7 +185,26 @@ public RemoveMember(String id, String tenantId) { |
187 | 185 | } |
188 | 186 |
|
189 | 187 | } |
190 | | - |
| 188 | + |
| 189 | + public static Map<String, String> compose(Image image) { |
| 190 | + Map<String, String> headers = new HashMap<String, String>(); |
| 191 | + |
| 192 | + headers.put("X-Image-Meta-Name", image.getName()); |
| 193 | + headers.put("X-Image-Meta-Disk_format", image.getDiskFormat()); |
| 194 | + headers.put("X-Image-Meta-Container_format", image.getContainerFormat()); |
| 195 | + headers.put("X-Image-Meta-Id", image.getId()); |
| 196 | + headers.put("X-Image-Meta-Size", (image.getSize() != null) ? image.getSize().toString() : null); |
| 197 | + headers.put("X-Image-Meta-Checksum", image.getChecksum()); |
| 198 | + headers.put("X-Image-Meta-Is_public", String.valueOf(image.isPublic())); |
| 199 | + headers.put("X-Image-Meta-Owner", image.getOwner()); |
| 200 | + |
| 201 | + for(String key : image.getProperties().keySet()) { |
| 202 | + image.getProperties().put("x-image-meta-property-" + key, image.getProperties().get(key)); |
| 203 | + } |
| 204 | + |
| 205 | + return headers; |
| 206 | + } |
| 207 | + |
191 | 208 | public static Image parse(Map<String, String> headers) { |
192 | 209 | Image image = new Image(); |
193 | 210 | image.setId(headers.get("X-Image-Meta-Id")); |
|
0 commit comments