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