You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sm...@apache.org on 2013/10/23 00:58:11 UTC

git commit: AMBARI-3554. Host cleanup commands should allow silent execution.

Updated Branches:
  refs/heads/trunk 88f513259 -> 0672abab2


AMBARI-3554. Host cleanup commands should allow silent execution.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/0672abab
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/0672abab
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/0672abab

Branch: refs/heads/trunk
Commit: 0672abab29adfc2264a9d3ef9e3621959687b187
Parents: 88f5132
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Tue Oct 22 15:26:38 2013 -0700
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Tue Oct 22 15:58:03 2013 -0700

----------------------------------------------------------------------
 .../src/main/python/ambari_agent/HostCleanup.py | 17 +++++---
 ambari-agent/src/test/python/TestHostCleanup.py | 42 +++++++++++++++++---
 2 files changed, 47 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/0672abab/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/HostCleanup.py b/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
index 6d07691..2f56376 100644
--- a/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
+++ b/ambari-agent/src/main/python/ambari_agent/HostCleanup.py
@@ -470,6 +470,10 @@ def main():
   parser.add_option("-k", "--skip", dest="skip",
                     help="(packages|users|directories|repositories|processes|alternatives)." + \
                          " Use , as separator.")
+  parser.add_option("-s", "--silent",
+                    action="store_true", dest="silent", default=False,
+                    help="Silently accepts default prompt values")
+
 
   (options, args) = parser.parse_args()
   # set output file
@@ -495,12 +499,13 @@ def main():
   if not is_root:
     raise RuntimeError('HostCleanup needs to be run as root.')
 
-  if "users" not in SKIP_LIST:
-    delete_users = get_YN_input('You have elected to remove all users as well. If it is not intended then use '
-                               'option --skip \"users\". Do you want to continue [y/n] (n)', False)
-    if not delete_users:
-      print 'Exiting. Use option --skip="users" to skip deleting users'
-      sys.exit(1)
+  if not options.silent:
+    if "users" not in SKIP_LIST:
+      delete_users = get_YN_input('You have elected to remove all users as well. If it is not intended then use '
+                               'option --skip \"users\". Do you want to continue [y/n] (y)', True)
+      if not delete_users:
+        print 'Exiting. Use option --skip="users" to skip deleting users'
+        sys.exit(1)
 
   hostcheckfile = options.inputfile
   propMap = h.read_host_check_file(hostcheckfile)

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/0672abab/ambari-agent/src/test/python/TestHostCleanup.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/TestHostCleanup.py b/ambari-agent/src/test/python/TestHostCleanup.py
index 401aee9..3534195 100644
--- a/ambari-agent/src/test/python/TestHostCleanup.py
+++ b/ambari-agent/src/test/python/TestHostCleanup.py
@@ -98,11 +98,12 @@ created = 2013-07-02 20:39:22.162757"""
     sys.stdout = sys.__stdout__
 
   class HostCleanupOptions:
-    def __init__(self, outputfile, inputfile, skip, verbose):
+    def __init__(self, outputfile, inputfile, skip, verbose, silent):
       self.outputfile = outputfile
       self.inputfile = inputfile
       self.skip = skip
-      self.verbose = False
+      self.verbose = verbose
+      self.silent = silent
 
   @patch.object(HostCleanup, 'get_YN_input')
   @patch.object(HostCleanup.HostCleanup, 'do_cleanup')
@@ -114,7 +115,8 @@ created = 2013-07-02 20:39:22.162757"""
   @patch.object(optparse.OptionParser, 'parse_args')
   def test_options(self, parser_mock, file_handler_mock, logging_mock, read_host_check_file_mock,
                    set_formatter_mock, user_root_mock, do_cleanup_mock, get_yn_input_mock):
-    parser_mock.return_value = (TestHostCleanup.HostCleanupOptions('/someoutputfile', '/someinputfile', '', False), [])
+    parser_mock.return_value = (TestHostCleanup.HostCleanupOptions('/someoutputfile', '/someinputfile', '', False,
+                                                                   False), [])
     file_handler_mock.return_value = logging.FileHandler('') # disable creating real file
     user_root_mock.return_value = True
     get_yn_input_mock.return_value = True
@@ -128,8 +130,36 @@ created = 2013-07-02 20:39:22.162757"""
     logging_mock.assert_called_with(level=logging.INFO)
     # test --in
     read_host_check_file_mock.assert_called_with('/someinputfile')
-    
-  
+    self.assertTrue(get_yn_input_mock.called)
+
+
+  @patch.object(HostCleanup, 'get_YN_input')
+  @patch.object(HostCleanup.HostCleanup, 'do_cleanup')
+  @patch.object(HostCleanup.HostCleanup, 'is_current_user_root')
+  @patch.object(logging.FileHandler, 'setFormatter')
+  @patch.object(HostCleanup.HostCleanup,'read_host_check_file')
+  @patch.object(logging,'basicConfig')
+  @patch.object(logging, 'FileHandler')
+  @patch.object(optparse.OptionParser, 'parse_args')
+  def test_options_silent(self, parser_mock, file_handler_mock, logging_mock, read_host_check_file_mock,
+                   set_formatter_mock, user_root_mock, do_cleanup_mock, get_yn_input_mock):
+    parser_mock.return_value = (TestHostCleanup.HostCleanupOptions('/someoutputfile', '/someinputfile', '', False,
+                                                                   True), [])
+    file_handler_mock.return_value = logging.FileHandler('') # disable creating real file
+    user_root_mock.return_value = True
+    get_yn_input_mock.return_value = True
+    HostCleanup.main()
+
+    # test --out
+    file_handler_mock.assert_called_with('/someoutputfile')
+    # test --skip
+    self.assertEquals([''],HostCleanup.SKIP_LIST)
+    #test --verbose
+    logging_mock.assert_called_with(level=logging.INFO)
+    # test --in
+    read_host_check_file_mock.assert_called_with('/someinputfile')
+    self.assertFalse(get_yn_input_mock.called)
+
   @patch.object(HostCleanup.HostCleanup, 'do_erase_alternatives')
   @patch.object(HostCleanup.HostCleanup, 'find_repo_files_for_repos')
   @patch.object(HostCleanup.HostCleanup, 'get_os_type')
@@ -396,4 +426,4 @@ name=sd des derft 3.1
     sys.stdout = sys.__stdout__
 
 if __name__ == "__main__":
-  unittest.main(verbosity=2)
+  unittest.main()