blob: f88ce511c7acdcad331e969f062c403a5f6f1e07 [file] [log] [blame]
from cfg_checker.helpers import args_utils
from cfg_checker.modules.packages.repos import RepoManager
import checker
command_help = "Package versions check (Candidate vs Installed)"
def init_parser(_parser):
# packages subparser
pkg_subparsers = _parser.add_subparsers(dest='type')
pkg_report_parser = pkg_subparsers.add_parser(
'report',
help="Report package versions to HTML file"
)
pkg_report_parser.add_argument(
'--full',
action="store_true", default=False,
help="HTML report will have all of the packages, not just errors"
)
pkg_report_parser.add_argument(
'--html',
metavar='packages_html_filename',
help="HTML filename to save report"
)
pkg_report_parser.add_argument(
'--csv',
metavar='packages_csv_filename',
help="CSV filename to save report"
)
pkg_repos = pkg_subparsers.add_parser(
'versions',
help="Parse versions at given URL and create local map"
)
pkg_repos.add_argument(
'--list-tags',
action="store_true", default=False,
help="Just list tags available in mirror"
)
pkg_repos.add_argument(
'--url',
metavar='repo_url', default="http://mirror.mirantis.com",
help="URL for repos, default: http://mirror.mirantis.com"
)
pkg_repos.add_argument(
'--tag',
metavar='repo_tag', default=None,
help="Repository tag to process packages from. Default: "
"All url's root folder tags"
)
pkg_repos.add_argument(
'--build-repos',
action="store_true", default=False,
help="Conduct build stage before working with tags"
)
pkg_repos.add_argument(
'--gen-desc',
action="store_true", default=False,
help="Save pkg descriptions while parsing"
)
return _parser
def do_report(args):
"""Create package versions report, HTML
:args: - parser arguments
:return: - no return value
"""
_type, _filename = args_utils.get_package_report_type_and_filename(args)
# init connection to salt and collect minion data
pChecker = checker.CloudPackageChecker()
# collect data on installed packages
pChecker.collect_installed_packages()
# diff installed and candidates
pChecker.collect_packages()
# report it
pChecker.create_report(_filename, rtype=_type, full=args.full)
def do_versions(args):
"""Builds tagged repo structure and parses Packages.gz files
:args: - parser arguments
:return: - no return value
"""
# Get the list of tags for the url
r = RepoManager()
if args.build_repos:
# if tag is supplied, use it
if args.tag:
r.action_for_tag(args.url, args.tag, action="build")
else:
r.build_repos(args.url)
# if tag is supplied, use it
if args.tag:
# Process only this tag
r.action_for_tag(
args.url,
args.tag,
action="fetch",
descriptions=args.gen_desc
)
else:
# All of them
r.parse_repos()