def test_does_not_overwrite(self): host = {'port': 6379} defaults = {'port': 9000} results = apply_defaults(host, defaults) self.assertEquals(results, { 'port': 6379, })
def test_does_not_overwrite(self): host = {'port': 6379} defaults = {'port': 9000} results = apply_defaults(host, defaults) self.assertEqual(results, { 'port': 6379, })
def create_cluster(settings): """ Creates a new Nydus cluster from the given settings. :param settings: Dictionary of the cluster settings. :returns: Configured instance of ``nydus.db.base.Cluster``. >>> redis = create_cluster({ >>> 'backend': 'nydus.db.backends.redis.Redis', >>> 'router': 'nydus.db.routers.redis.PartitionRouter', >>> 'defaults': { >>> 'host': 'localhost', >>> 'port': 6379, >>> }, >>> 'hosts': { >>> 0: {'db': 0}, >>> 1: {'db': 1}, >>> 2: {'db': 2}, >>> } >>> }) """ # Pull in our cluster cluster = settings.get('cluster') if not cluster: Cluster = BaseCluster elif isinstance(cluster, basestring): Cluster = import_string(cluster) else: Cluster = cluster # Pull in our client backend = settings.get('engine', settings.get('backend')) if isinstance(backend, basestring): Conn = import_string(backend) elif backend: Conn = backend else: raise KeyError('backend') # Pull in our router router = settings.get('router') if isinstance(router, basestring): router = import_string(router) elif router: router = router else: router = BaseRouter defaults = settings.get('defaults', {}) # Build the connection cluster return Cluster( router=router, hosts=dict( (conn_number, Conn(num=conn_number, **apply_defaults(host_settings, defaults))) for conn_number, host_settings in settings['hosts'].iteritems() ), )
def test_does_apply(self): host = {'port': 6379} defaults = {'host': 'localhost'} results = apply_defaults(host, defaults) self.assertEqual(results, { 'port': 6379, 'host': 'localhost', })
def test_does_apply(self): host = {'port': 6379} defaults = {'host': 'localhost'} results = apply_defaults(host, defaults) self.assertEquals(results, { 'port': 6379, 'host': 'localhost', })
def create_connection(Connection, num, host_settings, defaults): # host_settings can be an iterable or a dictionary depending on the style # of connection (some connections share options and simply just need to # pass a single host, or a list of hosts) if isinstance(host_settings, collections.Mapping): return Connection(num, **apply_defaults(host_settings, defaults or {})) elif isinstance(host_settings, collections.Iterable): return Connection(num, *host_settings, **defaults or {}) return Connection(num, host_settings, **defaults or {})