You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ma...@apache.org on 2013/06/23 01:57:48 UTC

svn commit: r1495784 - in /incubator/ambari/branches/branch-1.2.4/ambari-server/src: main/python/ambari-server.py test/python/TestAmbaryServer.py

Author: mahadev
Date: Sat Jun 22 23:57:48 2013
New Revision: 1495784

URL: http://svn.apache.org/r1495784
Log:
AMBARI-2471. Remove unnecessary check for hostnames/ service name which is wrong. (mahadev)

Modified:
    incubator/ambari/branches/branch-1.2.4/ambari-server/src/main/python/ambari-server.py
    incubator/ambari/branches/branch-1.2.4/ambari-server/src/test/python/TestAmbaryServer.py

Modified: incubator/ambari/branches/branch-1.2.4/ambari-server/src/main/python/ambari-server.py
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2.4/ambari-server/src/main/python/ambari-server.py?rev=1495784&r1=1495783&r2=1495784&view=diff
==============================================================================
--- incubator/ambari/branches/branch-1.2.4/ambari-server/src/main/python/ambari-server.py (original)
+++ incubator/ambari/branches/branch-1.2.4/ambari-server/src/main/python/ambari-server.py Sat Jun 22 23:57:48 2013
@@ -927,6 +927,7 @@ def setup(args):
     retcode = setup_remote_db(args)
     if retcode == -1:
       #means the cli was not found
+      print "Ambari Server 'setup' is complete"
       sys.exit(retcode)
       
     if not retcode == 0:
@@ -1262,6 +1263,25 @@ def load_default_db_properties(args):
   args.sid_or_sname = "sname"
   pass
 
+def get_validated_service_name(service_name, index):
+  return get_validated_string_input(
+            ORACLE_DB_ID_TYPES[index] + " [" + service_name + "]:",
+            service_name,
+            ".*",
+            "Invalid " + ORACLE_DB_ID_TYPES[index] + ".",
+            False
+          )
+  
+def get_validated_db_name(database_name):
+  return get_validated_string_input(
+        DATABASE_STORAGE_NAMES[DATABASE_INDEX] + " Name [" 
+        + database_name + "]:",
+        database_name,
+        ".*",
+        "Invalid " + DATABASE_STORAGE_NAMES[DATABASE_INDEX] + " name.",
+        False
+      )
+  
 # Ask user for database conenction properties
 def prompt_db_properties(args):
   global DATABASE_INDEX
@@ -1317,13 +1337,8 @@ def prompt_db_properties(args):
             args.sid_or_sname = "sid"
 
           IDTYPE_INDEX = int(idType) - 1
-          args.database_name = get_validated_string_input(
-            ORACLE_DB_ID_TYPES[IDTYPE_INDEX] + " [" + args.database_name + "]:",
-            args.database_name,
-            "^[a-zA-Z0-9.\-]*$",
-            "Invalid " + ORACLE_DB_ID_TYPES[IDTYPE_INDEX] + ".",
-            False
-          )
+          args.database_name = get_validated_service_name(args.database_name, 
+                                                          IDTYPE_INDEX)
         else:
           # MySQL and other DB types
           pass
@@ -1331,16 +1346,10 @@ def prompt_db_properties(args):
       else:
         args.database_host = "localhost"
         args.database_port = DATABASE_PORTS[DATABASE_INDEX]
