Hello community, here is the log from the commit of package python3-img-proof for openSUSE:Factory checked in at 2020-06-22 17:46:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python3-img-proof (Old) and /work/SRC/openSUSE:Factory/.python3-img-proof.new.2956 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-img-proof" Mon Jun 22 17:46:50 2020 rev:11 rq:816376 version:5.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python3-img-proof/python3-img-proof.changes 2020-06-16 13:45:49.677840496 +0200 +++ /work/SRC/openSUSE:Factory/.python3-img-proof.new.2956/python3-img-proof.changes 2020-06-22 17:46:50.798024067 +0200 @@ -1,0 +2,8 @@ +Fri Jun 19 21:29:50 UTC 2020 - Sean Marlow <sean.mar...@suse.com> + +- Update to v5.2.0 (2020-06-19) + + Add arg in API to provide logger instance. + + Remove file handler for logging which causes message duplication. + + Add Red Hat family distro module and Fedora distro module. + +------------------------------------------------------------------- Old: ---- img-proof-5.1.0.tar.gz New: ---- img-proof-5.2.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python3-img-proof.spec ++++++ --- /var/tmp/diff_new_pack.BqqV7H/_old 2020-06-22 17:46:51.294025623 +0200 +++ /var/tmp/diff_new_pack.BqqV7H/_new 2020-06-22 17:46:51.298025636 +0200 @@ -18,7 +18,7 @@ %bcond_without test Name: python3-img-proof -Version: 5.1.0 +Version: 5.2.0 Release: 0 Summary: Command line and API for testing custom images License: GPL-3.0-or-later ++++++ img-proof-5.1.0.tar.gz -> img-proof-5.2.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/CHANGES.md new/img-proof-5.2.0/CHANGES.md --- old/img-proof-5.1.0/CHANGES.md 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/CHANGES.md 2020-06-07 21:09:18.000000000 +0200 @@ -1,3 +1,13 @@ +v5.2.0 (2020-06-07) +=================== + +- Allow any calls to API to provide their own logger instance. + [\#250](https://github.com/SUSE-Enceladus/ipa/pull/250) +- Remove file handler for logging which causes message duplication. + [\#251](https://github.com/SUSE-Enceladus/ipa/pull/251) +- Add Red Hat family distro module and Fedora distro module. + [\#252](https://github.com/SUSE-Enceladus/ipa/pull/252) + v5.1.0 (2020-06-01) =================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/PKG-INFO new/img-proof-5.2.0/PKG-INFO --- old/img-proof-5.1.0/PKG-INFO 2020-06-01 22:50:19.000000000 +0200 +++ new/img-proof-5.2.0/PKG-INFO 2020-06-07 21:10:09.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: img-proof -Version: 5.1.0 +Version: 5.2.0 Summary: Package for automated testing of cloud images. Home-page: https://github.com/SUSE-Enceladus/img-proof Author: SUSE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/__init__.py new/img-proof-5.2.0/img_proof/__init__.py --- old/img-proof-5.1.0/img_proof/__init__.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/img_proof/__init__.py 2020-06-07 21:09:18.000000000 +0200 @@ -22,4 +22,4 @@ __author__ = """SUSE""" __email__ = 'public-cloud-...@susecloud.net' -__version__ = '5.1.0' +__version__ = '5.2.0' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_azure.py new/img-proof-5.2.0/img_proof/ipa_azure.py --- old/img-proof-5.1.0/img_proof/ipa_azure.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/img_proof/ipa_azure.py 2020-06-07 21:09:18.000000000 +0200 @@ -2,7 +2,7 @@ """Module for testing instances in Azure.""" -# Copyright (c) 2019 SUSE LLC. All rights reserved. +# Copyright (c) 2020 SUSE LLC. All rights reserved. # # This file is part of img_proof. img_proof provides an api and command line # utilities for testing images in the Public Cloud. @@ -65,7 +65,8 @@ vnet_resource_group=None, collect_vm_info=None, enable_secure_boot=None, - enable_uefi=None + enable_uefi=None, + log_callback=None ): """Initialize Azure Cloud class.""" super(AzureCloud, self).__init__( @@ -93,7 +94,8 @@ ssh_user, subnet_id, enable_secure_boot, - enable_uefi + enable_uefi, + log_callback ) self.vnet_name = vnet_name or self.ipa_config['vnet_name'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_cloud.py new/img-proof-5.2.0/img_proof/ipa_cloud.py --- old/img-proof-5.1.0/img_proof/ipa_cloud.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/img_proof/ipa_cloud.py 2020-06-07 21:09:18.000000000 +0200 @@ -40,6 +40,8 @@ NOT_IMPLEMENTED, TEST_PATHS ) +from img_proof.ipa_rhel import RHEL +from img_proof.ipa_fedora import Fedora from img_proof.ipa_opensuse_leap import openSUSE_Leap from img_proof.ipa_sles import SLES from img_proof.ipa_exceptions import ( @@ -95,7 +97,8 @@ ssh_user=None, subnet_id=None, enable_secure_boot=None, - enable_uefi=None + enable_uefi=None, + log_callback=None ): """Initialize base cloud framework class.""" super(IpaCloud, self).__init__() @@ -111,14 +114,12 @@ self.config = config or default_values['config'] log_level = log_level or default_values['log_level'] - self.logger = logging.getLogger('img_proof') - self.logger.setLevel(log_level) - - console_handler = logging.StreamHandler() - console_handler.setLevel(log_level) - console_handler.setFormatter(logging.Formatter('%(message)s')) - - self.logger.addHandler(console_handler) + if log_callback: + self.logger = log_callback + else: + self.logger = logging.getLogger('img_proof') + self.logger.setLevel(log_level) + self.logger.propagate = False try: self.ipa_config = ipa_utils.get_config_values( @@ -377,10 +378,14 @@ def _set_distro(self): """Determine distro for image and create instance of class.""" - if self.distro_name == 'sles': - self.distro = SLES() + if self.distro_name == 'fedora': + self.distro = Fedora() elif self.distro_name == 'opensuse_leap': self.distro = openSUSE_Leap() + elif self.distro_name == 'rhel': + self.distro = RHEL() + elif self.distro_name == 'sles': + self.distro = SLES() else: raise IpaCloudException( 'Distribution: %s, not supported.' % self.distro_name @@ -427,14 +432,6 @@ ) self.logger.debug('Created results file %s' % self.results_file) - # Add log file handler - file_handler = logging.FileHandler(self.log_file) - file_handler.setLevel(logging.DEBUG) - file_handler.setFormatter( - logging.Formatter('\n%(asctime)s: %(message)s\n') - ) - self.logger.addHandler(file_handler) - def _start_instance(self): """Start the instance.""" raise NotImplementedError(NOT_IMPLEMENTED) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_controller.py new/img-proof-5.2.0/img_proof/ipa_controller.py --- old/img-proof-5.1.0/img_proof/ipa_controller.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/img_proof/ipa_controller.py 2020-06-07 21:09:18.000000000 +0200 @@ -2,7 +2,7 @@ """Controller class for img_proof endpoints.""" -# Copyright (c) 2019 SUSE LLC. All rights reserved. +# Copyright (c) 2020 SUSE LLC. All rights reserved. # # This file is part of img_proof. img_proof provides an api and command line # utilities for testing images in the Public Cloud. @@ -78,7 +78,8 @@ tenancy=None, oci_user_id=None, enable_secure_boot=None, - enable_uefi=None + enable_uefi=None, + log_callback=None ): """Creates a cloud framework instance and initiates testing.""" kwargs = { @@ -105,7 +106,8 @@ 'timeout': timeout, 'collect_vm_info': collect_vm_info, 'enable_secure_boot': enable_secure_boot, - 'enable_uefi': enable_uefi + 'enable_uefi': enable_uefi, + 'log_callback': log_callback } cloud_name = cloud_name.lower() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_ec2.py new/img-proof-5.2.0/img_proof/ipa_ec2.py --- old/img-proof-5.1.0/img_proof/ipa_ec2.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/img_proof/ipa_ec2.py 2020-06-07 21:09:18.000000000 +0200 @@ -2,7 +2,7 @@ """Cloud framework module for testing AWS EC2 images.""" -# Copyright (c) 2019 SUSE LLC. All rights reserved. +# Copyright (c) 2020 SUSE LLC. All rights reserved. # # This file is part of img_proof. img_proof provides an api and command line # utilities for testing images in the Public Cloud. @@ -69,7 +69,8 @@ timeout=None, collect_vm_info=None, enable_secure_boot=None, - enable_uefi=None + enable_uefi=None, + log_callback=None ): """Initialize EC2 cloud framework class.""" super(EC2Cloud, self).__init__( @@ -97,7 +98,8 @@ ssh_user, subnet_id, enable_secure_boot, - enable_uefi + enable_uefi, + log_callback ) # Get command line values that are not None cmd_line_values = self._get_non_null_values(locals()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_exceptions.py new/img-proof-5.2.0/img_proof/ipa_exceptions.py --- old/img-proof-5.1.0/img_proof/ipa_exceptions.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/img_proof/ipa_exceptions.py 2020-06-07 21:09:18.000000000 +0200 @@ -65,6 +65,10 @@ """Results subcommand exception.""" +class IpaRedHatException(IpaDistroException): + """Generic Exception for Red Hat distro modules.""" + + class IpaSLESException(IpaDistroException): """Generic Exception for distro modules.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_fedora.py new/img-proof-5.2.0/img_proof/ipa_fedora.py --- old/img-proof-5.1.0/img_proof/ipa_fedora.py 1970-01-01 01:00:00.000000000 +0100 +++ new/img-proof-5.2.0/img_proof/ipa_fedora.py 2020-06-07 21:09:18.000000000 +0200 @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +"""Fedora distro module and sync points.""" + +# Copyright (c) 2020 Neal Gompa. All rights reserved. +# +# This file is part of img_proof. img_proof provides an api and command line +# utilities for testing images in the Public Cloud. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from img_proof.ipa_redhat import RedHat + + +class Fedora(RedHat): + """Fedora distro class.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_gce.py new/img-proof-5.2.0/img_proof/ipa_gce.py --- old/img-proof-5.1.0/img_proof/ipa_gce.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/img_proof/ipa_gce.py 2020-06-07 21:09:18.000000000 +0200 @@ -109,7 +109,8 @@ collect_vm_info=None, image_project=None, enable_secure_boot=None, - enable_uefi=None + enable_uefi=None, + log_callback=None ): super(GCECloud, self).__init__( 'gce', @@ -136,7 +137,8 @@ ssh_user, subnet_id, enable_secure_boot, - enable_uefi + enable_uefi, + log_callback ) self.service_account_file = ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_oci.py new/img-proof-5.2.0/img_proof/ipa_oci.py --- old/img-proof-5.1.0/img_proof/ipa_oci.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/img_proof/ipa_oci.py 2020-06-07 21:09:18.000000000 +0200 @@ -2,7 +2,7 @@ """Cloud module for testing Oracle OCI images.""" -# Copyright (c) 2019 SUSE LLC. All rights reserved. +# Copyright (c) 2020 SUSE LLC. All rights reserved. # # This file is part of ipa. Ipa provides an api and command line # utilities for testing images in the Public Cloud. @@ -65,7 +65,8 @@ tenancy=None, oci_user_id=None, enable_secure_boot=None, - enable_uefi=None + enable_uefi=None, + log_callback=None ): """Initialize OCI cloud framework class.""" super(OCICloud, self).__init__( @@ -93,7 +94,8 @@ ssh_user, subnet_id, enable_secure_boot, - enable_uefi + enable_uefi, + log_callback ) self.availability_domain = ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_redhat.py new/img-proof-5.2.0/img_proof/ipa_redhat.py --- old/img-proof-5.1.0/img_proof/ipa_redhat.py 1970-01-01 01:00:00.000000000 +0100 +++ new/img-proof-5.2.0/img_proof/ipa_redhat.py 2020-06-07 21:09:18.000000000 +0200 @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- + +"""Red Hat distro family module and sync points.""" + +# Copyright (c) 2020 Neal Gompa. All rights reserved. +# +# This file is part of img_proof. img_proof provides an api and command line +# utilities for testing images in the Public Cloud. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from img_proof.ipa_distro import Distro +from img_proof.ipa_exceptions import IpaRedHatException + + +class RedHat(Distro): + """Red Hat distro class.""" + + def get_install_cmd(self): + """Return install package command for Red Hat distributions.""" + return 'dnf --assumeyes --nogpgcheck install' + + def get_refresh_repo_cmd(self): + """Return refresh repo command for Red Hat distributions.""" + return 'dnf --assumeyes makecache' + + def get_stop_ssh_service_cmd(self): + """ + Return command to stop SSH service for Red Hat distributions. + + SSH stop command determined by init system. + """ + if self.init_system == 'systemd': + return 'systemctl stop sshd.service' + elif self.init_system == 'init': + return 'service sshd stop' + else: + raise IpaRedHatException( + 'The init system for this Red Hat system cannot be determined.' + ) + + def get_update_cmd(self): + """Return command to update Red Hat distribution instance.""" + return 'dnf --assumeyes upgrade' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_rhel.py new/img-proof-5.2.0/img_proof/ipa_rhel.py --- old/img-proof-5.1.0/img_proof/ipa_rhel.py 1970-01-01 01:00:00.000000000 +0100 +++ new/img-proof-5.2.0/img_proof/ipa_rhel.py 2020-06-07 21:09:18.000000000 +0200 @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +"""RHEL distro module and sync points.""" + +# Copyright (c) 2020 Neal Gompa. All rights reserved. +# +# This file is part of img_proof. img_proof provides an api and command line +# utilities for testing images in the Public Cloud. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from img_proof.ipa_redhat import RedHat + + +class RHEL(RedHat): + """RHEL distro class.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/ipa_utils.py new/img-proof-5.2.0/img_proof/ipa_utils.py --- old/img-proof-5.1.0/img_proof/ipa_utils.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/img_proof/ipa_utils.py 2020-06-07 21:09:18.000000000 +0200 @@ -2,7 +2,7 @@ """Utility functions.""" -# Copyright (c) 2019 SUSE LLC. All rights reserved. +# Copyright (c) 2020 SUSE LLC. All rights reserved. # # This file is part of img_proof. img_proof provides an api and command line # utilities for testing images in the Public Cloud. @@ -22,6 +22,7 @@ import configparser import fnmatch +import logging import os import random import sys @@ -549,3 +550,18 @@ description or '' ) f.write(out.strip() + '\n') + + +def get_logger(log_level): + """ + Return new console logger at provided log level. + """ + logger = logging.getLogger('img_proof') + logger.setLevel(log_level) + + console_handler = logging.StreamHandler() + console_handler.setLevel(log_level) + console_handler.setFormatter(logging.Formatter('%(message)s')) + + logger.addHandler(console_handler) + return logger diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof/scripts/cli.py new/img-proof-5.2.0/img_proof/scripts/cli.py --- old/img-proof-5.1.0/img_proof/scripts/cli.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/img_proof/scripts/cli.py 2020-06-07 21:09:18.000000000 +0200 @@ -2,7 +2,7 @@ """img-proof CLI endpoints using click library.""" -# Copyright (c) 2019 SUSE LLC. All rights reserved. +# Copyright (c) 2020 SUSE LLC. All rights reserved. # # This file is part of img-proof. img-proof provides an api and command line # utilities for testing images in the Public Cloud. @@ -338,6 +338,8 @@ tests): """Test image in the given framework using the supplied test files.""" no_color = context.obj['no_color'] + logger = ipa_utils.get_logger(log_level) + try: status, results = test_image( cloud, @@ -381,7 +383,8 @@ tenancy, oci_user_id, enable_secure_boot, - enable_uefi + enable_uefi, + logger ) echo_results(results, no_color) sys.exit(status) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof.egg-info/PKG-INFO new/img-proof-5.2.0/img_proof.egg-info/PKG-INFO --- old/img-proof-5.1.0/img_proof.egg-info/PKG-INFO 2020-06-01 22:50:18.000000000 +0200 +++ new/img-proof-5.2.0/img_proof.egg-info/PKG-INFO 2020-06-07 21:10:09.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: img-proof -Version: 5.1.0 +Version: 5.2.0 Summary: Package for automated testing of cloud images. Home-page: https://github.com/SUSE-Enceladus/img-proof Author: SUSE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/img_proof.egg-info/SOURCES.txt new/img-proof-5.2.0/img_proof.egg-info/SOURCES.txt --- old/img-proof-5.1.0/img_proof.egg-info/SOURCES.txt 2020-06-01 22:50:18.000000000 +0200 +++ new/img-proof-5.2.0/img_proof.egg-info/SOURCES.txt 2020-06-07 21:10:09.000000000 +0200 @@ -19,9 +19,12 @@ img_proof/ipa_distro.py img_proof/ipa_ec2.py img_proof/ipa_exceptions.py +img_proof/ipa_fedora.py img_proof/ipa_gce.py img_proof/ipa_oci.py img_proof/ipa_opensuse_leap.py +img_proof/ipa_redhat.py +img_proof/ipa_rhel.py img_proof/ipa_sles.py img_proof/ipa_ssh.py img_proof/ipa_utils.py @@ -45,9 +48,12 @@ tests/test_ipa_controller.py tests/test_ipa_distro.py tests/test_ipa_ec2.py +tests/test_ipa_fedora_distro.py tests/test_ipa_gce.py tests/test_ipa_oci.py tests/test_ipa_opensuse_leap_distro.py +tests/test_ipa_redhat_distro.py +tests/test_ipa_rhel_distro.py tests/test_ipa_sles_distro.py tests/test_ipa_ssh.py tests/test_ipa_utils.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/package/python3-img-proof.spec new/img-proof-5.2.0/package/python3-img-proof.spec --- old/img-proof-5.1.0/package/python3-img-proof.spec 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/package/python3-img-proof.spec 2020-06-07 21:09:18.000000000 +0200 @@ -18,7 +18,7 @@ %bcond_without test Name: python3-img-proof -Version: 5.1.0 +Version: 5.2.0 Release: 0 Summary: Command line and API for testing custom images License: GPL-3.0-or-later @@ -59,7 +59,7 @@ Requires: python3-pytest Requires: python3-testinfra BuildArch: noarch -Obsoletes: python3-ipa < 5.1.0 +Obsoletes: python3-ipa < 5.2.0 %description img-proof provides a command line utility to test images in @@ -70,7 +70,7 @@ Group: Development/Languages/Python Requires: python3-susepubliccloudinfo PreReq: python3-img-proof = %{version} -Obsoletes: python3-ipa-tests < 5.1.0 +Obsoletes: python3-ipa-tests < 5.2.0 %description tests Directory of infrastructure tests for testing images. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/setup.cfg new/img-proof-5.2.0/setup.cfg --- old/img-proof-5.1.0/setup.cfg 2020-06-01 22:50:19.000000000 +0200 +++ new/img-proof-5.2.0/setup.cfg 2020-06-07 21:10:09.000000000 +0200 @@ -1,5 +1,5 @@ [bumpversion] -current_version = 5.1.0 +current_version = 5.2.0 commit = True tag = False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/setup.py new/img-proof-5.2.0/setup.py --- old/img-proof-5.1.0/setup.py 2020-06-01 22:49:26.000000000 +0200 +++ new/img-proof-5.2.0/setup.py 2020-06-07 21:09:18.000000000 +0200 @@ -43,7 +43,7 @@ setup( name='img-proof', - version='5.1.0', + version='5.2.0', description="Package for automated testing of cloud images.", long_description=readme, long_description_content_type="text/markdown", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/tests/test_ipa_fedora_distro.py new/img-proof-5.2.0/tests/test_ipa_fedora_distro.py --- old/img-proof-5.1.0/tests/test_ipa_fedora_distro.py 1970-01-01 01:00:00.000000000 +0100 +++ new/img-proof-5.2.0/tests/test_ipa_fedora_distro.py 2020-06-07 21:09:18.000000000 +0200 @@ -0,0 +1,39 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- + +"""img_proof Fedora distro unit tests.""" + +# Copyright (c) 2020 Neal Gompa. All rights reserved. +# +# This file is part of img_proof. img_proof provides an api and command line +# utilities for testing images in the Public Cloud. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from img_proof.ipa_fedora import Fedora + +from unittest.mock import MagicMock, patch + + +def test_fedora_set_init_system(): + """Test Fedora set init system method.""" + client = MagicMock() + fedora = Fedora() + + with patch('img_proof.ipa_utils.execute_ssh_command', + MagicMock(return_value='systemd')) as mocked: + fedora._set_init_system(client) + + assert fedora.init_system == 'systemd' + mocked.assert_called_once_with(client, 'ps -p 1 -o comm=') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/tests/test_ipa_redhat_distro.py new/img-proof-5.2.0/tests/test_ipa_redhat_distro.py --- old/img-proof-5.1.0/tests/test_ipa_redhat_distro.py 1970-01-01 01:00:00.000000000 +0100 +++ new/img-proof-5.2.0/tests/test_ipa_redhat_distro.py 2020-06-07 21:09:18.000000000 +0200 @@ -0,0 +1,161 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- + +"""img_proof Red Hat distro unit tests.""" + +# Copyright (c) 2020 Neal Gompa. All rights reserved. +# +# This file is part of img_proof. img_proof provides an api and command line +# utilities for testing images in the Public Cloud. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import pytest + +from img_proof.ipa_exceptions import IpaDistroException, IpaRedHatException +from img_proof.ipa_redhat import RedHat + +from unittest.mock import MagicMock, patch + + +def test_redhat_get_stop_ssh_cmd(): + """Test Red Hat get stop ssh cmd method.""" + redhat = RedHat() + + redhat.init_system = 'systemd' + assert redhat.get_stop_ssh_service_cmd() == 'systemctl stop sshd.service' + + redhat.init_system = 'init' + assert redhat.get_stop_ssh_service_cmd() == 'service sshd stop' + + redhat.init_system = 'fake' + with pytest.raises(IpaRedHatException) as error: + redhat.get_stop_ssh_service_cmd() + assert str(error.value) == \ + 'The init system for this Red Hat system cannot be determined.' + + +def test_redhat_install_package(): + """Test install package method for Red Hat distro.""" + client = MagicMock() + redhat = RedHat() + + with patch('img_proof.ipa_utils.execute_ssh_command', + MagicMock(return_value='')) as mocked: + redhat.install_package(client, 'python') + + mocked.assert_called_once_with( + client, + "sudo sh -c 'dnf --assumeyes --nogpgcheck install python'" + ) + + +@patch('img_proof.ipa_distro.time') +def test_redhat_reboot(mock_time): + """Test soft reboot method for Red Hat distro.""" + client = MagicMock() + channel = MagicMock() + transport = MagicMock() + transport.open_session.return_value = channel + client.get_transport.return_value = transport + redhat = RedHat() + redhat.init_system = 'systemd' + + redhat.reboot(client) + + channel.exec_command.assert_called_once_with( + "sudo sh -c '(sleep 1 && systemctl stop sshd.service " + "&& shutdown -r now &)' && exit" + ) + + +def test_redhat_reboot_exception(): + """Test soft reboot method exception for Red Hat distro.""" + client = MagicMock() + client.get_transport.side_effect = Exception('ERROR!') + redhat = RedHat() + redhat.init_system = 'systemd' + + with pytest.raises(IpaDistroException): + redhat.reboot(client) + + +def test_redhat_update(): + """Test update method for Red Hat distro.""" + client = MagicMock() + redhat = RedHat() + + with patch('img_proof.ipa_utils.execute_ssh_command', + MagicMock(return_value='Update finished!')) as mocked: + output = redhat.update(client) + + mocked.assert_called_once_with( + client, + "sudo sh -c 'dnf --assumeyes makecache;dnf --assumeyes upgrade'" + ) + assert output == 'Update finished!' + + +def test_redhat_update_exception(): + """Test update method exception for Red Hat distro.""" + client = MagicMock() + redhat = RedHat() + + with patch('img_proof.ipa_utils.execute_ssh_command', MagicMock( + side_effect=Exception('ERROR!'))) as mocked: + pytest.raises( + IpaDistroException, + redhat.update, + client + ) + + mocked.assert_called_once_with( + client, + "sudo sh -c 'dnf --assumeyes makecache;dnf --assumeyes upgrade'" + ) + + +def test_redhat_refresh(): + """Test refresh method for Red Hat distro.""" + client = MagicMock() + redhat = RedHat() + + with patch('img_proof.ipa_utils.execute_ssh_command', + MagicMock(return_value='Refresh finished!')) as mocked: + output = redhat.repo_refresh(client) + + mocked.assert_called_once_with( + client, + "sudo sh -c 'dnf --assumeyes makecache'" + ) + assert output == 'Refresh finished!' + + +def test_redhat_refresh_exception(): + """Test refresh method exception for Red Hat distro.""" + client = MagicMock() + redhat = RedHat() + + with patch('img_proof.ipa_utils.execute_ssh_command', MagicMock( + side_effect=Exception('ERROR!'))) as mocked: + pytest.raises( + IpaDistroException, + redhat.repo_refresh, + client + ) + + mocked.assert_called_once_with( + client, + "sudo sh -c 'dnf --assumeyes makecache'" + ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/img-proof-5.1.0/tests/test_ipa_rhel_distro.py new/img-proof-5.2.0/tests/test_ipa_rhel_distro.py --- old/img-proof-5.1.0/tests/test_ipa_rhel_distro.py 1970-01-01 01:00:00.000000000 +0100 +++ new/img-proof-5.2.0/tests/test_ipa_rhel_distro.py 2020-06-07 21:09:18.000000000 +0200 @@ -0,0 +1,39 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- + +"""img_proof RHEL distro unit tests.""" + +# Copyright (c) 2020 Neal Gompa. All rights reserved. +# +# This file is part of img_proof. img_proof provides an api and command line +# utilities for testing images in the Public Cloud. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from img_proof.ipa_rhel import RHEL + +from unittest.mock import MagicMock, patch + + +def test_rhel_set_init_system(): + """Test RHEL set init system method.""" + client = MagicMock() + rhel = RHEL() + + with patch('img_proof.ipa_utils.execute_ssh_command', + MagicMock(return_value='systemd')) as mocked: + rhel._set_init_system(client) + + assert rhel.init_system == 'systemd' + mocked.assert_called_once_with(client, 'ps -p 1 -o comm=')