Muehlenhoff has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/237641

Change subject: Add command list-server-group-members
......................................................................

Add command list-server-group-members

Change-Id: Ib20895c66e4f44c4b15ea46590d5d1ef5550e379
---
M debian/changelog
M master/debdeploy
2 files changed, 38 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/debs/debdeploy 
refs/changes/41/237641/1

diff --git a/debian/changelog b/debian/changelog
index b0cbe9f..3f62012 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+debdeploy (0.0.6-1) jessie-wikimedia; urgency=medium
+
+  * Ensure debdeploy is run with root credentials
+  * Add a command 'list-server-group-members' to show all servers
+    matched by a server group
+
+ -- Moritz Muehlenhoff <mmuhlenh...@wikimedia.org>  Fri, 11 Sep 2015 13:57:45 
+0200
+
 debdeploy (0.0.5-1) jessie-wikimedia; urgency=medium
 
   * Add a Salt returner for local logging
diff --git a/master/debdeploy b/master/debdeploy
index 6559956..4b70c16 100755
--- a/master/debdeploy
+++ b/master/debdeploy
@@ -1,7 +1,11 @@
 #! /usr/bin/python
 # -*- coding: utf-8 -*-
 
-import sys, optparse, logging
+import sys, optparse, logging, os
+
+if os.geteuid() != 0:
+    print "debdeploy needs to be run as root"
+    sys.exit(1)
 
 # Logging needs to be setup before salt import, 
https://github.com/saltstack/salt/issues/4994
 logging.basicConfig(filename='/var/log/debdeploy/debdeploy.log', 
format='%(levelname)s: %(asctime)s : %(funcName)s : %(message)s', 
level=logging.DEBUG)
@@ -318,6 +322,18 @@
         for i in sorted(missing_list):
             print i
 
+def list_server_group_members(server_group):
+    '''
+    Show all servers represented by a server group
+
+    server_group        : The name of a server group (as defined in 
/etc/debdeploy.conf)
+    '''
+
+    print "Server group", server_group, ":"
+    members = client.cmd('*', 'match.grain', conf.server_groups[server_group])
+    for i in sorted(members):
+        print i
+
 def rollback(grains, update_file):
     '''
     Trigger process restarts for a set of servers
@@ -359,14 +375,15 @@
 
 op.set_usage("debdeploy-master [options] command \n \
   The following commands are supported: \n\n \
-  deploy               : Install a software update, requires --update and 
--servers \n \
-  status-deploy        : Query the status of a software deployment, requires 
--update and --servers\n \
-  rollback             : Rollback a software deployment\n \
-  status-rollback      : Query the status of a software deployment rollback\n \
-  list-server-groups   : Display a list of all defined server groups. If an 
update file is listed \n \
-                         in addition, it shows whether an update has been 
applied for that group. \n \
-  check-missing        : Display a list of all servers which don't have an 
update installed \n \
-  pkgdb-source         : Re-read the package status of a given host into the 
package database")
+  deploy                     : Install a software update, requires --update 
and --servers \n \
+  status-deploy              : Query the status of a software deployment, 
requires --update and --servers\n \
+  rollback                   : Rollback a software deployment\n \
+  status-rollback            : Query the status of a software deployment 
rollback\n \
+  list-server-groups         : Display a list of all defined server groups. If 
an update file is listed \n \
+                               in addition, it shows whether an update has 
been applied for that group. \n \
+  list-server-group-members  : Show all servers represented by a server group 
\n \
+  check-missing              : Display a list of all servers which don't have 
an update installed \n \
+  pkgdb-source               : Re-read the package status of a given host into 
the package database")
 
 
 opt, args = op.parse_args()
@@ -377,7 +394,7 @@
 
 command = args[0]
 
-if command in ("deploy", "status-deploy", "rollback", "status-rollback", 
"restart"):
+if command in ("deploy", "status-deploy", "rollback", "status-rollback", 
"restart", "list-server-group-members"):
     if not opt.serverlist:
         op.error("You need to provide a server list (-s)")
     if opt.serverlist not in conf.server_groups.keys():
@@ -411,6 +428,9 @@
 elif command == "rollback":
     rollback(conf.server_groups[opt.serverlist], opt.updatefile)
 
+elif command == "list-server-group-members":
+    list_server_group_members(opt.serverlist)
+
 elif command == "list-server-groups":
     if opt.updatefile:
         list_server_groups(opt.updatefile)

-- 
To view, visit https://gerrit.wikimedia.org/r/237641
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib20895c66e4f44c4b15ea46590d5d1ef5550e379
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/debdeploy
Gerrit-Branch: master
Gerrit-Owner: Muehlenhoff <mmuhlenh...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to