當前位置: 首頁>>代碼示例>>Python>>正文


Python env.roledefs方法代碼示例

本文整理匯總了Python中fabric.api.env.roledefs方法的典型用法代碼示例。如果您正苦於以下問題:Python env.roledefs方法的具體用法?Python env.roledefs怎麽用?Python env.roledefs使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在fabric.api.env的用法示例。


在下文中一共展示了env.roledefs方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: chef_query

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def chef_query(query, api=None, hostname_attr=DEFAULT_HOSTNAME_ATTR, environment=_default_environment):
    """A decorator to use an arbitrary Chef search query to find nodes to execute on.

    This is used like Fabric's ``roles()`` decorator, but accepts a Chef search query.

    Example::

        from chef.fabric import chef_query

        @chef_query('roles:web AND tags:active')
        @task
        def deploy():
            pass

    .. versionadded:: 0.2.1
    """
    api = _api(api)
    if api.version_parsed < Environment.api_version_parsed and environment is not None:
        raise ChefAPIVersionError('Environment support requires Chef API 0.10 or greater')
    rolename = 'query_'+query
    env.setdefault('roledefs', {})[rolename] = Roledef(query, api, hostname_attr, environment)
    return lambda fn: roles(rolename)(fn) 
開發者ID:awslabs,項目名稱:lambda-chef-node-cleanup,代碼行數:24,代碼來源:fabric.py

示例2: validate

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def validate(conf):
        validate_presto_conf(conf)
        if 'coordinator' not in conf['config.properties']:
            raise ConfigurationError('Must specify coordinator=false in '
                                     'worker\'s config.properties')
        if conf['config.properties']['coordinator'] != 'false':
            raise ConfigurationError('Coordinator must be false in the '
                                     'worker\'s config.properties')
        uri = urlparse.urlparse(conf['config.properties']['discovery.uri'])
        if Worker.is_localhost(uri.hostname) and len(env.roledefs['all']) > 1:
            raise ConfigurationError(
                'discovery.uri should not be localhost in a '
                'multi-node cluster, but found ' + urlparse.urlunparse(uri) +
                '.  You may have encountered this error by '
                'choosing a coordinator that is localhost and a worker that '
                'is not.  The default discovery-uri is '
                'http://<coordinator>:8080')
        return conf 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:20,代碼來源:workers.py

示例3: test_collect_node_information

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def test_collect_node_information(self, mock_ext_ip, mock_service,
                                      mock_version, mock_presto_config):
        env.roledefs = {
            'coordinator': ['Node1'],
            'all': ['Node1']
        }
        mock_ext_ip.side_effect = ['IP1', 'IP3', 'IP4']
        mock_service.side_effect = [True, False, Exception('Not running')]
        mock_version.side_effect = ['', 'Presto not installed', '', '']

        self.assertEqual(('IP1', True, ''), server.collect_node_information())
        self.assertEqual(('Unknown', False, 'Presto not installed'),
                         server.collect_node_information())
        self.assertEqual(('IP3', False, ''), server.collect_node_information())
        self.assertEqual(('IP4', False, ''),
                         server.collect_node_information()) 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:18,代碼來源:test_server.py

示例4: test_collect_query_info

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def test_collect_query_info(self, requests_url_mock, requests_get_mock,
                                mkdir_mock, open_mock,
                                req_json_mock, json_dumps_mock):
        query_id = "1234_abcd"
        query_info_file_name = path.join(TMP_PRESTO_DEBUG,
                                         "query_info_" + query_id + ".json")
        file_obj = open_mock.return_value.__enter__.return_value
        requests_get_mock.return_value.json.return_value = req_json_mock
        requests_get_mock.return_value.status_code = requests.codes.ok
        env.host = "myhost"
        env.roledefs["coordinator"] = ["myhost"]

        collect.query_info(query_id)

        mkdir_mock.assert_called_with(TMP_PRESTO_DEBUG)

        open_mock.assert_called_with(query_info_file_name, "w")

        json_dumps_mock.assert_called_with(req_json_mock, indent=4)

        file_obj.write.assert_called_with(json_dumps_mock.return_value) 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:23,代碼來源:test_collect.py

