コード例 #1
0
ファイル: entries.py プロジェクト: rahulrrixe/libcloud.rest
 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
ファイル: __init__.py プロジェクト: islamgulov/libcloud.rest
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)
コード例 #7
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)
コード例 #8
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)
コード例 #9
0
ファイル: entries.py プロジェクト: rahulrrixe/libcloud.rest
 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
ファイル: storage.py プロジェクト: vanzhiganov/libcloud.rest
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)
コード例 #15
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)
コード例 #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)
コード例 #18
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))
コード例 #19
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))
コード例 #20
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))
コード例 #21
0
ファイル: storage.py プロジェクト: reidwooten99/libcloud.rest
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
ファイル: storage.py プロジェクト: reidwooten99/libcloud.rest
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
ファイル: storage.py プロジェクト: vanzhiganov/libcloud.rest
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
ファイル: storage.py プロジェクト: vanzhiganov/libcloud.rest
def list_objects(request):
    data = {'container_name': request.args['cont']}
    return invoke_method('list_container_objects',
                         request,
                         data=json.dumps(data))
コード例 #27
0
ファイル: storage.py プロジェクト: vanzhiganov/libcloud.rest
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))
コード例 #31
0
def get_balancer(request):
    data = json.dumps({'balancer_id': request.args['balancer_id']})
    return invoke_method('get_balancer', request, data=data)
コード例 #32
0
ファイル: storage.py プロジェクト: reidwooten99/libcloud.rest
def list_objects(request):
    data = {"container_name": request.args["cont"]}
    return invoke_method("list_container_objects", request, data=json.dumps(data))
コード例 #33
0
ファイル: storage.py プロジェクト: reidwooten99/libcloud.rest
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
ファイル: __init__.py プロジェクト: islamgulov/libcloud.rest
            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
ファイル: storage.py プロジェクト: reidwooten99/libcloud.rest
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
ファイル: __init__.py プロジェクト: islamgulov/libcloud.rest
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
ファイル: entries.py プロジェクト: rahulrrixe/libcloud.rest
 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
ファイル: compute.py プロジェクト: vanzhiganov/libcloud.rest
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
ファイル: storage.py プロジェクト: vanzhiganov/libcloud.rest
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))