[MediaWiki-commits] [Gerrit] operations...conftool[master]: Have confctl exit with status code 1 if one action fails.

2016-09-20 Thread Giuseppe Lavagetto (Code Review)
Giuseppe Lavagetto has submitted this change and it was merged.

Change subject: Have confctl exit with status code 1 if one action fails.
..


Have confctl exit with status code 1 if one action fails.

Change-Id: Ib389e31beff8ac758848c24a54014c9c5718ced3
---
M conftool/cli/tool.py
M conftool/tests/integration/test_tool.py
2 files changed, 25 insertions(+), 10 deletions(-)

Approvals:
  Giuseppe Lavagetto: Looks good to me, approved
  Volans: Looks good to me, but someone else must approve
  BBlack: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/conftool/cli/tool.py b/conftool/cli/tool.py
index 7d850aa..63cad8f 100644
--- a/conftool/cli/tool.py
+++ b/conftool/cli/tool.py
@@ -113,6 +113,9 @@
 print(msg)
 if not fail:
 self.announce()
+return True
+else:
+return False
 
 @staticmethod
 def raise_warning():
@@ -282,9 +285,12 @@
 _log.critical("Invalid configuration: %s", e)
 sys.exit(1)
 
+exit_status = 0
 for unit in args.action:
 # TODO: fix base class
-cli.run_action(unit)
+if not cli.run_action(unit):
+exit_status = 1
+sys.exit(exit_status)
 
 
 if __name__ == '__main__':
diff --git a/conftool/tests/integration/test_tool.py 
b/conftool/tests/integration/test_tool.py
index 8557115..90a027a 100644
--- a/conftool/tests/integration/test_tool.py
+++ b/conftool/tests/integration/test_tool.py
@@ -31,7 +31,9 @@
 
 def output_for(self, args):
 with captured_output() as (out, err):
-tool.main(cmdline=args)
+with self.assertRaises(SystemExit) as cm:
+tool.main(cmdline=args)
+self.assertEquals(cm.exception_code, 0)
 res = out.getvalue().strip()
 output = []
 if not res:
@@ -53,10 +55,7 @@
 
 def test_get_node(self):
 args = self.generate_args('get cp1008')
-with captured_output() as (out, err):
-tool.main(cmdline=args)
-res = out.getvalue().strip()
-output = json.loads(res)
+output = self.output_for(args)[0]
 k = output.keys()
 k.sort()
 self.assertEquals(k, ['cp1008', 'tags'])
@@ -82,7 +81,9 @@
 Changing values according to a regexp
 """
 args = self.generate_args('set/pooled=yes re:cp105.')
-tool.main(cmdline=args)
+with self.assertRaises(SystemExit) as cm:
+tool.main(cmdline=args)
+self.assertEquals(cm.exception_code, 0)
 self.assertEquals(self.irc.emit.called, True)
 for hostname in ['cp1052', 'cp1053', 'cp1054', 'cp1055']:
 n = node.Node('eqiad', 'cache_text', 'https', hostname)
@@ -94,7 +95,10 @@
 Test creation is not possible from confctl
 """
 args = self.generate_args('set/pooled=yes cp1059')
-tool.main(cmdline=args)
+with self.assertRaises(SystemExit) as cm:
+tool.main(cmdline=args)
+# In error, we exit with status 1
+self.assertEquals(cm.exception_code, 1)
 # This doesn't get announced to irc.
 self.assertEquals(self.irc.emit.called, False)
 n = node.Node('eqiad', 'cache_text', 'https', 'cp1059')
@@ -114,7 +118,9 @@
 # one node, or not if we don't
 args = ['select', 'cluster=appservers', 'set/pooled=yes']
 tool.ToolCliByLabel.raise_warning = mock.MagicMock()
-tool.main(cmdline=args)
+with self.assertRaises(SystemExit) as cm:
+tool.main(cmdline=args)
+self.assertEquals(cm.exception_code, 0)
 self.assertEquals(tool.ToolCliByLabel.raise_warning.call_count,1)
 # now let's loop through the responses from conftool get
 args = ['select', 'cluster=appservers', 'get']
@@ -125,7 +131,10 @@
 self.assertEquals(res[k]['pooled'], 'yes')
 tool.ToolCliByLabel.raise_warning.reset_mock()
 args = ['select', 'name=mw1018', 'set/pooled=inactive']
-tool.main(cmdline=args)
+with self.assertRaises(SystemExit) as cm:
+tool.main(cmdline=args)
+self.assertEquals(cm.exception_code, 0)
+
 tool.ToolCliByLabel.raise_warning.assert_not_called()
 out = self.output_for(['select', 'name=mw1018', 'get'])
 self.assertEquals(out[0]['mw1018']['pooled'], 'inactive')

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib389e31beff8ac758848c24a54014c9c5718ced3
Gerrit-PatchSet: 3
Gerrit-Project: operations/software/conftool
Gerrit-Branch: master
Gerrit-Owner: Giuseppe Lavagetto 
Gerrit-Reviewer: BBlack 
Gerrit-Reviewer: Ema 
Gerrit-Reviewer: Giuseppe Lavagetto 

[MediaWiki-commits] [Gerrit] operations...conftool[master]: Have confctl exit with status code 1 if one action fails.

2016-09-20 Thread Giuseppe Lavagetto (Code Review)
Giuseppe Lavagetto has uploaded a new change for review.

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

Change subject: Have confctl exit with status code 1 if one action fails.
..

Have confctl exit with status code 1 if one action fails.

Change-Id: Ib389e31beff8ac758848c24a54014c9c5718ced3
---
M conftool/cli/tool.py
1 file changed, 7 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/software/conftool 
refs/changes/78/311678/1

diff --git a/conftool/cli/tool.py b/conftool/cli/tool.py
index 7d850aa..63cad8f 100644
--- a/conftool/cli/tool.py
+++ b/conftool/cli/tool.py
@@ -113,6 +113,9 @@
 print(msg)
 if not fail:
 self.announce()
+return True
+else:
+return False
 
 @staticmethod
 def raise_warning():
@@ -282,9 +285,12 @@
 _log.critical("Invalid configuration: %s", e)
 sys.exit(1)
 
+exit_status = 0
 for unit in args.action:
 # TODO: fix base class
-cli.run_action(unit)
+if not cli.run_action(unit):
+exit_status = 1
+sys.exit(exit_status)
 
 
 if __name__ == '__main__':

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib389e31beff8ac758848c24a54014c9c5718ced3
Gerrit-PatchSet: 1
Gerrit-Project: operations/software/conftool
Gerrit-Branch: master
Gerrit-Owner: Giuseppe Lavagetto 

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