| Server IP : 199.250.200.62 / Your IP : 216.73.216.15 Web Server : Apache System : Linux vps37394.inmotionhosting.com 3.10.0-1160.119.1.vz7.224.4 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64 User : jasonp18 ( 1000) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/3/root/proc/3/cwd/proc/3/root/opt/imh-python/lib/python3.9/site-packages/fabric/ |
Upload File : |
import six
from fabric.utils import abort, indent
from fabric import state
# For attribute tomfoolery
class _Dict(dict):
pass
def _crawl(name, mapping):
"""
``name`` of ``'a.b.c'`` => ``mapping['a']['b']['c']``
"""
key, _, rest = name.partition('.')
value = mapping[key]
if not rest:
return value
return _crawl(rest, value)
def crawl(name, mapping):
try:
result = _crawl(name, mapping)
# Handle default tasks
if isinstance(result, _Dict):
if getattr(result, 'default', False):
result = result.default
# Ensure task modules w/ no default are treated as bad targets
else:
result = None
return result
except (KeyError, TypeError):
return None
def merge(hosts, roles, exclude, roledefs):
"""
Merge given host and role lists into one list of deduped hosts.
"""
# Abort if any roles don't exist
bad_roles = [x for x in roles if x not in roledefs]
if bad_roles:
abort("The following specified roles do not exist:\n%s" % (
indent(bad_roles)
))
# Coerce strings to one-item lists
if isinstance(hosts, six.string_types):
hosts = [hosts]
# Look up roles, turn into flat list of hosts
role_hosts = []
for role in roles:
value = roledefs[role]
# Handle dict style roledefs
if isinstance(value, dict):
value = value['hosts']
# Handle "lazy" roles (callables)
if callable(value):
value = value()
role_hosts += value
# Strip whitespace from host strings.
cleaned_hosts = [x.strip() for x in list(hosts) + list(role_hosts)]
# Return deduped combo of hosts and role_hosts, preserving order within
# them (vs using set(), which may lose ordering) and skipping hosts to be
# excluded.
# But only if the user hasn't indicated they want this behavior disabled.
all_hosts = cleaned_hosts
if state.env.dedupe_hosts:
deduped_hosts = []
for host in cleaned_hosts:
if host not in deduped_hosts and host not in exclude:
deduped_hosts.append(host)
all_hosts = deduped_hosts
return all_hosts
def parse_kwargs(kwargs):
new_kwargs = {}
hosts = []
roles = []
exclude_hosts = []
for key, value in six.iteritems(kwargs):
if key == 'host':
hosts = [value]
elif key == 'hosts':
hosts = value
elif key == 'role':
roles = [value]
elif key == 'roles':
roles = value
elif key == 'exclude_hosts':
exclude_hosts = value
else:
new_kwargs[key] = value
return new_kwargs, hosts, roles, exclude_hosts