Example #1
0
File: tests.py Project: tupy/nydus
 def test_does_not_overwrite(self):
     host = {'port': 6379}
     defaults = {'port': 9000}
     results = apply_defaults(host, defaults)
     self.assertEquals(results, {
         'port': 6379,
     })
Example #2
0
File: tests.py Project: thoas/nydus
 def test_does_not_overwrite(self):
     host = {'port': 6379}
     defaults = {'port': 9000}
     results = apply_defaults(host, defaults)
     self.assertEqual(results, {
         'port': 6379,
     })
Example #3
0
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()
        ),
    )
Example #4
0
File: tests.py Project: thoas/nydus
 def test_does_apply(self):
     host = {'port': 6379}
     defaults = {'host': 'localhost'}
     results = apply_defaults(host, defaults)
     self.assertEqual(results, {
         'port': 6379,
         'host': 'localhost',
     })
Example #5
0
File: tests.py Project: tupy/nydus
 def test_does_apply(self):
     host = {'port': 6379}
     defaults = {'host': 'localhost'}
     results = apply_defaults(host, defaults)
     self.assertEquals(results, {
         'port': 6379,
         'host': 'localhost',
     })
Example #6
0
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 {})
Example #7
0
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 {})