PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/memcached.py |
""" Utilities for working with memcache :depends: - python-memcached This library sets up a connection object for memcache, using the configuration passed into the get_conn() function. Normally, this is __opts__. Optionally, a profile or specific host and port may be passed in. If neither profile nor host and port are provided, the defaults of '`127.0.0.`` and ``11211`` are used. The following configurations are both valid: .. code-block:: yaml # No profile name memcached.host: 127.0.0.1 memcached.port: 11211 # One or more profiles defined my_memcached_config: memcached.host: 127.0.0.1 memcached.port: 11211 Once configured, the get_conn() function is passed a set of opts, and, optionally, the name of a profile to be used. .. code-block:: python import salt.utils.memcached_utils.py conn = salt.utils.memcached_utils.get_conn(__opts__, profile='my_memcached_config') It should be noted that some usages of memcached may require a profile to be specified, rather than top-level configurations. This being the case, it is better to always use a named configuration profile, as shown above. """ import logging from salt.exceptions import CommandExecutionError, SaltInvocationError try: import memcache HAS_LIBS = True except ImportError: HAS_LIBS = False DEFAULT_HOST = "127.0.0.1" DEFAULT_PORT = 11211 DEFAULT_TIME = 0 DEFAULT_MIN_COMPRESS_LEN = 0 # Set up logging log = logging.getLogger(__name__) # Don't shadow built-ins __func_alias__ = {"set_": "set"} # Although utils are often directly imported, it is also possible # to use the loader. def __virtual__(): """ Only load if python-memcached is installed """ return True if HAS_LIBS else False def get_conn(opts, profile=None, host=None, port=None): """ Return a conn object for accessing memcached """ if not (host and port): opts_pillar = opts.get("pillar", {}) opts_master = opts_pillar.get("master", {}) opts_merged = {} opts_merged.update(opts_master) opts_merged.update(opts_pillar) opts_merged.update(opts) if profile: conf = opts_merged.get(profile, {}) else: conf = opts_merged host = conf.get("memcached.host", DEFAULT_HOST) port = conf.get("memcached.port", DEFAULT_PORT) if not str(port).isdigit(): raise SaltInvocationError("port must be an integer") if HAS_LIBS: return memcache.Client([f"{host}:{port}"]) else: raise CommandExecutionError( "(unable to import memcache, module most likely not installed)" ) def _check_stats(conn): """ Helper function to check the stats data passed into it, and raise an exception if none are returned. Otherwise, the stats are returned. """ stats = conn.get_stats() if not stats: raise CommandExecutionError("memcached server is down or does not exist") return stats def set_( conn, key, value, time=DEFAULT_TIME, min_compress_len=DEFAULT_MIN_COMPRESS_LEN ): """ Set a key on the memcached server, overwriting the value if it exists. """ if not isinstance(time, int): raise SaltInvocationError("'time' must be an integer") if not isinstance(min_compress_len, int): raise SaltInvocationError("'min_compress_len' must be an integer") _check_stats(conn) return conn.set(key, value, time, min_compress_len) def get(conn, key): """ Retrieve value for a key """ _check_stats(conn) return conn.get(key)