示例5: chef_environment

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def chef_environment(name, api=None):
    """A Fabric task to set the current Chef environment context.

    This task works alongside :func:`~chef.fabric.chef_roledefs` to set the
    Chef environment to be used in future role queries.

    Example::

        from chef.fabric import chef_environment, chef_roledefs
        env.roledefs = chef_roledefs()

    .. code-block:: bash

        $ fab env:production deploy

    The task can be configured slightly via Fabric ``env`` values.

    ``env.chef_environment_task_alias`` sets the task alias, defaulting to "env".
    This value must be set **before** :mod:`chef.fabric` is imported.

    ``env.chef_environment_validate`` sets if :class:`~chef.Environment` names
    should be validated before use. Defaults to True.

    .. versionadded:: 0.2
    """
    if env.get('chef_environment_validate', True):
        api = _api(api)
        chef_env = Environment(name, api=api)
        if not chef_env.exists:
            raise ChefError('Unknown Chef environment: %s' % name)
    env['chef_environment'] = name 
開發者ID:awslabs,項目名稱:lambda-chef-node-cleanup,代碼行數:33,代碼來源:fabric.py

示例6: decommissioned_host

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def decommissioned_host(host):
    more_than_one_webworker = len(env.roledefs['django_app']) > 1

    if more_than_one_webworker:
        execute(_decommission_host, host)

    yield

    if more_than_one_webworker:
        execute(_recommission_host, host) 
開發者ID:dimagi,項目名稱:commcare-cloud,代碼行數:12,代碼來源:supervisor.py

示例7: get_roles_for

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def get_roles_for(host):
    roles = []
    for role in ['coordinator', 'worker']:
        if host in env.roledefs[role]:
            roles.append(role)
    return roles 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:8,代碼來源:server.py

示例8: set_env_from_conf

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def set_env_from_conf(self, conf):
        self.config = conf
        env.user = conf['username']
        env.port = conf['port']
        try:
            env.java8_home = conf['java8_home']
        except KeyError:
            env.java8_home = None
        env.roledefs['coordinator'] = [conf['coordinator']]
        env.roledefs['worker'] = conf['workers']
        env.roledefs['all'] = self._dedup_list(util.get_coordinator_role() +
                                               util.get_worker_role())

        env.hosts = env.roledefs['all'][:]
        env.conf = conf 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:17,代碼來源:config.py

示例9: default_config

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def default_config(self, filename):
        try:
            conf = copy.deepcopy(self.DEFAULT_PROPERTIES[filename])
        except KeyError:
            raise ConfigurationError('Invalid configuration file name: %s' %
                                     filename)
        if filename == 'config.properties':
            coordinator = env.roledefs['coordinator'][0]
            workers = env.roledefs['worker']
            if coordinator in workers:
                conf['node-scheduler.include-coordinator'] = 'true'
            conf['discovery.uri'] = 'http://%s:8080' % coordinator
        return conf 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:15,代碼來源:coordinator.py

示例10: get_coordinator_role

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def get_coordinator_role():
    return env.roledefs['coordinator'] 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:4,代碼來源:fabricapi.py

示例11: by_rolename

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def by_rolename(host, rolename, f, *args, **kwargs):
    if rolename is None:
        f(*args, **kwargs)
    else:
        if rolename not in env.roledefs.keys():
            abort("Invalid role name %s. Valid rolenames are %s" %
                  (rolename, env.roledefs.keys()))
        if host in env.roledefs[rolename]:
            return f(*args, **kwargs) 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:11,代碼來源:fabricapi.py

示例12: test_check_success_status

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def test_check_success_status(self, mock_run_sql, string_config_mock, mock_run, mock_presto_config):
        env.roledefs = {
            'coordinator': ['Node1'],
            'worker': ['Node1', 'Node2', 'Node3', 'Node4'],
            'all': ['Node1', 'Node2', 'Node3', 'Node4']
        }
        env.hosts = env.roledefs['all']
        env.host = 'Node1'
        string_config_mock.return_value = 'Node1'
        mock_run_sql.return_value = [['Node2', 'some stuff'], ['Node1', 'some other stuff']]
        self.assertEqual(server.check_server_status(), True) 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:13,代碼來源:test_server.py

