Example #1
0
    def init(self):
        config = {}

        self.has_sentinel = has_redis_sentinels(self.config)

        if self.has_sentinel:
            sentinels = self._parse_sentinels(self.config.get('redis_sentinels'))

            if not sentinels:
                raise ValueError('kvdb.redis_sentinels must be provided')

            sentinel_master = self.config.get('redis_sentinels_master', None)
            if not sentinel_master:
                raise ValueError('kvdb.redis_sentinels_master must be provided')

            config['sentinels'] = sentinels
            config['sentinel_master'] = sentinel_master

        else:

            if self.config.get('host'):
                config['host'] = self.config.host

            if self.config.get('port'):
                config['port'] = int(self.config.port)

            if self.config.get('unix_socket_path'):
                config['unix_socket_path'] = self.config.unix_socket_path

            if self.config.get('db'):
                config['db'] = int(self.config.db)

        if self.config.get('password'):
            config['password'] = self.decrypt_func(self.config.password)

        if self.config.get('socket_timeout'):
            config['socket_timeout'] = float(self.config.socket_timeout)

        if self.config.get('connection_pool'):
            split = self.config.connection_pool.split('.')
            module, class_name = split[:-1], split[-1]
            mod = import_module(module)
            config['connection_pool'] = getattr(mod, class_name)

        if self.config.get('charset'):
            config['charset'] = self.config.charset

        if self.config.get('errors'):
            config['errors'] = self.config.errors

        self.conn_class = self._get_connection_class()

        if self.has_sentinel:
            instance = self.conn_class(config['sentinels'], config.get('password'), config.get('socket_timeout'))
            self.conn = instance.master_for(config['sentinel_master'])
        else:
            self.conn = self.conn_class(**config)

        self.lua_container.kvdb = self.conn
Example #2
0
    def init(self):
        config = {}

        self.has_sentinel = has_redis_sentinels(self.config)

        if self.has_sentinel:
            sentinels = self._parse_sentinels(self.config.get('redis_sentinels'))

            if not sentinels:
                raise ValueError('kvdb.redis_sentinels must be provided')

            sentinel_master = self.config.get('redis_sentinels_master', None)
            if not sentinel_master:
                raise ValueError('kvdb.redis_sentinels_master must be provided')

            config['sentinels'] = sentinels
            config['sentinel_master'] = sentinel_master

        else:

            if self.config.get('host'):
                config['host'] = self.config.host

            if self.config.get('port'):
                config['port'] = int(self.config.port)

            if self.config.get('unix_socket_path'):
                config['unix_socket_path'] = self.config.unix_socket_path

            if self.config.get('db'):
                config['db'] = int(self.config.db)

        if self.config.get('password'):
            config['password'] = self.decrypt_func(self.config.password)

        if self.config.get('socket_timeout'):
            config['socket_timeout'] = float(self.config.socket_timeout)

        if self.config.get('connection_pool'):
            split = self.config.connection_pool.split('.')
            module, class_name = split[:-1], split[-1]
            mod = import_module(module)
            config['connection_pool'] = getattr(mod, class_name)

        if self.config.get('charset'):
            config['charset'] = self.config.charset

        if self.config.get('errors'):
            config['errors'] = self.config.errors

        self.conn_class = self._get_connection_class()

        if self.has_sentinel:
            instance = self.conn_class(config['sentinels'], config.get('password'), config.get('socket_timeout'))
            self.conn = instance.master_for(config['sentinel_master'])
        else:
            self.conn = self.conn_class(**config)

        self.lua_container.kvdb = self.conn
Example #3
0
    def handle(self):
        config = self.server.fs_server_config.kvdb
        sleep_time = float(config.log_connection_info_sleep_time)
        has_sentinels = has_redis_sentinels(config)

        if kvdb_logger.isEnabledFor(DEBUG):
            while True:
                if has_sentinels:
                    try:
                        master_address = self.kvdb.conn.connection_pool.connection_kwargs['connection_pool'].get_master_address()
                        kvdb_logger.debug(
                            'Uses sentinels: `%s %r`, master: `%r`', has_sentinels, config.redis_sentinels, master_address)
                    except MasterNotFoundError, e:
                        self.logger.warn(format_exc(e))
                        kvdb_logger.warn(format_exc(e))
                else:
                    kvdb_logger.debug(
                        'Uses sentinels: `%s`, conn:`%r`', has_sentinels, self.kvdb.conn)
                sleep(sleep_time)
Example #4
0
    def handle(self):
        config = self.server.fs_server_config.kvdb
        sleep_time = float(config.log_connection_info_sleep_time)
        has_sentinels = has_redis_sentinels(config)

        if kvdb_logger.isEnabledFor(DEBUG):
            while True:
                if has_sentinels:
                    try:
                        master_address = self.kvdb.conn.connection_pool.connection_kwargs['connection_pool'].get_master_address()
                        kvdb_logger.debug(
                            'Uses sentinels: `%s %r`, master: `%r`', has_sentinels, config.redis_sentinels, master_address)
                    except MasterNotFoundError, e:
                        self.logger.warn(format_exc(e))
                        kvdb_logger.warn(format_exc(e))
                else:
                    kvdb_logger.debug(
                        'Uses sentinels: `%s`, conn:`%r`', has_sentinels, self.kvdb.conn)
                sleep(sleep_time)
Example #5
0
    def init(self):
        config = {}

        self.has_sentinel = has_redis_sentinels(self.config)

        if self.has_sentinel:
            sentinels = self._parse_sentinels(
                self.config.get('redis_sentinels'))

            if not sentinels:
                raise ValueError('kvdb.redis_sentinels must be provided')

            sentinel_master = self.config.get('redis_sentinels_master', None)
            if not sentinel_master:
                raise ValueError(
                    'kvdb.redis_sentinels_master must be provided')

            config['sentinels'] = sentinels
            config['sentinel_master'] = sentinel_master

        else:

            if self.config.get('host'):
                config['host'] = self.config.host

            if self.config.get('port'):
                config['port'] = int(self.config.port)

            if self.config.get('unix_socket_path'):
                config['unix_socket_path'] = self.config.unix_socket_path

            if self.config.get('db'):
                config['db'] = int(self.config.db)

        if self.config.get('password'):
            # Heuristics - gA is a prefix of encrypted secrets so there is a chance
            # we need to decrypt it. If the decryption fails, this is fine, we need
            # assume in such a case that it was an actual password starting with this prefix.
            if self.config.password.startswith('gA'):
                try:
                    config['password'] = self.decrypt_func(
                        self.config.password)
                except InvalidToken:
                    config['password'] = self.config.password
            else:
                config['password'] = self.config.password

        if self.config.get('socket_timeout'):
            config['socket_timeout'] = float(self.config.socket_timeout)

        if self.config.get('connection_pool'):
            split = self.config.connection_pool.split('.')
            module, class_name = split[:-1], split[-1]
            mod = import_module(module)
            config['connection_pool'] = getattr(mod, class_name)

        if self.config.get('charset'):
            config['charset'] = self.config.charset

        if self.config.get('errors'):
            config['errors'] = self.config.errors

        self.conn_class = self._get_connection_class()

        if self.has_sentinel:
            instance = self.conn_class(config['sentinels'],
                                       config.get('password'),
                                       config.get('socket_timeout'),
                                       charset='utf-8',
                                       decode_responses=True)
            self.conn = instance.master_for(config['sentinel_master'])
        else:
            self.conn = self.conn_class(charset='utf-8',
                                        decode_responses=True,
                                        **config)

        self.lua_container.kvdb = self.conn