AMBARI-14811. RU/EU 'Install packages' fail on centos and suse on non-root (Andrew Onischuk via alejandro)
diff --git a/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py b/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
index f68e3b1..821df77 100644
--- a/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
+++ b/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
@@ -170,16 +170,16 @@
     package_manager_cmd = ""
 
     if OSCheck.is_redhat_family():
-      package_manager_cmd = "/usr/bin/yum -q clean metadata"
+      package_manager_cmd = ("/usr/bin/yum", "clean", "metadata")
 
     if OSCheck.is_suse_family():
-      package_manager_cmd = "/usr/bin/zypper -q -n clean"
+      package_manager_cmd = ("/usr/bin/zypper", "-q", "-n", "clean")
 
     if OSCheck.is_ubuntu_family():
       return
 
     Logger.debug("Clearing repo manager metadata")
-    Execute(package_manager_cmd, logoutput=False)
+    Execute(package_manager_cmd, logoutput=False, sudo=True)
 
   def _create_config_links_if_necessary(self, stack_id, stack_version):
     """
diff --git a/ambari-server/src/test/python/custom_actions/TestInstallPackages.py b/ambari-server/src/test/python/custom_actions/TestInstallPackages.py
index 59aab44..423ae9e 100644
--- a/ambari-server/src/test/python/custom_actions/TestInstallPackages.py
+++ b/ambari-server/src/test/python/custom_actions/TestInstallPackages.py
@@ -104,9 +104,10 @@
                               mirror_list=None,
                               append_to_file=True,
     )
-    self.assertResourceCalled('Execute', '/usr/bin/yum -q clean metadata',
-                              logoutput = False,
-                              )
+    self.assertResourceCalled('Execute', ('/usr/bin/yum', 'clean', 'metadata'),
+        logoutput = False,
+        sudo = True,
+    )
     self.assertResourceCalled('Package', 'fuse')
     self.assertResourceCalled('Package', 'fuse-libs')
     self.assertResourceCalled('Package', 'hadoop_2_2_*', use_repos=['HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'], skip_repos=['HDP-*'])
@@ -167,9 +168,10 @@
                               mirror_list=None,
                               append_to_file=True,
                               )
-    self.assertResourceCalled('Execute', '/usr/bin/zypper -q -n clean',
-                              logoutput = False,
-                              )
+    self.assertResourceCalled('Execute', ('/usr/bin/zypper', '-q', '-n', 'clean'),
+        logoutput = False,
+        sudo = True,
+    )
     self.assertResourceCalled('Package', 'fuse')
     self.assertResourceCalled('Package', 'libfuse2')
     self.assertResourceCalled('Package', 'hadoop_2_2_0_1_885*', use_repos=['base', 'HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'], skip_repos=[])
@@ -233,9 +235,10 @@
                               mirror_list=None,
                               append_to_file=True,
     )
-    self.assertResourceCalled('Execute', '/usr/bin/yum -q clean metadata',
-                              logoutput = False,
-                              )
+    self.assertResourceCalled('Execute', ('/usr/bin/yum', 'clean', 'metadata'),
+        logoutput = False,
+        sudo = True,
+    )
     self.assertResourceCalled('Package', 'fuse')
     self.assertResourceCalled('Package', 'fuse-libs')
     self.assertResourceCalled('Package', 'hadoop_2_2_*', use_repos=['HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'], skip_repos=['HDP-*'])
@@ -314,9 +317,10 @@
                               mirror_list=None,
                               append_to_file=True,
                               )
-    self.assertResourceCalled('Execute', '/usr/bin/yum -q clean metadata',
-                              logoutput = False,
-                              )
+    self.assertResourceCalled('Execute', ('/usr/bin/yum', 'clean', 'metadata'),
+        logoutput = False,
+        sudo = True,
+    )
     self.assertNoMoreResources()
 
     TestInstallPackages._install_failed = False
@@ -373,9 +377,10 @@
                               mirror_list=None,
                               append_to_file=True,
                               )
-    self.assertResourceCalled('Execute', '/usr/bin/zypper -q -n clean',
-                              logoutput = False,
-                              )
+    self.assertResourceCalled('Execute', ('/usr/bin/zypper', '-q', '-n', 'clean'),
+        logoutput = False,
+        sudo = True,
+    )
     self.assertResourceCalled('Package', 'fuse')
     self.assertResourceCalled('Package', 'libfuse2')
     self.assertResourceCalled('Package', 'hadoop_2_2_0_1_885*', use_repos=['base', 'HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'], skip_repos=[])