Exemple #1
0
def list_snapshot_metadata(request, snapshot_id):
    credentials = request.credentials
    util.assert_snapshots_enabled(request)
    snapshot = util.get_snapshot(credentials.userid, snapshot_id)
    metadata = snapshot["properties"]
    data = json.dumps({"metadata": dict(metadata)})
    return HttpResponse(data, content_type="application/json", status=200)
Exemple #2
0
def update_snapshot(request, snapshot_id):
    util.assert_snapshots_enabled(request)
    req = utils.get_json_body(request)
    log.debug("User: %s, Snapshot: %s Action: update", request.user_uniq,
              snapshot_id)
    snapshot = util.get_snapshot(request.user_uniq, snapshot_id)

    snap_dict = utils.get_attribute(req,
                                    "snapshot",
                                    attr_type=dict,
                                    required=True)
    new_name = utils.get_attribute(snap_dict,
                                   "display_name",
                                   required=False,
                                   attr_type=basestring)
    new_description = utils.get_attribute(snap_dict,
                                          "display_description",
                                          required=False,
                                          attr_type=basestring)

    if new_name is None and new_description is None:
        raise faults.BadRequest("Nothing to update.")

    snapshot = snapshots.update(snapshot,
                                name=new_name,
                                description=new_description)

    log.info("User %s updated snapshot %s", request.user_uniq, snapshot["id"])

    data = json.dumps({'snapshot': snapshot_to_dict(snapshot, detail=True)})
    return HttpResponse(data, content_type="application/json", status=200)
Exemple #3
0
def update_snapshot(request, snapshot_id):
    credentials = request.credentials
    util.assert_snapshots_enabled(request)
    req = utils.get_json_body(request)
    log.debug("User: %s, Snapshot: %s Action: update",
              credentials.userid, snapshot_id)
    snapshot = util.get_snapshot(credentials.userid, snapshot_id)

    snap_dict = utils.get_attribute(req, "snapshot", attr_type=dict,
                                    required=True)
    new_name = utils.get_attribute(snap_dict, "display_name", required=False,
                                   attr_type=basestring)
    new_description = utils.get_attribute(snap_dict, "display_description",
                                          required=False, attr_type=basestring)

    if new_name is None and new_description is None:
        raise faults.BadRequest("Nothing to update.")

    snapshot = snapshots.update(snapshot, name=new_name,
                                description=new_description)

    log.info("User %s updated snapshot %s", credentials.userid, snapshot["id"])

    data = json.dumps({'snapshot': snapshot_to_dict(snapshot, detail=True)})
    return HttpResponse(data, content_type="application/json", status=200)
Exemple #4
0
def delete_snapshot_metadata_item(request, snapshot_id, key):
    util.assert_snapshots_enabled(request)
    log.debug("User: %s, Snapshot: %s Action: delete_metadata",
              request.user_uniq, snapshot_id)
    snapshot = util.get_snapshot(request.user_uniq, snapshot_id)
    if key in snapshot["properties"]:
        with backend.PlanktonBackend(request.user_uniq) as b:
            b.remove_property(snapshot_id, key)
    return HttpResponse(status=200)
Exemple #5
0
def delete_snapshot_metadata_item(request, snapshot_id, key):
    credentials = request.credentials
    util.assert_snapshots_enabled(request)
    log.debug("User: %s, Snapshot: %s Action: delete_metadata",
              credentials.userid, snapshot_id)
    snapshot = util.get_snapshot(credentials.userid, snapshot_id)
    if key in snapshot["properties"]:
        with backend.PlanktonBackend(credentials.userid) as b:
            b.remove_property(snapshot_id, key)
    return HttpResponse(status=200)
Exemple #6
0
def create_snapshot(request):
    """Create a new Snapshot."""
    util.assert_snapshots_enabled(request)
    req = utils.get_json_body(request)
    user_id = request.user_uniq

    log.debug("User: %s, Action: create_snapshot, Request: %s", user_id, req)

    snap_dict = utils.get_attribute(req,
                                    "snapshot",
                                    required=True,
                                    attr_type=dict)
    volume_id = utils.get_attribute(snap_dict, "volume_id", required=True)
    volume = util.get_volume(user_id,
                             request.user_projects,
                             volume_id,
                             for_update=True,
                             non_deleted=True,
                             exception=faults.BadRequest)

    metadata = utils.get_attribute(snap_dict,
                                   "metadata",
                                   required=False,
                                   attr_type=dict,
                                   default={})
    name = utils.get_attribute(snap_dict,
                               "display_name",
                               required=False,
                               attr_type=basestring,
                               default="Snapshot of volume '%s'" % volume_id)
    description = utils.get_attribute(snap_dict,
                                      "display_description",
                                      required=False,
                                      attr_type=basestring,
                                      default="")

    # TODO: What to do with force ?
    force = utils.get_attribute(req,
                                "force",
                                required=False,
                                attr_type=bool,
                                default=False)

    snapshot = snapshots.create(user_id=user_id,
                                volume=volume,
                                name=name,
                                description=description,
                                metadata=metadata,
                                force=force)

    log.info("User %s created snapshot %s", user_id, snapshot["id"])

    # Render response
    data = json.dumps(dict(snapshot=snapshot_to_dict(snapshot, detail=False)))
    return HttpResponse(data, status=202)