示例13: test_check_success_fail

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def test_check_success_fail(self, mock_query_for_status, string_config_mock, mock_run,
                                mock_presto_config):
        env.roledefs = {
            'coordinator': ['Node1'],
            'worker': ['Node1', 'Node2', 'Node3', 'Node4'],
            'all': ['Node1', 'Node2', 'Node3', 'Node4']
        }
        env.hosts = env.roledefs['all']
        env.host = 'Node1'
        string_config_mock.return_value = 'Node1'
        mock_query_for_status.return_value = False
        self.assertEqual(server.check_server_status(), False) 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:14,代碼來源:test_server.py

示例14: test_status_from_each_node

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def test_status_from_each_node(
            self, mock_run_sql, mock_presto_installed, mock_get_presto_version, mock_execute, mock_presto_config):
        env.roledefs = {
            'coordinator': ['Node1'],
            'worker': ['Node1', 'Node2', 'Node3', 'Node4'],
            'all': ['Node1', 'Node2', 'Node3', 'Node4']
        }
        env.hosts = env.roledefs['all']

        mock_get_presto_version.return_value = '0.97-SNAPSHOT'
        mock_run_sql.side_effect = [
            [['select * from system.runtime.nodes']],
            [['hive'], ['system'], ['tpch']],
            [['http://active/statement', 'presto-main:0.97-SNAPSHOT', True]],
            [['http://inactive/stmt', 'presto-main:0.99-SNAPSHOT', False]],
            [[]],
            [['http://servrdown/statement', 'any', True]]
        ]
        mock_execute.side_effect = [{
            'Node1': ('IP1', True, ''),
            'Node2': ('IP2', True, ''),
            'Node3': ('IP3', True, ''),
            'Node4': Exception('Timed out trying to connect to Node4')
        }]
        env.host = 'Node1'
        server.status()

        expected = self.read_file_output('/resources/server_status_out.txt')
        self.assertEqual(
            expected.splitlines(),
            self.test_stdout.getvalue().splitlines()
        ) 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:34,代碼來源:test_server.py

示例15: test_build_defaults

# 需要導入模塊: from fabric.api import env [as 別名]
# 或者: from fabric.api.env import roledefs [as 別名]
def test_build_defaults(self):
        env.roledefs['coordinator'] = 'a'
        env.roledefs['workers'] = ['b', 'c']
        actual_default = workers.Worker().build_all_defaults()
        expected = {'node.properties':
                    {'node.environment': 'presto',
                     'node.data-dir': '/var/lib/presto/data',
                     'node.launcher-log-file': '/var/log/presto/launcher.log',
                     'node.server-log-file': '/var/log/presto/server.log',
                     'catalog.config-dir': '/etc/presto/catalog',
                     'plugin.dir': '/usr/lib/presto/lib/plugin'},
                    'jvm.config': ['-server',
                                   '-Xmx16G',
                                   '-XX:-UseBiasedLocking',
                                   '-XX:+UseG1GC',
                                   '-XX:G1HeapRegionSize=32M',
                                   '-XX:+ExplicitGCInvokesConcurrent',
                                   '-XX:+HeapDumpOnOutOfMemoryError',
                                   '-XX:+UseGCOverheadLimit',
                                   '-XX:+ExitOnOutOfMemoryError',
                                   '-XX:ReservedCodeCacheSize=512M',
                                   '-DHADOOP_USER_NAME=hive'],
                    'config.properties': {'coordinator': 'false',
                                          'discovery.uri': 'http://a:8080',
                                          'http-server.http.port': '8080',
                                          'query.max-memory': '50GB',
                                          'query.max-memory-per-node': '8GB'}
                    }

        self.assertEqual(actual_default, expected) 
開發者ID:prestodb,項目名稱:presto-admin,代碼行數:32,代碼來源:test_workers.py


注:本文中的fabric.api.env.roledefs方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。