AMBARI-21759 yumrpm provider doesn't parses installed packages in a same way on 
different CentOS versions (dgrinenko)


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

Branch: refs/heads/feature-branch-AMBARI-21307
Commit: a0ae01d883eaaecb4542e990389ea9483c63eac9
Parents: 79ff23f
Author: Dmytro Grinenko <hapyles...@apache.org>
Authored: Sat Aug 19 05:47:22 2017 +0300
Committer: Dmytro Grinenko <hapyles...@apache.org>
Committed: Sat Aug 19 05:47:22 2017 +0300

----------------------------------------------------------------------
 .../core/providers/package/yumrpm.py            | 32 ++------------------
 1 file changed, 3 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/a0ae01d8/ambari-common/src/main/python/resource_management/core/providers/package/yumrpm.py
----------------------------------------------------------------------
diff --git 
a/ambari-common/src/main/python/resource_management/core/providers/package/yumrpm.py
 
b/ambari-common/src/main/python/resource_management/core/providers/package/yumrpm.py
index 26fbc3e..8c02992 100644
--- 
a/ambari-common/src/main/python/resource_management/core/providers/package/yumrpm.py
+++ 
b/ambari-common/src/main/python/resource_management/core/providers/package/yumrpm.py
@@ -119,36 +119,10 @@ class YumProvider(RPMBasedPackageProvider):
     :type repo_filter str|None
     :rtype list[list,]
     """
-    packages = []
-    cmd_filter = "| grep \"{0}\"".format(repo_filter) if repo_filter else ""
-
-    # tr '\n' '#' %s | sed -e 's/# / /g' | tr '#' '\n' - fix yum formatted 
output for default console width
-    cmd = AMBARI_SUDO_BINARY + " yum list installed {filter}|tr '\\n' '#' | 
sed -e 's/# / /g' | tr '#' '\\n'|awk '{printf \"%s;%s;%s\\n\", 
$1,$2,$3}'".replace("{filter}", cmd_filter)
-    result = self._call_with_timeout(cmd)
-    col_sep = ";"
-
-    """
-    command would return everything in following format:
-    
-    Loaded;plugins:;fastestmirror
-    Installed;Packages;
-    package_name;version;@Repo
-    ....
-    """
-
-    if result and 0 == result['retCode']:
-      raw_pkgs = result['out'].split("\n")
-
-      for line in raw_pkgs:
-        package_item = line.split(col_sep)
-
-        if len(package_item) < 3:
-          continue
-        elif not package_item[2].startswith("@"):
-          continue
 
-        package_item[2] = package_item[2][1:]
-        packages.append(package_item)
+    packages = self._lookup_packages([AMBARI_SUDO_BINARY, "yum", "list", 
"installed"], "Installed Packages")
+    if repo_filter:
+      packages = [item for item in packages if item[2].lower() == 
repo_filter.lower()]
 
     return packages
 

Reply via email to