def _dispatch_search_instance(self, request, data, request_id): options = self._get_options(request) filter_obj = get_filter_obj(data.get("filter"), ["parent", "keyword"]) if filter_obj.keyword is None or len(filter_obj.keyword) < 2: raise KeywordTooShortException( "the length of keyword should be greater than or equals to 2") page_obj = get_page_obj(data.get("page")) provider = self._provider[data["type"]] pre_process = getattr(provider, "pre_search_instance", None) if pre_process and callable(pre_process): pre_process(filter_obj, page_obj, **options) search_function = getattr(provider, "search_instance", None) if not (search_function and callable(search_function)): return fail_response( 404, "resource type: {} not support search instance".format( data["type"]), request_id) result = provider.search_instance(filter_obj, page_obj, **options) return success_response(result.to_dict(), request_id)
def test_gen_page_obj(): page_data = {"limit": 1, "offset": 2} page_obj = utils.get_page_obj(page_data) assert page_obj.limit == 1 assert page_obj.offset == 2 page_data = { "limit": 1, } page_obj = utils.get_page_obj(page_data) assert page_obj.limit == 1 assert page_obj.offset == 0 # test slice property page_data = {"limit": 4, "offset": 0} page_obj = utils.get_page_obj(page_data) assert page_obj.slice_from == 0 assert page_obj.slice_to == 4 page_data = {"limit": 4, "offset": 3} page_obj = utils.get_page_obj(page_data) assert page_obj.slice_from == 3 assert page_obj.slice_to == 7 page_data = {"limit": 0, "offset": 0} page_obj = utils.get_page_obj(page_data) assert page_obj.slice_from == 0 assert page_obj.slice_to is None
def _dispatch_list_instance_by_policy(self, request, data, request_id): options = self._get_options(request) filter_obj = get_filter_obj(data.get("filter"), ["expression"]) page_obj = get_page_obj(data.get("page")) provider = self._provider[data["type"]] pre_process = getattr(provider, "pre_list_instance_by_policy", None) if pre_process and callable(pre_process): pre_process(filter_obj, page_obj, **options) result = provider.list_instance_by_policy(filter_obj, page_obj, **options) return success_response(result.to_list(), request_id)
def _dispatch_list_instance(self, request, data, request_id): options = self._get_options(request) filter_obj = get_filter_obj( data.get("filter"), ["parent", "search", "resource_type_chain"]) page_obj = get_page_obj(data.get("page")) provider = self._provider[data["type"]] pre_process = getattr(provider, "pre_list_instance", None) if pre_process and callable(pre_process): pre_process(filter_obj, page_obj, **options) result = provider.list_instance(filter_obj, page_obj, **options) return success_response(result.to_dict(), request_id)
def _dispatch_list_attr_value(self, request, data, request_id): options = self._get_options(request) filter_obj = get_filter_obj(data.get("filter"), ["attr", "keyword", "ids"]) page_obj = get_page_obj(data.get("page")) provider = self._provider[data["type"]] pre_process = getattr(provider, "pre_list_attr_value", None) if pre_process and callable(pre_process): pre_process(filter_obj, page_obj, **options) result = provider.list_attr_value(filter_obj, page_obj, **options) return success_response(result.to_dict(), request_id)
def _parse_filter_and_page(self, data: Dict) -> (FancyDict, Page): filter_obj = get_filter_obj( data["filter"], ["ids", "parent", "search", "resource_type_chain", "keyword"]) page_obj = get_page_obj(data.get("page")) return filter_obj, page_obj
def _parse_filter_and_page(self, data): filter_obj = get_filter_obj( data["filter"], ["ids", "parent", "search", "resource_type_chain"]) page_obj = get_page_obj(data.get("page")) return filter_obj, page_obj