mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
rhsm_repository: refactor parsing of "subscription-manager repos" output (#6837)
Simplify a bit (and possibly speed it up a little) the parsing of the output of `subscription-manager repos --list`: - simplify skipping the lines that are not interesting: check the first character only, as it is enough to determine whether it contains repository data or not - check the start of each line manually, rather than with regexp: a simple slice + lstrip() gives the same result
This commit is contained in:
parent
3a6955cbd7
commit
e0324cdc90
3 changed files with 21 additions and 29 deletions
|
@ -0,0 +1,8 @@
|
|||
minor_changes:
|
||||
- |
|
||||
rhsm_repository - the interaction with ``subscription-manager`` was
|
||||
refactored by grouping things together, removing unused bits, and hardening
|
||||
the way it is run; also, the parsing of ``subscription-manager repos --list``
|
||||
was improved and made slightly faster; no behaviour change is expected
|
||||
(https://github.com/ansible-collections/community.general/pull/6783,
|
||||
https://github.com/ansible-collections/community.general/pull/6837).
|
|
@ -1,6 +0,0 @@
|
|||
minor_changes:
|
||||
- |
|
||||
rhsm_repository - the interaction with ``subscription-manager`` was
|
||||
refactored by grouping things together, removing unused bits, and hardening
|
||||
the way it is run; no behaviour change is expected
|
||||
(https://github.com/ansible-collections/community.general/pull/6783).
|
|
@ -90,7 +90,6 @@ repositories:
|
|||
type: list
|
||||
'''
|
||||
|
||||
import re
|
||||
import os
|
||||
from fnmatch import fnmatch
|
||||
from copy import deepcopy
|
||||
|
@ -129,15 +128,6 @@ class Rhsm(object):
|
|||
"""
|
||||
rc, out, err = self.run_repos(['--list'])
|
||||
|
||||
skip_lines = [
|
||||
'+----------------------------------------------------------+',
|
||||
' Available Repositories in /etc/yum.repos.d/redhat.repo'
|
||||
]
|
||||
repo_id_re = re.compile(r'Repo ID:\s+(.*)')
|
||||
repo_name_re = re.compile(r'Repo Name:\s+(.*)')
|
||||
repo_url_re = re.compile(r'Repo URL:\s+(.*)')
|
||||
repo_enabled_re = re.compile(r'Enabled:\s+(.*)')
|
||||
|
||||
repo_id = ''
|
||||
repo_name = ''
|
||||
repo_url = ''
|
||||
|
@ -145,27 +135,27 @@ class Rhsm(object):
|
|||
|
||||
repo_result = []
|
||||
for line in out.splitlines():
|
||||
if line == '' or line in skip_lines:
|
||||
# ignore lines that are:
|
||||
# - empty
|
||||
# - "+---------[...]" -- i.e. header
|
||||
# - " Available Repositories [...]" -- i.e. header
|
||||
if line == '' or line[0] == '+' or line[0] == ' ':
|
||||
continue
|
||||
|
||||
repo_id_match = repo_id_re.match(line)
|
||||
if repo_id_match:
|
||||
repo_id = repo_id_match.group(1)
|
||||
if line.startswith('Repo ID: '):
|
||||
repo_id = line[9:].lstrip()
|
||||
continue
|
||||
|
||||
repo_name_match = repo_name_re.match(line)
|
||||
if repo_name_match:
|
||||
repo_name = repo_name_match.group(1)
|
||||
if line.startswith('Repo Name: '):
|
||||
repo_name = line[11:].lstrip()
|
||||
continue
|
||||
|
||||
repo_url_match = repo_url_re.match(line)
|
||||
if repo_url_match:
|
||||
repo_url = repo_url_match.group(1)
|
||||
if line.startswith('Repo URL: '):
|
||||
repo_url = line[10:].lstrip()
|
||||
continue
|
||||
|
||||
repo_enabled_match = repo_enabled_re.match(line)
|
||||
if repo_enabled_match:
|
||||
repo_enabled = repo_enabled_match.group(1)
|
||||
if line.startswith('Enabled: '):
|
||||
repo_enabled = line[9:].lstrip()
|
||||
|
||||
repo = {
|
||||
"id": repo_id,
|
||||
|
|
Loading…
Reference in a new issue