-
-        args.database_name = get_validated_string_input(
-          DATABASE_STORAGE_NAMES[DATABASE_INDEX] + " Name [" + args.database_name + "]:",
-          args.database_name,
-          "^[a-zA-z\-\"]+$",
-          "Invalid " + DATABASE_STORAGE_NAMES[DATABASE_INDEX] + " name.",
-          False
-        )
-      pass
-
+        args.database_name = get_validated_db_name(args.database_name)
+        pass
+      
+      # Username is common for Oracle/MySQL/Postgres
       args.database_username = get_validated_string_input(
         'Username [' + args.database_username + ']: ',
         args.database_username,

Modified: incubator/ambari/branches/branch-1.2.4/ambari-server/src/test/python/TestAmbaryServer.py
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2.4/ambari-server/src/test/python/TestAmbaryServer.py?rev=1495784&r1=1495783&r2=1495784&view=diff
==============================================================================
--- incubator/ambari/branches/branch-1.2.4/ambari-server/src/test/python/TestAmbaryServer.py (original)
+++ incubator/ambari/branches/branch-1.2.4/ambari-server/src/test/python/TestAmbaryServer.py Sat Jun 22 23:57:48 2013
@@ -57,7 +57,6 @@ class TestAmbariServer(TestCase):
 
 
   def test_configure_pg_hba_postgres_user(self):
-
     tf1 = tempfile.NamedTemporaryFile()
     ambari_server.PG_HBA_CONF_FILE = tf1.name
 
@@ -82,9 +81,10 @@ class TestAmbariServer(TestCase):
 
   @patch('__builtin__.raw_input')
   def test_get_choice_string_input(self, raw_input_method):
+
     out = StringIO.StringIO()
     sys.stdout = out
-
+   
 
     prompt = "blablabla"
     default = "default blablabla"
@@ -131,7 +131,25 @@ class TestAmbariServer(TestCase):
     sys.stdout = sys.__stdout__
 
     pass
+  
+  @patch('__builtin__.raw_input')
+  def test_servicename_regex(self, raw_input_method):
+
+    ''' Test to make sure the service name can contain digits '''
+    ambari_server.SILENT = False
+    raw_input_method.return_value = "OT100"
+    result = ambari_server.get_validated_service_name("ambari", 1)
+    self.assertEqual("OT100", result, "Not accepting digits")
+    pass
+    
+  @patch('__builtin__.raw_input')
+  def test_dbname_regex(self, raw_input_method):
 
+    ''' Test to make sure the service name can contain digits '''
+    ambari_server.SILENT = False
+    raw_input_method.return_value = "OT100"
+    result = ambari_server.get_validated_db_name("ambari")
+    self.assertEqual("OT100", result, "Not accepting digits")
 
 
   @patch('re.search')
@@ -139,9 +157,10 @@ class TestAmbariServer(TestCase):
   @patch('getpass.getpass')
   def test_get_validated_string_input(self, get_pass_method,
       raw_input_method, re_search_method):
+
+  
     out = StringIO.StringIO()
     sys.stdout = out
-
     prompt = "blabla"
     default = "default_pass"
     pattern = "pattern_pp"
@@ -149,7 +168,7 @@ class TestAmbariServer(TestCase):
     # check password input
     is_pass = True
     get_pass_method.return_value = "dfdsfdsfds"
-
+    
     result = ambari_server.get_validated_string_input(prompt, default,
         pattern, description, is_pass)
 
@@ -175,6 +194,7 @@ class TestAmbariServer(TestCase):
 
 
   def test_get_pass_file_path(self):
+
     result = ambari_server.get_pass_file_path("/etc/ambari/conf_file")
     self.assertEquals("/etc/ambari/password.dat", result)
     pass
@@ -190,6 +210,7 @@ class TestAmbariServer(TestCase):
   @patch('optparse.OptionParser')
   def test_main_test_setup(self, OptionParserMock, reset_method, stop_method,
                            start_method, setup_method):
+
     opm = OptionParserMock.return_value
     options = MagicMock()
     args = ["setup"]
@@ -215,6 +236,7 @@ class TestAmbariServer(TestCase):
   @patch('optparse.OptionParser')
   def test_main_test_start(self, OptionParserMock, reset_method, stop_method,
                            start_method, setup_method):
+
     opm = OptionParserMock.return_value
     options = MagicMock()
     args = ["setup"]
@@ -241,6 +263,7 @@ class TestAmbariServer(TestCase):
   @patch('optparse.OptionParser')
   def test_main_test_stop(self, OptionParserMock, reset_method, stop_method,
                           start_method, setup_method):
+
     opm = OptionParserMock.return_value
     options = MagicMock()
     args = ["stop"]
@@ -268,6 +291,7 @@ class TestAmbariServer(TestCase):
   @patch('optparse.OptionParser')
   def test_main_test_reset(self, OptionParserMock, reset_method, stop_method,
                            start_method, setup_method):
+
     opm = OptionParserMock.return_value
 
     options = MagicMock()
@@ -371,7 +395,6 @@ class TestAmbariServer(TestCase):
 
     out = StringIO.StringIO()
     sys.stdout = out
-
     p = MagicMock()
     p.poll.return_value = 0
     popenMock.return_value = p
@@ -413,8 +436,8 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "search_file")
   def test_write_property(self, search_file_mock, get_conf_dir_mock):
 
-    expected_content = "key1=val1\n"
 
+    expected_content = "key1=val1\n"
     tf1 = tempfile.NamedTemporaryFile()
     search_file_mock.return_value = tf1.name
     ambari_server.write_property("key1", "val1")
@@ -439,9 +462,9 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "run_os_command")
   def test_check_selinux(self, run_os_command_mock, getYNInput_mock):
 
+
     out = StringIO.StringIO()
     sys.stdout = out
-
     run_os_command_mock.return_value = (0, ambari_server.SE_STATUS_DISABLED,
                                         None)
     rcode = ambari_server.check_selinux()
