diff --git a/setup.cfg b/setup.cfg index e8220b5b..37ac9080 100644 --- a/setup.cfg +++ b/setup.cfg @@ -7,7 +7,7 @@ package_dir = packages = find: python_requires = >=3.6 install_requires = - momento-wire-types==0.6.0 + momento-wire-types==0.7.0 build setuptools pyjwt diff --git a/src/momento/_cache_service_errors_converter.py b/src/momento/_cache_service_errors_converter.py index 0b0d80a4..fd964e13 100644 --- a/src/momento/_cache_service_errors_converter.py +++ b/src/momento/_cache_service_errors_converter.py @@ -9,12 +9,8 @@ grpc.StatusCode.PERMISSION_DENIED: errors.PermissionError, } -# Till the time MR2 stops returning errors in Enums __ecache_result_to_error = { - cache_client_types.Bad_Request: errors.CacheValueError, - cache_client_types.Internal_Server_Error: errors.InternalServerError, - cache_client_types.Service_Unavailable: errors.InternalServerError, - cache_client_types.Unauthorized: errors.PermissionError, + cache_client_types.Invalid: errors.InternalServerError, } diff --git a/src/momento/cache_operation_responses.py b/src/momento/cache_operation_responses.py index 35794eb1..abf35c3f 100644 --- a/src/momento/cache_operation_responses.py +++ b/src/momento/cache_operation_responses.py @@ -58,3 +58,25 @@ def __init__(self, grpc_create_cache_response): class DeleteCacheResponse: def __init__(self, grpc_delete_cache_response): pass + + +class ListCachesResponse: + def __init__(self, grpc_list_cache_response): + self._next_token = grpc_list_cache_response.next_token if grpc_list_cache_response.next_token != '' else None + self._caches = [] + for cache in grpc_list_cache_response.cache: + self._caches.append(CacheInfo(cache)) + + def next_token(self): + return self._next_token + + def caches(self): + return self._caches + + +class CacheInfo: + def __init__(self, grpc_listed_caches): + self._name = grpc_listed_caches.cache_name + + def name(self): + return self._name diff --git a/src/momento/momento.py b/src/momento/momento.py index d1b18c96..c8521135 100644 --- a/src/momento/momento.py +++ b/src/momento/momento.py @@ -1,7 +1,7 @@ import grpc import momento_wire_types.controlclient_pb2_grpc as control_client -from momento_wire_types.controlclient_pb2 import CreateCacheRequest +from momento_wire_types.controlclient_pb2 import CreateCacheRequest, ListCachesRequest from momento_wire_types.controlclient_pb2 import DeleteCacheRequest from . import _cache_service_errors_converter from . import errors @@ -10,6 +10,7 @@ from . import _momento_endpoint_resolver from .cache_operation_responses import CreateCacheResponse from .cache_operation_responses import DeleteCacheResponse +from .cache_operation_responses import ListCachesResponse class Momento: @@ -61,6 +62,14 @@ def get_cache(self, cache_name, ttl_seconds, create_if_absent=False): self.create_cache(cache_name) return cache._connect() + def list_caches(self, next_token=None): + try: + list_caches_request = ListCachesRequest() + list_caches_request.next_token = next_token if next_token is not None else '' + return ListCachesResponse(self._client.ListCaches(list_caches_request)) + except Exception as e: + raise _cache_service_errors_converter.convert(e) + def init(auth_token): return Momento(auth_token)