def create_metadata_item(request, image_id, key): # Normal Response Code: 201 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # buildInProgress (409), # badMediaType(415), # overLimit (413) req = utils.get_json_body(request) log.info('create_image_metadata_item %s %s %s', image_id, key, req) try: metadict = req['meta'] assert isinstance(metadict, dict) assert len(metadict) == 1 assert key in metadict except (KeyError, AssertionError): raise faults.BadRequest('Malformed request.') val = metadict[key] with backend.PlanktonBackend(request.user_uniq) as b: image = b.get_image(image_id) properties = image['properties'] properties[key] = val b.update_metadata(image_id, dict(properties=properties)) return util.render_meta(request, {key: val}, status=201)
def create_metadata_item(request, server_id, key): # Normal Response Code: 201 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # buildInProgress (409), # badMediaType(415), # overLimit (413) req = utils.get_request_dict(request) log.info('create_server_metadata_item %s %s %s', server_id, key, req) vm = util.get_vm(server_id, request.user_uniq, non_suspended=True) try: metadict = req['meta'] assert isinstance(metadict, dict) assert len(metadict) == 1 assert key in metadict except (KeyError, AssertionError): raise faults.BadRequest("Malformed request") meta, created = VirtualMachineMetadata.objects.get_or_create( meta_key=key, vm=vm) meta.meta_value = metadict[key] meta.save() vm.save() d = {meta.meta_key: meta.meta_value} return util.render_meta(request, d, status=201)
def create_metadata_item(request, image_id, key): # Normal Response Code: 201 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # buildInProgress (409), # badMediaType(415), # overLimit (413) req = utils.get_json_body(request) log.info('create_image_metadata_item %s %s %s', image_id, key, req) try: metadict = req['meta'] assert isinstance(metadict, dict) assert len(metadict) == 1 assert key in metadict except (KeyError, AssertionError): raise faults.BadRequest('Malformed request.') val = metadict[key] with backend.PlanktonBackend(request.credentials.userid) as b: image = b.get_image(image_id) properties = image['properties'] properties[key] = val b.update_metadata(image_id, dict(properties=properties)) return util.render_meta(request, {key: val}, status=201)
def create_metadata_item(request, image_id, key): # Normal Response Code: 201 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # buildInProgress (409), # badMediaType(415), # overLimit (413) req = utils.get_request_dict(request) log.info("create_image_metadata_item %s %s %s", image_id, key, req) try: metadict = req["meta"] assert isinstance(metadict, dict) assert len(metadict) == 1 assert key in metadict except (KeyError, AssertionError): raise faults.BadRequest("Malformed request.") val = metadict[key] with image_backend(request.user_uniq) as backend: image = backend.get_image(image_id) properties = image["properties"] properties[key] = val backend.update_metadata(image_id, dict(properties=properties)) return util.render_meta(request, {key: val}, status=201)
def get_metadata_item(request, server_id, key): # Normal Response Codes: 200, 203 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # overLimit (413) vm = util.get_vm(server_id, request.user_uniq, request.user_projects) meta = util.get_vm_meta(vm, key) d = {meta.meta_key: meta.meta_value} return util.render_meta(request, d, status=200)
def create_metadata_item(request, server_id, key): # Normal Response Code: 201 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # buildInProgress (409), # badMediaType(415), # overLimit (413) req = utils.get_json_body(request) credentials = request.credentials userid = credentials.userid log.debug("User: %s, VM: %s, Action: create_metadata, Request: %s", userid, server_id, req) vm = util.get_vm(server_id, credentials, non_suspended=True, non_deleted=True) try: metadict = req['meta'] assert isinstance(metadict, dict) assert len(metadict) == 1 assert key in metadict except (KeyError, AssertionError): raise faults.BadRequest("Malformed request") value = metadict[key] # Check key, value length if len(key) > VirtualMachineMetadata.KEY_LENGTH: raise faults.BadRequest("Malformed Request. Metadata key is too long") if len(value) > VirtualMachineMetadata.VALUE_LENGTH: raise faults.BadRequest("Malformed Request. Metadata value is too" " long") # Check number of metadata items if vm.metadata.exclude(meta_key=key).count() == \ settings.CYCLADES_VM_MAX_METADATA: raise faults.BadRequest("Virtual Machines cannot have more than %s" " metadata items" % settings.CYCLADES_VM_MAX_METADATA) meta, created = VirtualMachineMetadata.objects.get_or_create(meta_key=key, vm=vm) meta.meta_value = value meta.save() vm.save() d = {meta.meta_key: meta.meta_value} return util.render_meta(request, d, status=201)
def get_metadata_item(request, server_id, key): # Normal Response Codes: 200, 203 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # overLimit (413) vm = util.get_vm(server_id, request.credentials) meta = util.get_vm_meta(vm, key) d = {meta.meta_key: meta.meta_value} return util.render_meta(request, d, status=200)
def create_metadata_item(request, server_id, key): # Normal Response Code: 201 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # buildInProgress (409), # badMediaType(415), # overLimit (413) req = utils.get_json_body(request) credentials = request.credentials userid = credentials.userid log.debug("User: %s, VM: %s, Action: create_metadata, Request: %s", userid, server_id, req) vm = util.get_vm(server_id, credentials, non_suspended=True, non_deleted=True) try: metadict = req['meta'] assert isinstance(metadict, dict) assert len(metadict) == 1 assert key in metadict except (KeyError, AssertionError): raise faults.BadRequest("Malformed request") value = metadict[key] # Check key, value length if len(key) > VirtualMachineMetadata.KEY_LENGTH: raise faults.BadRequest("Malformed Request. Metadata key is too long") if len(value) > VirtualMachineMetadata.VALUE_LENGTH: raise faults.BadRequest("Malformed Request. Metadata value is too" " long") # Check number of metadata items if vm.metadata.exclude(meta_key=key).count() == \ settings.CYCLADES_VM_MAX_METADATA: raise faults.BadRequest("Virtual Machines cannot have more than %s" " metadata items" % settings.CYCLADES_VM_MAX_METADATA) meta, created = VirtualMachineMetadata.objects.get_or_create( meta_key=key, vm=vm) meta.meta_value = value meta.save() vm.save() d = {meta.meta_key: meta.meta_value} return util.render_meta(request, d, status=201)
def get_metadata_item(request, image_id, key): # Normal Response Codes: 200, 203 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # overLimit (413) log.debug('get_image_metadata_item %s %s', image_id, key) with backend.PlanktonBackend(request.user_uniq) as b: image = b.get_image(image_id) val = image['properties'].get(key) if val is None: raise faults.ItemNotFound('Metadata key not found.') return util.render_meta(request, {key: val}, status=200)
def get_metadata_item(request, image_id, key): # Normal Response Codes: 200, 203 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # overLimit (413) log.debug("get_image_metadata_item %s %s", image_id, key) with image_backend(request.user_uniq) as backend: image = backend.get_image(image_id) val = image["properties"].get(key) if val is None: raise faults.ItemNotFound("Metadata key not found.") return util.render_meta(request, {key: val}, status=200)
def get_metadata_item(request, image_id, key): # Normal Response Codes: 200, 203 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # itemNotFound (404), # badRequest (400), # overLimit (413) log.debug('get_image_metadata_item %s %s', image_id, key) with backend.PlanktonBackend(request.credentials.userid) as b: image = b.get_image(image_id) val = image['properties'].get(key) if val is None: raise faults.ItemNotFound('Metadata key not found.') return util.render_meta(request, {key: val}, status=200)