Ver Fonte

AMBARI-6226. ambari-agent start command fails. (dlysnichenko)

Lisnichenko Dmitro há 11 anos atrás
pai
commit
2c6c0492fa

+ 6 - 1
ambari-server/src/main/python/setupAgent.py

@@ -78,6 +78,9 @@ def runAgent(passPhrase, expected_hostname):
       return agent_retcode
   return agent_retcode
 
+def tryStopAgent():
+  subprocess.call("/usr/sbin/ambari-agent stop", shell=True)
+
 def getOptimalVersion(initialProjectVersion):
   optimalVersion = initialProjectVersion
   ret = findNearestAgentPackageVersion(optimalVersion)
@@ -197,7 +200,9 @@ def main(argv=None):
     retcode = getOptimalVersion("")
   else:
     retcode = getOptimalVersion(projectVersion)
-
+  
+  tryStopAgent()
+  
   if retcode["exitstatus"] == 0 and retcode["log"] != None and retcode["log"] != "" and retcode["log"][0].strip() != "":
       availiableProjectVersion = retcode["log"].strip()
       if not isAgentPackageAlreadyInstalled(availiableProjectVersion):

+ 3 - 1
ambari-server/src/test/python/TestSetupAgent.py

@@ -202,6 +202,7 @@ class TestSetupAgent(TestCase):
   def test_execOsCommand(self, Popen_mock):
     self.assertFalse(setup_agent.execOsCommand("hostname -f") == None)
 
+  @patch.object(setup_agent, 'tryStopAgent')
   @patch.object(setup_agent, 'isAgentPackageAlreadyInstalled')
   @patch.object(setup_agent, 'runAgent')
   @patch.object(setup_agent, 'configureAgent')
@@ -216,11 +217,12 @@ class TestSetupAgent(TestCase):
   def test_setup_agent_main(self, dirname_mock, realpath_mock, exit_mock, checkServerReachability_mock,
                             getOptimalVersion_mock, is_debian_family_mock, is_suse_family_mock,
                             installAgent_mock, configureAgent_mock, runAgent_mock,
-                            isAgentPackageAlreadyInstalled_mock):
+                            isAgentPackageAlreadyInstalled_mock, tryStopAgent_mock):
     installAgent_mock.return_value = {'log': 'log', 'exitstatus': 0}
     runAgent_mock.return_value = 0
     getOptimalVersion_mock.return_value = {'log': '1.1.2, 1.1.3, ', 'exitstatus': 1}
     setup_agent.main(("setupAgent.py","agents_host","password", "server_hostname","1.1.1","8080"))
+    self.assertTrue(tryStopAgent_mock.called)
     self.assertTrue(exit_mock.called)
     self.assertTrue(getOptimalVersion_mock.called)
     exit_mock.reset_mock()