Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 66f86b8

Browse files
committed
Merge pull request alphagov#72 from alphagov/improve_puppet_class
Improve puppet_class and deprecate puppet.loadhosts
2 parents c81feb8 + 387151b commit 66f86b8

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

fabfile.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
import time
99

1010
from fabric import state
11-
from fabric.api import (abort, env, get, hide, local, puts, run, runs_once,
12-
serial, settings, sudo, task, warn)
11+
from fabric.api import (abort, env, get, hide, hosts, local, puts, run,
12+
runs_once, serial, settings, sudo, task, warn)
1313
from fabric.task_utils import crawl
1414

1515
# Our command submodules
@@ -103,6 +103,15 @@ def fetch(self):
103103

104104
self.fetched = True
105105

106+
def fetch_puppet_class(self, name):
107+
# These cannot be prefetched because there's too many variations.
108+
# But we only need to fetch once for each.
109+
if self.roledefs['puppet_class-%s' % name]:
110+
return
111+
112+
hosts = _fetch_hosts('-C %s' % name)
113+
self.roledefs['puppet_class-%s' % name] = hosts
114+
106115
def __contains__(self, key):
107116
return True
108117

@@ -235,12 +244,11 @@ def klass(class_name):
235244
env.hosts.extend(env.roledefs['class-%s' % class_name]())
236245

237246
@task
247+
@hosts('localhost')
238248
def puppet_class(class_name):
239249
"""Select all machines which include a given puppet class"""
240-
hosts = _fetch_hosts('-C %s' % class_name)
241-
if (hosts == []):
242-
abort("Didn't find any hosts with class %s" % class_name)
243-
env.hosts.extend(sorted(hosts))
250+
env.roledefs.fetch_puppet_class(class_name)
251+
env.hosts.extend(env.roledefs['puppet_class-%s' % class_name]())
244252

245253
@task
246254
def vdc(vdc_name):

puppet.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
@task
44
def loadhosts(*classnames):
5-
"""Load hosts that include given Puppet class(es)"""
6-
classnames = ','.join(classnames)
7-
with hide('running', 'stdout'):
8-
with settings(host_string=env.gateway, gateway=None):
9-
env.hosts = run('govuk_node_list -C %s' % classnames).splitlines()
5+
"""Deprecated, use puppet_class"""
6+
usage = ["puppet_class:{0}".format(name) for name in classnames]
7+
abort("puppet.loadhosts is deprecated, use: {0}".format(" ".join(usage)))
108

119
def puppet(*args):
1210
sudo('govuk_puppet %s' % ' '.join(args))

0 commit comments

Comments
 (0)