Parcourir la source

AMBARI-3480. On Ambari Start, re-check critical setup configs.(Artem Baranchuk via odiachenko)

Oleksandr Diachenko il y a 11 ans
Parent
commit
9a05963ced

+ 9 - 0
ambari-server/src/main/python/ambari-server.py

@@ -2242,6 +2242,15 @@ def start(args):
                     "JDK manually to " + JDK_INSTALL_DIR
     raise FatalException(1, err)
 
+  if args.persistence_type == 'remote':
+    result = find_jdbc_driver(args)
+    msg = 'Before starting Ambari Server, ' \
+          'you must copy the {0} JDBC driver JAR file to {1}.'.format(
+          DATABASE_FULL_NAMES[args.database],
+          JAVA_SHARE_PATH)
+    if result == -1:
+      raise FatalException(-1, msg)
+
   # Preparations
 
   if is_root():

+ 14 - 1
ambari-server/src/test/python/TestAmbariServer.py

@@ -2213,9 +2213,10 @@ MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV
   @patch.object(ambari_server, "parse_properties_file")
   @patch.object(ambari_server, "read_ambari_user")
   @patch.object(ambari_server, "is_root")
+  @patch.object(ambari_server, "find_jdbc_driver")
   @patch("getpass.getuser")
   @patch("os.chdir")
-  def test_start(self, chdir_mock, getuser_mock, is_root_mock, read_ambari_user_mock,
+  def test_start(self, chdir_mock, getuser_mock, find_jdbc_driver_mock, is_root_mock, read_ambari_user_mock,
                  parse_properties_file_mock, check_postgre_up_mock,
                  print_error_msg_mock, find_jdk_mock, search_file_mock,
                  print_info_msg_mock, popenMock, openMock, pexistsMock,
@@ -2298,6 +2299,18 @@ MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV
 
     # Remote DB
     args.persistence_type = "remote"
+    args.database = "oracle"
+
+    # Case when jdbc driver is not used
+    find_jdbc_driver_mock.return_value = -1
+    try:
+      ambari_server.start(args)
+      self.fail("Should fail with exception")
+    except FatalException as e:
+      self.assertTrue('Before starting Ambari Server' in e.reason)
+
+    find_jdbc_driver_mock.reset_mock()
+    find_jdbc_driver_mock.return_value = 0
     try:
       ambari_server.start(args)
     except FatalException as e: