示例#1
0
 def to_json(self, obj):
     try:
         if not self.name:
             return json.dumps(obj)
         data = json.dumps({self.name: obj})
         json_data = self._get_json(data)
         self._validate(json_data)
         return data
     except (MalformedJSONError, ValidationError), e:
         raise ValueError('Can not represent object as json %s' % (str(e)))
示例#2
0
 def to_json(self, obj):
     try:
         if not self.name:
             return json.dumps(obj)
         data = json.dumps({self.name: obj})
         json_data = self._get_json(data)
         self._validate(json_data)
         return data
     except (MalformedJSONError, ValidationError), e:
         raise ValueError('Can not represent object as json %s' % (str(e)))
示例#3
0
def index(_):
    response = {
        'GitHub page': 'https://github.com/islamgulov/libcloud.rest',
        'libcloud_version': libcloud.__version__,
        'api_version': versions[libcloud.__version__]
    }
    return Response(json.dumps(response))
示例#4
0
def index(_):
    response = {
        'GitHub page': 'https://github.com/islamgulov/libcloud.rest',
        'libcloud_version': libcloud.__version__,
        'api_version': versions[libcloud.__version__]
    }
    return Response(json.dumps(response))
示例#5
0
 def from_json(self, data, driver):
     json_data = self._get_json(data)
     if not self.name in json_data:
         if hasattr(self, 'default'):
             return self.default
         raise MissingArguments(arguments=[self.name])
     data_list = json_data[self.name]
     return [self.object_entry.from_json(json.dumps(data), driver)
             for data in data_list]
示例#6
0
def delete_record(request):
    json_data = {
        'zone_id': request.args['zone_id'],
        'record_id': request.args['record_id']
    }
    return invoke_method('delete_record',
                         request,
                         data=json.dumps(json_data),
                         status_code=httplib.ACCEPTED)
def delete_member(request):
    """
    @return:This operation does not return a response body.
    """
    json_data = {'loadbalancer_id': request.args['lb_id'],
                 'member_id': request.args['member_id']}
    return invoke_method('balancer_detach_member', request,
                         data=json.dumps(json_data),
                         status_code=httplib.ACCEPTED)
def destroy_balancer(request):
    """
    Get balancer id from params and invoke destroy_balancer driver method.
    @return: Empty response body
    """
    json_data = {'loadbalancer_id': request.args['loadbalancer_id']}
    return invoke_method('destroy_balancer', request,
                         data=json.dumps(json_data),
                         status_code=httplib.ACCEPTED)
示例#9
0
 def from_json(self, data, driver):
     json_data = self._get_json(data)
     if not self.name in json_data:
         if hasattr(self, 'default'):
             return self.default
         raise MissingArguments(arguments=[self.name])
     data_list = json_data[self.name]
     return [self.object_entry.from_json(json.dumps(data), driver)
             for data in data_list]
示例#10
0
def get_object(request):
    data = {
        'container_name': request.args['container'],
        'object_name': request.args['object']
    }
    return invoke_method('download_object_as_stream',
                         request,
                         data=json.dumps(data),
                         file_result=True)
示例#11
0
def destroy_balancer(request):
    """
    Get balancer id from params and invoke destroy_balancer driver method.
    @return: Empty response body
    """
    json_data = {'loadbalancer_id': request.args['loadbalancer_id']}
    return invoke_method('destroy_balancer',
                         request,
                         data=json.dumps(json_data),
                         status_code=httplib.ACCEPTED)
示例#12
0
def create_record(request):
    json_data = json.loads(request.data)
    json_data['zone_id'] = request.args['zone_id']
    response = invoke_method('create_record',
                             request, data=json.dumps(json_data),
                             status_code=httplib.ACCEPTED)
    record_id = json.loads(response.data)['id']
    response.autocorrect_location_header = False
    response.headers.add_header('Location', record_id)
    response.status_code = httplib.CREATED
    return response
示例#13
0
def create_record(request):
    json_data = json.loads(request.data)
    json_data['zone_id'] = request.args['zone_id']
    response = invoke_method('create_record',
                             request,
                             data=json.dumps(json_data),
                             status_code=httplib.ACCEPTED)
    record_id = json.loads(response.data)['id']
    response.autocorrect_location_header = False
    response.headers.add_header('Location', record_id)
    response.status_code = httplib.CREATED
    return response
示例#14
0
def delete_member(request):
    """
    @return:This operation does not return a response body.
    """
    json_data = {
        'loadbalancer_id': request.args['lb_id'],
        'member_id': request.args['member_id']
    }
    return invoke_method('balancer_detach_member',
                         request,
                         data=json.dumps(json_data),
                         status_code=httplib.ACCEPTED)
 def preprocess_request(self, request):
     request_header_validator = valid.DictValidator({
         'Content-Length': valid.IntegerValidator(max=MAX_BODY_LENGTH),
         'Content-Type': valid.ConstValidator('application/json'),
     })
     if request.method in ['POST', 'PUT'] and\
             not re.match(self.storage_url, request.path):
         request_header_validator(dict(request.headers))
         #TODO: FIXME GK
     if request.method == 'GET':
         data = url_decode(request.query_string, cls=dict)
         request.data = json.dumps(data)
示例#16
0
 def preprocess_request(self, request):
     request_header_validator = valid.DictValidator({
         'Content-Length':
         valid.IntegerValidator(max=MAX_BODY_LENGTH),
         'Content-Type':
         valid.ConstValidator('application/json'),
     })
     if request.method in ['POST', 'PUT'] and\
             not re.match(self.storage_url, request.path):
         request_header_validator(dict(request.headers))
         #TODO: FIXME GK
     if request.method == 'GET':
         data = url_decode(request.query_string, cls=dict)
         request.data = json.dumps(data)
示例#17
0
def get_driver_instance(Driver, kwargs):
    """

    @param Driver:
    @param kwargs:
    @return:
    """
    try:
        json_data = json.dumps(kwargs)
        driver_method = DriverMethod(Driver, '__init__')
        return driver_method.invoke(json_data)
    except MissingArguments, error:
        str_repr = ', '.join([ARGS_TO_XHEADERS_DICT.get(arg, arg)
                              for arg in error.arguments])
        raise MissingHeadersError(headers=str_repr)
def update_balancer(request):
    json_data = json.loads(request.data)
    json_data['loadbalancer_id'] = request.args['loadbalancer_id']
    return invoke_method('update_balancer', request,
                         data=json.dumps(json_data))
def list_members(request):
    json_data = json.loads(request.data)
    json_data['loadbalancer_id'] = request.args['lb_id']
    return invoke_method('balancer_list_members', request,
                         data=json.dumps(json_data))
def create_member(request):
    json_data = json.loads(request.data)
    json_data['loadbalancer_id'] = request.args['lb_id']
    return invoke_method('balancer_attach_member', request,
                         data=json.dumps(json_data))
示例#21
0
def delete_container(request):
    data = {"container_name": request.args["container"]}
    return invoke_method("delete_container", request, data=json.dumps(data), status_code=httplib.NO_CONTENT)
示例#22
0
def get_container(request):
    data = {"container_name": request.args["container"]}
    return invoke_method("get_container", request, data=json.dumps(data))
示例#23
0
def list_recods(request):
    json_data = {'zone_id': request.args['zone_id']}
    return invoke_method('list_records', request, data=json.dumps(json_data))
示例#24
0
def create_member(request):
    json_data = json.loads(request.data)
    json_data['loadbalancer_id'] = request.args['lb_id']
    return invoke_method('balancer_attach_member',
                         request,
                         data=json.dumps(json_data))
示例#25
0
def delete_container(request):
    data = {'container_name': request.args['container']}
    return invoke_method('delete_container',
                         request,
                         data=json.dumps(data),
                         status_code=httplib.NO_CONTENT)
示例#26
0
def list_objects(request):
    data = {'container_name': request.args['cont']}
    return invoke_method('list_container_objects',
                         request,
                         data=json.dumps(data))
示例#27
0
def get_container(request):
    data = {'container_name': request.args['container']}
    return invoke_method('get_container', request, data=json.dumps(data))
示例#28
0
def delete_zone(request):
    json_data = {'zone_id': request.args['zone_id']}
    return invoke_method('delete_zone', request, data=json.dumps(json_data),
                         status_code=httplib.ACCEPTED)
示例#29
0
 def to_json(self, obj_list):
     data = [json.loads(self.object_entry.to_json(obj)) for obj in obj_list]
     return json.dumps(data)
示例#30
0
def get_record(request):
    json_data = {'zone_id': request.args['zone_id'],
                 'record_id': request.args['record_id']}
    return invoke_method('get_record', request, data=json.dumps(json_data))
def get_balancer(request):
    data = json.dumps({'balancer_id': request.args['balancer_id']})
    return invoke_method('get_balancer', request, data=data)
示例#32
0
def list_objects(request):
    data = {"container_name": request.args["cont"]}
    return invoke_method("list_container_objects", request, data=json.dumps(data))
示例#33
0
def delete_object(request):
    data = {"container_name": request.args["container"], "object_name": request.args["object"]}
    return invoke_method("delete_object", request, data=json.dumps(data))
示例#34
0
def list_members(request):
    json_data = json.loads(request.data)
    json_data['loadbalancer_id'] = request.args['lb_id']
    return invoke_method('balancer_list_members',
                         request,
                         data=json.dumps(json_data))
示例#35
0
def list_recods(request):
    json_data = {'zone_id': request.args['zone_id']}
    return invoke_method('list_records', request, data=json.dumps(json_data))
示例#36
0
def destroy_node(request):
    json_data = {'node_id': request.args['node_id']}
    return invoke_method('destroy_node', request, data=json.dumps(json_data),
                         status_code=httplib.ACCEPTED)
示例#37
0
def get_record(request):
    json_data = {
        'zone_id': request.args['zone_id'],
        'record_id': request.args['record_id']
    }
    return invoke_method('get_record', request, data=json.dumps(json_data))
示例#38
0
            continue
        try:
            driver_method = DriverMethod(driver, method_name)
        except MethodParsingException, e:
            logger.info(str(e) + ' ' + driver.name + '.' + method_name)
            continue
        supported_methods[method_name] = driver_method.get_description()
    init_description = DriverMethod(driver, '__init__').get_description()
    init_arguments = init_description['arguments']
    for arg in init_arguments[:]:
        arg['name'] = ARGS_TO_XHEADERS_DICT[arg['name']]
    result = {'name': driver.name,
              'website': driver.website,
              'X-headers': init_arguments,
              'supported_methods': supported_methods}
    return JsonResponse(json.dumps(result))


class ServiceHandler(object):
    def __init__(self, url_prefix):
        self.url_prefix = url_prefix
        self._endpoint_handlers = []

    def add_handler(self, path, handler, methods=None):
        if methods is None:
            methods = ['GET']
        rule = Rule(path, endpoint=handler, methods=methods)
        self._endpoint_handlers.append(rule)

    def add_handlers(self, handlers):
        for handler in handlers:
示例#39
0
def get_object(request):
    data = {"container_name": request.args["container"], "object_name": request.args["object"]}
    return invoke_method("download_object_as_stream", request, data=json.dumps(data), file_result=True)
示例#40
0
def list_providers(providers, _):
    providers_info = get_providers_info(providers)
    return JsonResponse(json.dumps(providers_info))
示例#41
0
def update_record(request):
    json_data = json.loads(request.data)
    json_data['zone_id'] = request.args['zone_id']
    json_data['record_id'] = request.args['record_id']
    return invoke_method('update_record', request, data=json.dumps(json_data))
示例#42
0
 def to_json(self, obj_list):
     data = [json.loads(self.object_entry.to_json(obj)) for obj in obj_list]
     return json.dumps(data)
示例#43
0
def get_balancer(request):
    data = json.dumps({'balancer_id': request.args['balancer_id']})
    return invoke_method('get_balancer', request, data=data)
示例#44
0
def destroy_node(request):
    json_data = {'node_id': request.args['node_id']}
    return invoke_method('destroy_node',
                         request,
                         data=json.dumps(json_data),
                         status_code=httplib.ACCEPTED)
示例#45
0
def update_balancer(request):
    json_data = json.loads(request.data)
    json_data['loadbalancer_id'] = request.args['loadbalancer_id']
    return invoke_method('update_balancer',
                         request,
                         data=json.dumps(json_data))
示例#46
0
            driver_method = DriverMethod(driver, method_name)
        except MethodParsingException, e:
            logger.info(str(e) + ' ' + driver.name + '.' + method_name)
            continue
        supported_methods[method_name] = driver_method.get_description()
    init_description = DriverMethod(driver, '__init__').get_description()
    init_arguments = init_description['arguments']
    for arg in init_arguments[:]:
        arg['name'] = ARGS_TO_XHEADERS_DICT[arg['name']]
    result = {
        'name': driver.name,
        'website': driver.website,
        'X-headers': init_arguments,
        'supported_methods': supported_methods
    }
    return JsonResponse(json.dumps(result))


class ServiceHandler(object):
    def __init__(self, url_prefix):
        self.url_prefix = url_prefix
        self._endpoint_handlers = []

    def add_handler(self, path, handler, methods=None):
        if methods is None:
            methods = ['GET']
        rule = Rule(path, endpoint=handler, methods=methods)
        self._endpoint_handlers.append(rule)

    def add_handlers(self, handlers):
        for handler in handlers:
示例#47
0
def update_record(request):
    json_data = json.loads(request.data)
    json_data['zone_id'] = request.args['zone_id']
    json_data['record_id'] = request.args['record_id']
    return invoke_method('update_record', request, data=json.dumps(json_data))
示例#48
0
def list_providers(providers, _):
    providers_info = get_providers_info(providers)
    return JsonResponse(json.dumps(providers_info))
示例#49
0
def get_object_metadata(request):
    data = {
        'container_name': request.args['container'],
        'object_name': request.args['object']
    }
    return invoke_method('get_object', request, data=json.dumps(data))