@@ -476,6 +499,7 @@ class TestAmbariServer(TestCase):
   @patch("glob.glob")
   @patch.object(ambari_server, "print_info_msg")
   def test_get_share_jars(self, printInfoMsg_mock, globMock):
+
     globMock.return_value = ["one", "two"]
     expected = "one:two:one:two"
     result = ambari_server.get_share_jars()
@@ -489,6 +513,7 @@ class TestAmbariServer(TestCase):
   @patch("glob.glob")
   @patch.object(ambari_server, "print_info_msg")
   def test_get_ambari_classpath(self, printInfoMsg_mock, globMock):
+
     globMock.return_value = ["one"]
     result = ambari_server.get_ambari_classpath()
     print result
@@ -560,6 +585,7 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "dlprogress")
   def test_track_jdk(self, dlprogress_mock, openMock, urlopenMock):
 
+
     u = MagicMock()
     u.info.return_value = {"Content-Length":"24576"}
     chunks = [None, "second", "first"]
@@ -597,6 +623,7 @@ class TestAmbariServer(TestCase):
                         get_YN_input_mock, track_jdk_mock, path_existsMock,
                         path_isfileMock, statMock):
 
+
     out = StringIO.StringIO()
     sys.stdout = out
 
@@ -700,6 +727,7 @@ class TestAmbariServer(TestCase):
   def test_configure_os_settings(self, get_conf_dir_mock, write_property_mock, get_ambari_properties_mock, print_error_msg_mock,
                                  print_info_msg_mock, systemMock, distMock):
 
+
     get_ambari_properties_mock.return_value = -1
     rcode = ambari_server.configure_os_settings()
     self.assertEqual(-1, rcode)
@@ -730,6 +758,7 @@ class TestAmbariServer(TestCase):
   def test_get_JAVA_HOME(self, get_conf_dir_mock, search_file_mock,
                          Properties_mock, openMock):
 
+
     out = StringIO.StringIO()
     sys.stdout = out
 
@@ -753,6 +782,7 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "get_JAVA_HOME")
   def test_find_jdk(self, get_JAVA_HOME_mock, globMock):
 
+
     out = StringIO.StringIO()
     sys.stdout = out
 
@@ -771,7 +801,7 @@ class TestAmbariServer(TestCase):
 
     sys.stdout = sys.__stdout__
 
-
+  @patch.object(ambari_server, "get_YN_input")
   @patch.object(ambari_server, "configure_os_settings")
   @patch.object(ambari_server, "download_jdk")
   @patch.object(ambari_server, "configure_postgres")
@@ -783,17 +813,19 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "store_remote_properties")
   def test_setup(self, store_remote_properties_mock, setup_remote_db_mock, check_selinux_mock, check_iptables_mock,
                  check_postgre_up_mock, setup_db_mock, configure_postgres_mock,
-                 download_jdk_mock, configure_os_settings_mock, ):
+                 download_jdk_mock, configure_os_settings_mock, get_YN_input ):
 
+
+    
     out = StringIO.StringIO()
     sys.stdout = out
-
     args = MagicMock()
 
     check_selinux_mock.return_value = 0
     check_iptables_mock.return_value = (0, "other")
     check_postgre_up_mock.return_value = 0
     setup_db_mock.return_value = 0
+    get_YN_input.return_value = False
     setup_remote_db_mock.return_value = 0
     configure_postgres_mock.return_value = 0
     download_jdk_mock.return_value = 0
@@ -803,8 +835,7 @@ class TestAmbariServer(TestCase):
     self.assertEqual(None, result)
 
     sys.stdout = sys.__stdout__
-
-
+    
 
   @patch.object(ambari_server, "get_YN_input")
   @patch.object(ambari_server, "setup_db")
@@ -816,6 +847,7 @@ class TestAmbariServer(TestCase):
                  run_os_command_mock, print_info_msg_mock,
                  setup_db_mock, get_YN_inputMock):
 
+
     out = StringIO.StringIO()
     sys.stdout = out
     parse_properties_file_mock.return_value = 0
@@ -886,9 +918,10 @@ class TestAmbariServer(TestCase):
                  print_info_msg_mock, popenMock, openMock, pexistsMock,
                  killMock):
 
+
+    
     out = StringIO.StringIO()
     sys.stdout = out
-
     args = MagicMock()
     f = MagicMock()
     f.readline.return_value = 42
@@ -932,6 +965,7 @@ class TestAmbariServer(TestCase):
   def test_stop(self, print_info_msg_mock, gpidMock, removeMock,
                 killMock, pexistsMock, openMock):
 
+
     pexistsMock.return_value = True
     f = MagicMock()
     f.readline.return_value = "42"
@@ -954,6 +988,7 @@ class TestAmbariServer(TestCase):
 
   def test_print_info_msg(self):
 
