Returns a list of deployer objects that *create* cloud resources.  Each
    member of the list is responsible for provisioning a single stack resource
    (e.g. a virtual server, a security group, a bucket, etc...).

    :param keys:  A list of top-level configuration keys for which to create
        deployers.
    :type keys:  :class:`~collections.Iterable`

    :param config:  A stack object.
    :type config:  :class:`~bang.stack.Stack`

    :rtype:  :class:`list` of :class:`~bang.deployers.deployer.Deployer`

def get_stage_deployers(keys, stack):
    """
    Returns a list of deployer objects that *create* cloud resources.  Each
    member of the list is responsible for provisioning a single stack resource
    (e.g. a virtual server, a security group, a bucket, etc...).

    :param keys:  A list of top-level configuration keys for which to create
        deployers.
    :type keys:  :class:`~collections.Iterable`

    :param config:  A stack object.
    :type config:  :class:`~bang.stack.Stack`

    :rtype:  :class:`list` of :class:`~bang.deployers.deployer.Deployer`

    """
    config = stack.config
    creds = config[A.DEPLOYER_CREDS]
    deployers = []
    for res_type in keys:
        res_configs = config.get(res_type)
        if not res_configs:
            continue
        log.debug("Found config for resource type, %s" % res_type)
        for res_config in res_configs:
            if A.PROVIDER in res_config:
                ds = cloud.get_deployers(res_config, res_type, stack, creds)
            else:
                ds = [default.ServerDeployer(stack, res_config)]
            if ds:
                deployers.extend(ds)
    return deployers