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