Revision 9e98ba3c api/images.py
b/api/images.py | ||
---|---|---|
41 | 41 |
from synnefo.api.common import method_not_allowed |
42 | 42 |
from synnefo.api.faults import BadRequest |
43 | 43 |
from synnefo.db.models import Image, ImageMetadata |
44 |
from synnefo.util.log import getLogger |
|
44 | 45 |
|
45 | 46 |
|
47 |
log = getLogger('synnefo.api') |
|
48 |
|
|
46 | 49 |
urlpatterns = patterns('synnefo.api.images', |
47 | 50 |
(r'^(?:/|.json|.xml)?$', 'demux'), |
48 | 51 |
(r'^/detail(?:.json|.xml)?$', 'list_images', {'detail': True}), |
... | ... | |
115 | 118 |
# badRequest (400), |
116 | 119 |
# overLimit (413) |
117 | 120 |
|
121 |
log.debug('list_images detail=%s', detail) |
|
118 | 122 |
user_images = Image.objects.filter(Q(owner=request.user) | Q(public=True)) |
119 | 123 |
since = util.isoparse(request.GET.get('changes-since')) |
120 | 124 |
|
... | ... | |
152 | 156 |
# overLimit (413) |
153 | 157 |
|
154 | 158 |
req = util.get_request_dict(request) |
155 |
|
|
159 |
log.debug('create_image %s', req) |
|
160 |
|
|
156 | 161 |
try: |
157 | 162 |
d = req['image'] |
158 | 163 |
server_id = d['serverRef'] |
... | ... | |
163 | 168 |
owner = request.user |
164 | 169 |
vm = util.get_vm(server_id, owner) |
165 | 170 |
image = Image.objects.create(name=name, owner=owner, sourcevm=vm) |
171 |
log.info('User %d created image %d', owner.id, image.id) |
|
166 | 172 |
|
167 | 173 |
imagedict = image_to_dict(image) |
168 | 174 |
if request.serialization == 'xml': |
... | ... | |
181 | 187 |
# badRequest (400), |
182 | 188 |
# itemNotFound (404), |
183 | 189 |
# overLimit (413) |
184 |
|
|
190 |
|
|
191 |
log.debug('get_image_details %s', image_id) |
|
185 | 192 |
image = util.get_image(image_id, request.user) |
186 | 193 |
imagedict = image_to_dict(image) |
187 | 194 |
|
... | ... | |
200 | 207 |
# unauthorized (401), |
201 | 208 |
# itemNotFound (404), |
202 | 209 |
# overLimit (413) |
203 |
|
|
210 |
|
|
211 |
log.debug('delete_image %s', image_id) |
|
204 | 212 |
image = util.get_image(image_id, request.user) |
205 | 213 |
image.state = 'DELETED' |
206 | 214 |
image.save() |
215 |
log.info('User %d deleted image %d', request.user.id, image.id) |
|
207 | 216 |
return HttpResponse(status=204) |
208 | 217 |
|
209 | 218 |
@util.api_method('GET') |
... | ... | |
214 | 223 |
# unauthorized (401), |
215 | 224 |
# badRequest (400), |
216 | 225 |
# overLimit (413) |
217 |
|
|
226 |
|
|
227 |
log.debug('list_image_metadata %s', image_id) |
|
218 | 228 |
image = util.get_image(image_id, request.user) |
219 | 229 |
metadata = dict((m.meta_key, m.meta_value) for m in image.metadata.all()) |
220 | 230 |
return util.render_metadata(request, metadata, use_values=True, status=200) |
... | ... | |
229 | 239 |
# buildInProgress (409), |
230 | 240 |
# badMediaType(415), |
231 | 241 |
# overLimit (413) |
232 |
|
|
233 |
image = util.get_image(image_id, request.user) |
|
242 |
|
|
234 | 243 |
req = util.get_request_dict(request) |
244 |
log.debug('update_image_metadata %s %s', image_id, req) |
|
245 |
image = util.get_image(image_id, request.user) |
|
235 | 246 |
try: |
236 | 247 |
metadata = req['metadata'] |
237 | 248 |
assert isinstance(metadata, dict) |
... | ... | |
256 | 267 |
# itemNotFound (404), |
257 | 268 |
# badRequest (400), |
258 | 269 |
# overLimit (413) |
259 |
|
|
270 |
|
|
271 |
log.debug('get_image_metadata_item %s %s', image_id, key) |
|
260 | 272 |
image = util.get_image(image_id, request.user) |
261 | 273 |
meta = util.get_image_meta(image, key) |
262 | 274 |
return util.render_meta(request, meta, status=200) |
... | ... | |
272 | 284 |
# buildInProgress (409), |
273 | 285 |
# badMediaType(415), |
274 | 286 |
# overLimit (413) |
275 |
|
|
276 |
image = util.get_image(image_id, request.user) |
|
287 |
|
|
277 | 288 |
req = util.get_request_dict(request) |
289 |
log.debug('create_image_metadata_item %s %s %s', image_id, key, req) |
|
290 |
image = util.get_image(image_id, request.user) |
|
278 | 291 |
try: |
279 | 292 |
metadict = req['meta'] |
280 | 293 |
assert isinstance(metadict, dict) |
... | ... | |
303 | 316 |
# buildInProgress (409), |
304 | 317 |
# badMediaType(415), |
305 | 318 |
# overLimit (413), |
306 |
|
|
319 |
|
|
320 |
log.debug('delete_image_metadata_item %s %s', image_id, key) |
|
307 | 321 |
image = util.get_image(image_id, request.user) |
308 | 322 |
meta = util.get_image_meta(image, key) |
309 | 323 |
meta.delete() |
Also available in: Unified diff