Revision 5f90e24c snf-cyclades-app/synnefo/volume/views.py
b/snf-cyclades-app/synnefo/volume/views.py | ||
---|---|---|
58 | 58 |
def volume_to_dict(volume, detail=True): |
59 | 59 |
data = { |
60 | 60 |
"id": str(volume.id), |
61 |
"name": display_null_field(volume.name), |
|
62 |
# TODO: Links! |
|
63 |
"links": "", |
|
61 |
"display_name": display_null_field(volume.name), |
|
62 |
"links": util.volume_to_dict(volume.id), |
|
64 | 63 |
} |
65 | 64 |
if detail: |
66 | 65 |
details = { |
67 | 66 |
"status": volume.status.lower(), |
68 | 67 |
"size": volume.size, |
69 |
"description": volume.description, |
|
68 |
"display_description": volume.description,
|
|
70 | 69 |
"created_at": utils.isoformat(volume.created), |
71 | 70 |
"metadata": dict((m.key, m.value) for m in volume.metadata.all()), |
72 | 71 |
"snapshot_id": display_null_field(volume.source_snapshot_id), |
... | ... | |
75 | 74 |
"attachments": get_volume_attachments(volume), |
76 | 75 |
# TODO: |
77 | 76 |
"volume_type": None, |
77 |
"delete_on_termination": volume.delete_on_termination, |
|
78 | 78 |
#"availabilit_zone": None, |
79 | 79 |
#"bootable": None, |
80 | 80 |
#"os-vol-tenant-attr:tenant_id": None, |
... | ... | |
109 | 109 |
|
110 | 110 |
# Get and validate 'name' parameter |
111 | 111 |
# TODO: auto generate name |
112 |
name = new_volume.get("name", None) |
|
112 |
name = new_volume.get("display_name", None)
|
|
113 | 113 |
if name is None: |
114 | 114 |
raise faults.BadRequest("Volume 'name' is needed.") |
115 | 115 |
# Get and validate 'size' parameter |
... | ... | |
128 | 128 |
volume_type = new_volume.get("volume_type", None) |
129 | 129 |
|
130 | 130 |
# Optional parameters |
131 |
description = new_volume.get("description", "") |
|
131 |
description = new_volume.get("display_description", "")
|
|
132 | 132 |
metadata = new_volume.get("metadata", {}) |
133 | 133 |
if not isinstance(metadata, dict): |
134 | 134 |
msg = "Volume 'metadata' needs to be a dictionary of key-value pairs."\ |
... | ... | |
163 | 163 |
@api.api_method(http_method="GET", user_required=True, logger=log) |
164 | 164 |
def list_volumes(request, detail=False): |
165 | 165 |
log.debug('list_volumes detail=%s', detail) |
166 |
volumes = Volume.objects.filter(userid=request.user_uniq) |
|
166 |
volumes = Volume.objects.filter(userid=request.user_uniq).order_by("id")
|
|
167 | 167 |
|
168 |
since = utils.isoparse(request.GET.get('changes-since')) |
|
169 |
if since: |
|
170 |
volumes = volumes.filter(updated__gte=since) |
|
171 |
if not volumes: |
|
172 |
return HttpResponse(status=304) |
|
173 |
else: |
|
174 |
volumes = volumes.filter(deleted=False) |
|
168 |
volumes = utils.filter_modified_since(request, objects=volumes) |
|
175 | 169 |
|
176 |
volumes = [volume_to_dict(v, detail) for v in volumes.order_by("id")]
|
|
170 |
volumes = [volume_to_dict(v, detail) for v in volumes] |
|
177 | 171 |
|
178 | 172 |
data = json.dumps({'volumes': volumes}) |
179 | 173 |
return HttpResponse(data, content_type="application/json", status=200) |
... | ... | |
206 | 200 |
|
207 | 201 |
volume = util.get.volume(request.user_uniq, volume_id, for_update=True) |
208 | 202 |
|
209 |
new_name = req.get("name") |
|
210 |
description = req.get("description") |
|
203 |
new_name = req.get("display_name")
|
|
204 |
description = req.get("display_description")
|
|
211 | 205 |
|
212 | 206 |
if new_name is None and description is None: |
213 | 207 |
raise faults.BadRequest("Nothing to update.") |
Also available in: Unified diff