Exemple #7
0
def delete_snapshot(request, snapshot_id):
    util.assert_snapshots_enabled(request)
    log.debug("User: %s, Snapshot: %s Action: delete", request.user_uniq,
              snapshot_id)

    snapshot = util.get_snapshot(request.user_uniq, snapshot_id)
    snapshots.delete(snapshot)

    log.info("User %s deleted snapshot %s", request.user_uniq, snapshot["id"])

    return HttpResponse(status=202)
Exemple #8
0
def delete_snapshot(request, snapshot_id):
    credentials = request.credentials
    util.assert_snapshots_enabled(request)
    log.debug("User: %s, Snapshot: %s Action: delete",
              credentials.userid, snapshot_id)

    snapshot = util.get_snapshot(credentials.userid, snapshot_id)
    snapshots.delete(snapshot)

    log.info("User %s deleted snapshot %s", credentials.userid, snapshot["id"])

    return HttpResponse(status=202)
Exemple #9
0
def update_snapshot_metadata(request, snapshot_id, reset=False):
    credentials = request.credentials
    util.assert_snapshots_enabled(request)
    req = utils.get_json_body(request)
    log.debug("User: %s, Snapshot: %s Action: update_metadata",
              credentials.userid, snapshot_id)
    snapshot = util.get_snapshot(credentials.userid, snapshot_id)
    meta_dict = utils.get_attribute(req, "metadata", required=True,
                                    attr_type=dict)
    with backend.PlanktonBackend(credentials.userid) as b:
        b.update_properties(snapshot_id, meta_dict, replace=reset)
    snapshot = util.get_snapshot(credentials.userid, snapshot_id)
    metadata = snapshot["properties"]
    data = json.dumps({"metadata": dict(metadata)})
    return HttpResponse(data, content_type="application/json", status=200)
Exemple #10
0
def list_snapshots(request, detail=False):
    util.assert_snapshots_enabled(request)
    since = utils.isoparse(request.GET.get('changes-since'))
    with backend.PlanktonBackend(request.user_uniq) as b:
        snapshots = b.list_snapshots()
        if since:
            updated_since = lambda snap:\
                date_parse(snap["updated_at"]) >= since
            snapshots = ifilter(updated_since, snapshots)
            if not snapshots:
                return HttpResponse(status=304)

    snapshots = sorted(snapshots, key=lambda x: x['id'])
    snapshots_dict = [
        snapshot_to_dict(snapshot, detail) for snapshot in snapshots
    ]

    data = json.dumps(dict(snapshots=snapshots_dict))

    return HttpResponse(data, status=200)
Exemple #11
0
def list_snapshots(request, detail=False):
    credentials = request.credentials
    util.assert_snapshots_enabled(request)
    since = utils.isoparse(request.GET.get('changes-since'))
    with backend.PlanktonBackend(credentials.userid) as b:
        snapshots = b.list_snapshots()
        if since:
            updated_since = lambda snap:\
                date_parse(snap["updated_at"]) >= since
            snapshots = ifilter(updated_since, snapshots)
            if not snapshots:
                return HttpResponse(status=304)

    snapshots = sorted(snapshots, key=lambda x: x['id'])
    snapshots_dict = [snapshot_to_dict(snapshot, detail)
                      for snapshot in snapshots]

    data = json.dumps(dict(snapshots=snapshots_dict))

    return HttpResponse(data, status=200)
Exemple #12
0
def create_snapshot(request):
    """Create a new Snapshot."""
    util.assert_snapshots_enabled(request)
    req = utils.get_json_body(request)
    credentials = request.credentials
    user_id = credentials.userid

    log.debug("User: %s, Action: create_snapshot, Request: %s", user_id, req)

    snap_dict = utils.get_attribute(req, "snapshot", required=True,
                                    attr_type=dict)
    volume_id = utils.get_attribute(snap_dict, "volume_id", required=True)

    metadata = utils.get_attribute(snap_dict, "metadata", required=False,
                                   attr_type=dict, default={})
    name = utils.get_attribute(snap_dict, "display_name", required=False,
                               attr_type=basestring,
                               default="Snapshot of volume '%s'" % volume_id)
    description = utils.get_attribute(snap_dict, "display_description",
                                      required=False,
                                      attr_type=basestring, default="")

    # TODO: What to do with force ?
    force = utils.get_attribute(req, "force", required=False, attr_type=bool,
                                default=False)

    snapshot = snapshots.create(user_id=user_id, volume_id=volume_id,
                                name=name,
                                description=description, metadata=metadata,
                                force=force, credentials=credentials)

    log.info("User %s created snapshot %s", user_id, snapshot["id"])

    # Render response
    data = json.dumps(dict(snapshot=snapshot_to_dict(snapshot, detail=False)))
    return HttpResponse(data, status=202)
Exemple #13
0
def get_snapshot(request, snapshot_id):
    util.assert_snapshots_enabled(request)
    snapshot = util.get_snapshot(request.user_uniq, snapshot_id)
    data = json.dumps({'snapshot': snapshot_to_dict(snapshot, detail=True)})
    return HttpResponse(data, content_type="application/json", status=200)
Exemple #14
0
def get_snapshot(request, snapshot_id):
    credentials = request.credentials
    util.assert_snapshots_enabled(request)
    snapshot = util.get_snapshot(credentials.userid, snapshot_id)
    data = json.dumps({'snapshot': snapshot_to_dict(snapshot, detail=True)})
    return HttpResponse(data, content_type="application/json", status=200)