+
     out = StringIO.StringIO()
     sys.stdout = out
 
@@ -967,6 +1002,7 @@ class TestAmbariServer(TestCase):
 
   def test_print_error_msg(self):
 
+
     out = StringIO.StringIO()
     sys.stdout = out
 
@@ -980,6 +1016,7 @@ class TestAmbariServer(TestCase):
 
   def test_print_warning_msg(self):
 
+
     out = StringIO.StringIO()
     sys.stdout = out
 
@@ -994,25 +1031,30 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "get_choice_string_input")
   def test_get_YN_input(self, get_choice_string_input_mock):
 
+
     ambari_server.get_YN_input("prompt", "default")
     self.assertTrue(get_choice_string_input_mock.called)
     self.assertEqual(4, len(get_choice_string_input_mock.call_args_list[0][0]))
 
   @patch("sys.exit")
+  @patch.object(ambari_server, "get_YN_input")
   @patch.object(ambari_server, "download_jdk")
   @patch.object(ambari_server, "get_db_cli_tool")
   @patch.object(ambari_server, "store_remote_properties")
   @patch.object(ambari_server, "is_local_database")
   @patch.object(ambari_server, "check_iptables")
   @patch.object(ambari_server, "check_jdbc_drivers")
-  def test_setup_remote_db_wo_client(self, check_jdbc_drivers_mock, check_iptables_mock, is_local_db_mock,
-                                     store_remote_properties_mock, get_db_cli_tool_mock, download_jdk_mock, exit_mock):
+  @patch('__builtin__.raw_input') 
+  def test_setup_remote_db_wo_client(self, raw_input, check_jdbc_drivers_mock, check_iptables_mock, is_local_db_mock,
+                                     store_remote_properties_mock, get_db_cli_tool_mock, download_jdk_mock, 
+                                     get_YN_input, exit_mock):
 
+    
     out = StringIO.StringIO()
     sys.stdout = out
-
+    raw_input.return_value =""
     args = MagicMock()
-
+    get_YN_input.return_value = False
     is_local_db_mock.return_value = False
     check_iptables_mock.return_value = (0, "other")
     store_remote_properties_mock.return_value = 0
@@ -1066,6 +1108,7 @@ class TestAmbariServer(TestCase):
   def test_check_jdbc_drivers(self, exit_mock, raw_input_mock, print_warning_msg, print_error_msg_mock, copy_files_mock,
                               find_jdbc_driver_mock, get_ambari_properties_mock):
 
+
     out = StringIO.StringIO()
     sys.stdout = out
 
@@ -1131,6 +1174,7 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "search_file")
   def test_get_ambari_properties(self, search_file_mock):
 
+
     search_file_mock.return_value = None
     rcode = ambari_server.get_ambari_properties()
     self.assertEqual(rcode, -1)
@@ -1154,6 +1198,7 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "search_file")
   def test_parse_properties_file(self, search_file_mock):
 
+    
     tf1 = tempfile.NamedTemporaryFile()
     search_file_mock.return_value = tf1.name
 
@@ -1174,6 +1219,7 @@ class TestAmbariServer(TestCase):
     sys.stdout = sys.__stdout__
 
   def test_prompt_db_properties_default(self):
+
     args = MagicMock()
     ambari_server.load_default_db_properties(args)
     ambari_server.prompt_db_properties(args)
@@ -1186,6 +1232,7 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "get_validated_string_input")
   @patch.object(ambari_server, "get_YN_input")
   def test_prompt_db_properties_oracle_sname(self, gyni_mock, gvsi_mock, rp_mock):
+
     ambari_server.PROMPT_DATABASE_OPTIONS = True
     gyni_mock.return_value = True
     list_of_return_values= ["ambari-server", "ambari", "1", "1521", "localhost", "2"]
@@ -1208,6 +1255,7 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "get_validated_string_input")
   @patch.object(ambari_server, "get_YN_input")
   def test_prompt_db_properties_oracle_sid(self, gyni_mock, gvsi_mock, rp_mock):
+
     ambari_server.PROMPT_DATABASE_OPTIONS = True
     gyni_mock.return_value = True
     list_of_return_values= ["ambari-server", "ambari", "2", "1521", "localhost", "2"]
@@ -1230,6 +1278,7 @@ class TestAmbariServer(TestCase):
   @patch.object(ambari_server, "get_validated_string_input")
   @patch.object(ambari_server, "get_YN_input")
   def test_prompt_db_properties_postgre_adv(self, gyni_mock, gvsi_mock, rp_mock):
+
     ambari_server.PROMPT_DATABASE_OPTIONS = True
     gyni_mock.return_value = True
     list_of_return_values= ["ambari-server", "ambari", "1"]