Hello community,

here is the log from the commit of package python3-img-proof for 
openSUSE:Factory checked in at 2020-08-19 18:51:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-img-proof (Old)
 and      /work/SRC/openSUSE:Factory/.python3-img-proof.new.3399 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-img-proof"

Wed Aug 19 18:51:18 2020 rev:13 rq:827675 version:6.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-img-proof/python3-img-proof.changes      
2020-08-07 14:10:39.110150953 +0200
+++ 
/work/SRC/openSUSE:Factory/.python3-img-proof.new.3399/python3-img-proof.changes
    2020-08-19 18:52:43.699716593 +0200
@@ -1,0 +2,8 @@
+Tue Aug 18 19:53:54 UTC 2020 - Sean Marlow <[email protected]>
+
+- Update to v6.0.0 (2020-08-18)
+  + Use post init workflow.
+  + Break connection loop on certain exceptions.
+  + Create empty console log method for ssh backend. 
+
+-------------------------------------------------------------------

Old:
----
  img-proof-5.3.0.tar.gz

New:
----
  img-proof-6.0.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python3-img-proof.spec ++++++
--- /var/tmp/diff_new_pack.1mcnBj/_old  2020-08-19 18:52:47.435718578 +0200
+++ /var/tmp/diff_new_pack.1mcnBj/_new  2020-08-19 18:52:47.439718580 +0200
@@ -18,7 +18,7 @@
 
 %bcond_without test
 Name:           python3-img-proof
-Version:        5.3.0
+Version:        6.0.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 < 6.0.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 < 6.0.0
 
 %description tests
 Directory of infrastructure tests for testing images.

++++++ img-proof-5.3.0.tar.gz -> img-proof-6.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/CHANGES.md 
new/img-proof-6.0.0/CHANGES.md
--- old/img-proof-5.3.0/CHANGES.md      2020-08-06 22:46:08.000000000 +0200
+++ new/img-proof-6.0.0/CHANGES.md      2020-08-18 21:44:44.000000000 +0200
@@ -1,3 +1,13 @@
+v6.0.0 (2020-08-18)
+===================
+
+- Use post init workflow.
+  [\#261](https://github.com/SUSE-Enceladus/ipa/pull/261)
+- Break connection loop on certain exceptions.
+  [\#262](https://github.com/SUSE-Enceladus/ipa/pull/262)
+- Create empty console log method for ssh backend.
+  [\#263](https://github.com/SUSE-Enceladus/ipa/pull/263)
+
 v5.3.0 (2020-08-06)
 ===================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/PKG-INFO new/img-proof-6.0.0/PKG-INFO
--- old/img-proof-5.3.0/PKG-INFO        2020-08-06 22:47:15.000000000 +0200
+++ new/img-proof-6.0.0/PKG-INFO        2020-08-18 21:45:49.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: img-proof
-Version: 5.3.0
+Version: 6.0.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.3.0/img_proof/__init__.py 
new/img-proof-6.0.0/img_proof/__init__.py
--- old/img-proof-5.3.0/img_proof/__init__.py   2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/img_proof/__init__.py   2020-08-18 21:44:44.000000000 
+0200
@@ -22,4 +22,4 @@
 
 __author__ = """SUSE"""
 __email__ = '[email protected]'
-__version__ = '5.3.0'
+__version__ = '6.0.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/img_proof/ipa_azure.py 
new/img-proof-6.0.0/img_proof/ipa_azure.py
--- old/img-proof-5.3.0/img_proof/ipa_azure.py  2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/img_proof/ipa_azure.py  2020-08-18 21:44:44.000000000 
+0200
@@ -35,76 +35,18 @@
 
 class AzureCloud(IpaCloud):
     """Class for testing instances in Azure."""
+    cloud = 'azure'
 
-    def __init__(
-        self,
-        accelerated_networking=False,
-        cleanup=None,
-        config=None,
-        description=None,
-        distro_name=None,
-        early_exit=None,
-        history_log=None,
-        image_id=None,
-        inject=None,
-        instance_type=None,
-        log_level=None,
-        no_default_test_dirs=None,
-        cloud_config=None,
-        region=None,
-        results_dir=None,
-        running_instance_id=None,
-        service_account_file=None,
-        ssh_private_key_file=None,
-        ssh_user=None,
-        subnet_id=None,
-        test_dirs=None,
-        test_files=None,
-        timeout=None,
-        vnet_name=None,
-        vnet_resource_group=None,
-        collect_vm_info=None,
-        enable_secure_boot=None,
-        enable_uefi=None,
-        log_callback=None,
-        prefix_name=None,
-        retry_count=None
-    ):
-        """Initialize Azure Cloud class."""
-        super(AzureCloud, self).__init__(
-            'azure',
-            cleanup,
-            config,
-            description,
-            distro_name,
-            early_exit,
-            history_log,
-            image_id,
-            inject,
-            instance_type,
-            log_level,
-            no_default_test_dirs,
-            cloud_config,
-            region,
-            results_dir,
-            running_instance_id,
-            test_dirs,
-            test_files,
-            timeout,
-            collect_vm_info,
-            ssh_private_key_file,
-            ssh_user,
-            subnet_id,
-            enable_secure_boot,
-            enable_uefi,
-            log_callback,
-            prefix_name,
-            retry_count
-        )
+    def post_init(self):
+        """Initialize Azure cloud framework class."""
 
-        self.vnet_name = vnet_name or self.ipa_config['vnet_name']
+        self.vnet_name = (
+                self.custom_args.get('vnet_name')
+                or self.ipa_config['vnet_name']
+        )
         self.vnet_resource_group = (
-                vnet_resource_group or self.ipa_config['vnet_resource_group']
+            self.custom_args.get('vnet_resource_group')
+            or self.ipa_config['vnet_resource_group']
         )
 
         subnet_args = [
@@ -117,7 +59,8 @@
             )
 
         self.service_account_file = (
-            service_account_file or self.ipa_config['service_account_file']
+            self.custom_args.get('service_account_file')
+            or self.ipa_config['service_account_file']
         )
         if not self.service_account_file:
             raise AzureCloudException(
@@ -134,8 +77,8 @@
             )
 
         self.accelerated_networking = (
-            accelerated_networking or
-            self.ipa_config['accelerated_networking']
+            self.custom_args.get('accelerated_networking')
+            or self.ipa_config['accelerated_networking']
         )
         self.ssh_user = self.ssh_user or AZURE_DEFAULT_USER
         self.ssh_public_key = self._get_ssh_public_key()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/img_proof/ipa_cloud.py 
new/img-proof-6.0.0/img_proof/ipa_cloud.py
--- old/img-proof-5.3.0/img_proof/ipa_cloud.py  2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/img_proof/ipa_cloud.py  2020-08-18 21:44:44.000000000 
+0200
@@ -73,10 +73,10 @@
     modules extend the base class and implement cloud
     specific methods for launching and managing instances.
     """
+    cloud = 'base'
 
     def __init__(
         self,
-        cloud,
         cleanup=None,
         config=None,
         description=None,
@@ -103,7 +103,8 @@
         enable_uefi=None,
         log_callback=None,
         prefix_name=None,
-        retry_count=None
+        retry_count=None,
+        custom_args=None
     ):
         """Initialize base cloud framework class."""
         super(IpaCloud, self).__init__()
@@ -112,7 +113,7 @@
 
         ipa_utils.clear_cache()
 
-        self.cloud = cloud
+        self.custom_args = custom_args if custom_args else {}
         self.host_key_fingerprint = None
         self.instance_ip = None
 
@@ -204,6 +205,10 @@
         }
 
         self._parse_test_files(test_dirs, self.no_default_test_dirs)
+        self.post_init()
+
+    def post_init(self):
+        pass
 
     def _get_instance(self):
         raise NotImplementedError(NOT_IMPLEMENTED)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/img_proof/ipa_controller.py 
new/img-proof-6.0.0/img_proof/ipa_controller.py
--- old/img-proof-5.3.0/img_proof/ipa_controller.py     2020-08-06 
22:46:08.000000000 +0200
+++ new/img-proof-6.0.0/img_proof/ipa_controller.py     2020-08-18 
21:44:44.000000000 +0200
@@ -116,43 +116,41 @@
 
     cloud_name = cloud_name.lower()
     if cloud_name == 'azure':
-        cloud = AzureCloud(
-            accelerated_networking=accelerated_networking,
-            service_account_file=service_account_file,
-            vnet_name=vnet_name,
-            vnet_resource_group=vnet_resource_group,
-            **kwargs
-        )
+        kwargs['custom_args'] = {
+            'accelerated_networking': accelerated_networking,
+            'service_account_file': service_account_file,
+            'vnet_name': vnet_name,
+            'vnet_resource_group': vnet_resource_group
+        }
+        cloud = AzureCloud(**kwargs)
     elif cloud_name == 'ec2':
-        cloud = EC2Cloud(
-            access_key_id=access_key_id,
-            account_name=account,
-            secret_access_key=secret_access_key,
-            security_group_id=security_group_id,
-            ssh_key_name=ssh_key_name,
-            **kwargs
-        )
+        kwargs['custom_args'] = {
+            'access_key_id': access_key_id,
+            'account_name': account,
+            'secret_access_key': secret_access_key,
+            'security_group_id': security_group_id,
+            'ssh_key_name': ssh_key_name
+        }
+        cloud = EC2Cloud(**kwargs)
     elif cloud_name == 'gce':
-        cloud = GCECloud(
-            service_account_file=service_account_file,
-            image_project=image_project,
-            **kwargs
-        )
+        kwargs['custom_args'] = {
+            'service_account_file': service_account_file,
+            'image_project': image_project
+        }
+        cloud = GCECloud(**kwargs)
     elif cloud_name == 'ssh':
-        cloud = SSHCloud(
-            ip_address=ip_address,
-            **kwargs
-        )
+        kwargs['custom_args'] = {'ip_address': ip_address}
+        cloud = SSHCloud(**kwargs)
     elif cloud_name == 'oci':
-        cloud = OCICloud(
-            compartment_id=compartment_id,
-            availability_domain=availability_domain,
-            signing_key_fingerprint=signing_key_fingerprint,
-            signing_key_file=signing_key_file,
-            tenancy=tenancy,
-            oci_user_id=oci_user_id,
-            **kwargs
-        )
+        kwargs['custom_args'] = {
+            'compartment_id': compartment_id,
+            'availability_domain': availability_domain,
+            'signing_key_fingerprint': signing_key_fingerprint,
+            'signing_key_file': signing_key_file,
+            'tenancy': tenancy,
+            'oci_user_id': oci_user_id
+        }
+        cloud = OCICloud(**kwargs)
     else:
         raise IpaControllerException(
             'Cloud framework: %s unavailable.' % cloud_name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/img_proof/ipa_ec2.py 
new/img-proof-6.0.0/img_proof/ipa_ec2.py
--- old/img-proof-5.3.0/img_proof/ipa_ec2.py    2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/img_proof/ipa_ec2.py    2020-08-18 21:44:44.000000000 
+0200
@@ -38,78 +38,16 @@
 
 class EC2Cloud(IpaCloud):
     """Cloud framework class for testing AWS EC2 images."""
+    cloud = 'ec2'
 
-    def __init__(
-        self,
-        access_key_id=None,
-        account_name=None,
-        cleanup=None,
-        config=None,
-        description=None,
-        distro_name=None,
-        early_exit=None,
-        history_log=None,
-        image_id=None,
-        inject=None,
-        instance_type=None,
-        log_level=None,
-        no_default_test_dirs=None,
-        cloud_config=None,
-        region=None,
-        results_dir=None,
-        running_instance_id=None,
-        secret_access_key=None,
-        security_group_id=None,
-        ssh_key_name=None,
-        ssh_private_key_file=None,
-        ssh_user=None,
-        subnet_id=None,
-        test_dirs=None,
-        test_files=None,
-        timeout=None,
-        collect_vm_info=None,
-        enable_secure_boot=None,
-        enable_uefi=None,
-        log_callback=None,
-        prefix_name=None,
-        retry_count=None
-    ):
+    def post_init(self):
         """Initialize EC2 cloud framework class."""
-        super(EC2Cloud, self).__init__(
-            'ec2',
-            cleanup,
-            config,
-            description,
-            distro_name,
-            early_exit,
-            history_log,
-            image_id,
-            inject,
-            instance_type,
-            log_level,
-            no_default_test_dirs,
-            cloud_config,
-            region,
-            results_dir,
-            running_instance_id,
-            test_dirs,
-            test_files,
-            timeout,
-            collect_vm_info,
-            ssh_private_key_file,
-            ssh_user,
-            subnet_id,
-            enable_secure_boot,
-            enable_uefi,
-            log_callback,
-            prefix_name,
-            retry_count
-        )
+
         # Get command line values that are not None
-        cmd_line_values = self._get_non_null_values(locals())
+        cmd_line_values = self._get_non_null_values(self.custom_args)
 
         self.zone = None
-        self.account_name = account_name
+        self.account_name = self.custom_args.get('account_name')
 
         if not self.account_name:
             self.logger.debug(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/img_proof/ipa_gce.py 
new/img-proof-6.0.0/img_proof/ipa_gce.py
--- old/img-proof-5.3.0/img_proof/ipa_gce.py    2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/img_proof/ipa_gce.py    2020-08-18 21:44:44.000000000 
+0200
@@ -81,72 +81,13 @@
     """
     Cloud framework class for testing Google Compute Engine (GCE) images.
     """
+    cloud = 'gce'
 
-    def __init__(
-        self,
-        cleanup=None,
-        config=None,
-        description=None,
-        distro_name=None,
-        early_exit=None,
-        history_log=None,
-        image_id=None,
-        inject=None,
-        instance_type=None,
-        log_level=None,
-        no_default_test_dirs=None,
-        cloud_config=None,
-        region=None,
-        results_dir=None,
-        running_instance_id=None,
-        service_account_file=None,
-        ssh_private_key_file=None,
-        ssh_user=None,
-        subnet_id=None,
-        test_dirs=None,
-        test_files=None,
-        timeout=None,
-        collect_vm_info=None,
-        image_project=None,
-        enable_secure_boot=None,
-        enable_uefi=None,
-        log_callback=None,
-        prefix_name=None,
-        retry_count=None
-    ):
-        super(GCECloud, self).__init__(
-            'gce',
-            cleanup,
-            config,
-            description,
-            distro_name,
-            early_exit,
-            history_log,
-            image_id,
-            inject,
-            instance_type,
-            log_level,
-            no_default_test_dirs,
-            cloud_config,
-            region,
-            results_dir,
-            running_instance_id,
-            test_dirs,
-            test_files,
-            timeout,
-            collect_vm_info,
-            ssh_private_key_file,
-            ssh_user,
-            subnet_id,
-            enable_secure_boot,
-            enable_uefi,
-            log_callback,
-            prefix_name,
-            retry_count
-        )
+    def post_init(self):
+        """Initialize EC2 cloud framework class."""
 
         self.service_account_file = (
-            service_account_file or
+            self.custom_args.get('service_account_file') or
             self.ipa_config['service_account_file']
         )
         if not self.service_account_file:
@@ -165,7 +106,7 @@
 
         self.ssh_user = self.ssh_user or GCE_DEFAULT_USER
         self.ssh_public_key = self._get_ssh_public_key()
-        self.image_project = image_project
+        self.image_project = self.custom_args.get('image_project')
 
         self.credentials = self._get_credentials()
         self.compute_driver = self._get_driver()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/img_proof/ipa_oci.py 
new/img-proof-6.0.0/img_proof/ipa_oci.py
--- old/img-proof-5.3.0/img_proof/ipa_oci.py    2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/img_proof/ipa_oci.py    2020-08-18 21:44:44.000000000 
+0200
@@ -33,77 +33,14 @@
 
 class OCICloud(IpaCloud):
     """Cloud framework class for testing Oracle OCI images."""
+    cloud = 'oci'
 
-    def __init__(
-        self,
-        cleanup=None,
-        config=None,
-        description=None,
-        distro_name=None,
-        early_exit=None,
-        history_log=None,
-        image_id=None,
-        inject=None,
-        instance_type=None,
-        log_level=None,
-        no_default_test_dirs=None,
-        cloud_config=None,
-        region=None,
-        results_dir=None,
-        running_instance_id=None,
-        ssh_private_key_file=None,
-        ssh_user=None,
-        subnet_id=None,
-        test_dirs=None,
-        test_files=None,
-        timeout=None,
-        collect_vm_info=None,
-        compartment_id=None,
-        availability_domain=None,
-        signing_key_fingerprint=None,
-        signing_key_file=None,
-        tenancy=None,
-        oci_user_id=None,
-        enable_secure_boot=None,
-        enable_uefi=None,
-        log_callback=None,
-        prefix_name=None,
-        retry_count=None
-    ):
+    def post_init(self):
         """Initialize OCI cloud framework class."""
-        super(OCICloud, self).__init__(
-            'oci',
-            cleanup,
-            config,
-            description,
-            distro_name,
-            early_exit,
-            history_log,
-            image_id,
-            inject,
-            instance_type,
-            log_level,
-            no_default_test_dirs,
-            cloud_config,
-            region,
-            results_dir,
-            running_instance_id,
-            test_dirs,
-            test_files,
-            timeout,
-            collect_vm_info,
-            ssh_private_key_file,
-            ssh_user,
-            subnet_id,
-            enable_secure_boot,
-            enable_uefi,
-            log_callback,
-            prefix_name,
-            retry_count
-        )
 
         self.availability_domain = (
-            availability_domain or self.ipa_config['availability_domain']
+            self.custom_args.get('availability_domain')
+            or self.ipa_config['availability_domain']
         )
 
         if not self.availability_domain:
@@ -112,7 +49,8 @@
             )
 
         self.compartment_id = (
-            compartment_id or self.ipa_config['compartment_id']
+            self.custom_args.get('compartment_id')
+            or self.ipa_config['compartment_id']
         )
 
         if not self.compartment_id:
@@ -126,15 +64,20 @@
             )
 
         self.ssh_user = self.ssh_user or OCI_DEFAULT_USER
-        self.subnet_id = subnet_id or self.ipa_config['subnet_id']
-        self.oci_user_id = oci_user_id or self.ipa_config['oci_user_id']
-        self.tenancy = tenancy or self.ipa_config['tenancy']
+        self.oci_user_id = (
+            self.custom_args.get('oci_user_id')
+            or self.ipa_config['oci_user_id']
+        )
+        self.tenancy = (
+            self.custom_args.get('tenancy') or self.ipa_config['tenancy']
+        )
         self.signing_key_fingerprint = (
-            signing_key_fingerprint
+            self.custom_args.get('signing_key_fingerprint')
             or self.ipa_config['signing_key_fingerprint']
         )
         self.signing_key_file = (
-            signing_key_file or self.ipa_config['signing_key_file']
+            self.custom_args.get('signing_key_file')
+            or self.ipa_config['signing_key_file']
         )
 
         config = self._get_config()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/img_proof/ipa_ssh.py 
new/img-proof-6.0.0/img_proof/ipa_ssh.py
--- old/img-proof-5.3.0/img_proof/ipa_ssh.py    2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/img_proof/ipa_ssh.py    2020-08-18 21:44:44.000000000 
+0200
@@ -26,69 +26,19 @@
 
 class SSHCloud(IpaCloud):
     """Class for testing instances in Azure."""
+    cloud = 'ssh'
 
-    def __init__(
-        self,
-        cleanup=None,
-        config=None,
-        description=None,
-        distro_name=None,
-        early_exit=None,
-        history_log=None,
-        image_id=None,  # Not used in SSH
-        inject=None,
-        instance_type=None,  # Not used in SSH
-        ip_address=None,
-        log_level=30,
-        no_default_test_dirs=False,
-        cloud_config=None,
-        region=None,  # Not used in SSH
-        results_dir=None,
-        running_instance_id=None,  # Not used in SSH
-        ssh_private_key_file=None,
-        ssh_user=None,
-        subnet_id=None,  # Not used in SSH
-        test_dirs=None,
-        test_files=None,
-        timeout=None,
-        collect_vm_info=None
-    ):
-        """Initialize Azure cloud class."""
-        super(SSHCloud, self).__init__(
-            'ssh',
-            cleanup,
-            config,
-            description,
-            distro_name,
-            early_exit,
-            history_log,
-            image_id,
-            inject,
-            instance_type,
-            log_level,
-            no_default_test_dirs,
-            cloud_config,
-            region,
-            results_dir,
-            running_instance_id,
-            test_dirs,
-            test_files,
-            timeout,
-            collect_vm_info,
-            ssh_private_key_file,
-            ssh_user,
-            subnet_id
-        )
+    def post_init(self):
+        """Initialize SSH cloud class."""
 
         # Cannot cleanup SSH instance
         self.cleanup = False
+        self.instance_ip = self.custom_args.get('ip_address')
 
-        if not ip_address:
+        if not self.instance_ip:
             raise SSHCloudException(
                 'IP address is required to connect to instance.'
             )
-        else:
-            self.instance_ip = ip_address
 
         if not self.ssh_private_key_file:
             raise SSHCloudException(
@@ -120,6 +70,12 @@
         """
         pass
 
+    def get_console_log(self):
+        """
+        Return console log output if it is available.
+        """
+        return ''  # No console log for SSH backend
+
     def _launch_instance(self):
         """
         Do nothing.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/img_proof/ipa_utils.py 
new/img-proof-6.0.0/img_proof/ipa_utils.py
--- old/img-proof-5.3.0/img_proof/ipa_utils.py  2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/img_proof/ipa_utils.py  2020-08-18 21:44:44.000000000 
+0200
@@ -35,6 +35,7 @@
 from contextlib import contextmanager
 from string import ascii_lowercase
 from tempfile import NamedTemporaryFile
+from paramiko.ssh_exception import AuthenticationException
 
 from img_proof.ipa_constants import SYNC_POINTS
 from img_proof.ipa_exceptions import IpaSSHException, IpaUtilsException
@@ -81,6 +82,8 @@
                 key_filename=ssh_private_key_file,
                 timeout=timeout
             )
+        except (FileNotFoundError, AuthenticationException):
+            raise
         except:  # noqa: E722
             attempts -= 1
             time.sleep(10)
@@ -281,6 +284,16 @@
                 timeout=wait_period
             )
             execute_ssh_command(client, 'ls')
+        except FileNotFoundError:
+            raise IpaSSHException(
+                'SSH private key file {key_file} not found.'.format(
+                    key_file=ssh_private_key_file
+                )
+            )
+        except AuthenticationException:
+            raise IpaSSHException(
+                'Authentication failed while establishing SSH connection.'
+            )
         except:  # noqa: E722
             if client:
                 client.close()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/img_proof.egg-info/PKG-INFO 
new/img-proof-6.0.0/img_proof.egg-info/PKG-INFO
--- old/img-proof-5.3.0/img_proof.egg-info/PKG-INFO     2020-08-06 
22:47:14.000000000 +0200
+++ new/img-proof-6.0.0/img_proof.egg-info/PKG-INFO     2020-08-18 
21:45:48.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: img-proof
-Version: 5.3.0
+Version: 6.0.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.3.0/package/python3-img-proof.spec 
new/img-proof-6.0.0/package/python3-img-proof.spec
--- old/img-proof-5.3.0/package/python3-img-proof.spec  2020-08-06 
22:46:08.000000000 +0200
+++ new/img-proof-6.0.0/package/python3-img-proof.spec  2020-08-18 
21:44:44.000000000 +0200
@@ -18,7 +18,7 @@
 
 %bcond_without test
 Name:           python3-img-proof
-Version:        5.3.0
+Version:        6.0.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.3.0
+Obsoletes:      python3-ipa < 6.0.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.3.0
+Obsoletes:      python3-ipa-tests < 6.0.0
 
 %description tests
 Directory of infrastructure tests for testing images.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/setup.cfg 
new/img-proof-6.0.0/setup.cfg
--- old/img-proof-5.3.0/setup.cfg       2020-08-06 22:47:15.000000000 +0200
+++ new/img-proof-6.0.0/setup.cfg       2020-08-18 21:45:49.000000000 +0200
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 5.3.0
+current_version = 6.0.0
 commit = True
 tag = False
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/setup.py new/img-proof-6.0.0/setup.py
--- old/img-proof-5.3.0/setup.py        2020-08-06 22:46:08.000000000 +0200
+++ new/img-proof-6.0.0/setup.py        2020-08-18 21:44:44.000000000 +0200
@@ -43,7 +43,7 @@
 
 setup(
     name='img-proof',
-    version='5.3.0',
+    version='6.0.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.3.0/tests/test_ipa_azure.py 
new/img-proof-6.0.0/tests/test_ipa_azure.py
--- old/img-proof-5.3.0/tests/test_ipa_azure.py 2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/tests/test_ipa_azure.py 2020-08-18 21:44:44.000000000 
+0200
@@ -43,10 +43,12 @@
             'image_id': 'another:fake:image:id',
             'no_default_test_dirs': True,
             'running_instance_id': 'fakeinstance',
-            'service_account_file': 'tests/azure/test-sa.json',
             'ssh_private_key_file': 'tests/data/ida_test',
             'test_dirs': 'tests/data/tests',
-            'test_files': ['test_image']
+            'test_files': ['test_image'],
+            'custom_args': {
+                'service_account_file': 'tests/azure/test-sa.json'
+            }
         }
 
     @patch.object(AzureCloud, '_get_management_client')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/tests/test_ipa_cloud.py 
new/img-proof-6.0.0/tests/test_ipa_cloud.py
--- old/img-proof-5.3.0/tests/test_ipa_cloud.py 2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/tests/test_ipa_cloud.py 2020-08-18 21:44:44.000000000 
+0200
@@ -33,8 +33,6 @@
 from unittest.mock import call, MagicMock, patch
 from tempfile import TemporaryDirectory
 
-args = ['ec2']
-
 NOT_IMPL_METHODS = [
     '_get_instance',
     '_get_instance_state',
@@ -83,7 +81,7 @@
     )
     def test_cloud_not_implemented_methods(self, method):
         """Confirm methods raise not implemented exception."""
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
 
         with pytest.raises(NotImplementedError) as error:
             getattr(cloud, method)()
@@ -92,7 +90,7 @@
     def test_cloud_distro_required(self):
         """Test exception raised if no distro provided."""
         with pytest.raises(IpaCloudException) as error:
-            IpaCloud(*args, config='tests/data/config')
+            IpaCloud(config='tests/data/config')
 
         assert str(error.value) == \
             'Distro name is required.'
@@ -101,7 +99,6 @@
         """Test exception if no running instance or image id provided."""
         with pytest.raises(IpaCloudException) as error:
             IpaCloud(
-                *args,
                 config='tests/data/config',
                 distro_name='SLES'
             )
@@ -112,7 +109,7 @@
     @patch.object(ipa_utils, 'get_ssh_client')
     def test_cloud_get_ssh_client(self, mock_get_ssh_client):
         """Test get ssh client method."""
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
 
         cloud.instance_ip = '127.0.0.1'
         cloud.ssh_user = 'ec2-user'
@@ -131,7 +128,7 @@
     def test_cloud_get_user_data(self, mock_get_ssh_key):
         mock_get_ssh_key.return_value = b'testkey12345'
 
-        provider = IpaCloud(*args, **self.kwargs)
+        provider = IpaCloud(**self.kwargs)
 
         result = provider._get_user_data()
 
@@ -141,7 +138,7 @@
 
     def test_cloud_get_non_null_values(self):
         """Test cloud get non null values method."""
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
 
         data = {'region': 'us-east-1', 'type': None}
 
@@ -152,7 +149,7 @@
 
     def test_cloud_merge_results(self):
         """Test merge results output."""
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
 
         results = {
             "tests": [
@@ -184,7 +181,7 @@
             assert cloud.results['tests'][0][key] == val
 
     def test_process_test_results(self):
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud._process_test_results(5.0, 'test_test')
 
         assert cloud.results['summary']['duration'] == 5.0
@@ -202,7 +199,7 @@
         mock_pytest.return_value = 0
         mock_merge_results.return_value = None
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
 
         cloud.terminate = True
         cloud.results['info'] = {
@@ -220,7 +217,7 @@
 
     def test_cloud_invalid_distro_name(self):
         """Test invalid distro name provided raises exception."""
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.distro_name = 'BadDistro'
 
         with pytest.raises(IpaCloudException) as error:
@@ -238,7 +235,7 @@
         mock_instance_running.return_value = False
         mock_start_instance.return_value = None
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud._start_instance_if_stopped()
 
         assert mock_instance_running.call_count == 1
@@ -249,7 +246,7 @@
         client = MagicMock()
         mock_exec_cmd.return_value = 'command executed successfully!'
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.log_file = 'fake_file.name'
 
         with patch('builtins.open', create=True) as mock_open:
@@ -269,7 +266,7 @@
 
         mock_extract_archive.return_value = 'archive extracted successfully!'
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.log_file = 'fake_file.name'
 
         with patch('builtins.open', create=True) as mock_open:
@@ -301,7 +298,7 @@
         mock_start_instance.return_value = None
         mock_set_instance_ip.return_value = None
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.instance_ip = '0.0.0.0'
         cloud.hard_reboot_instance()
 
@@ -316,7 +313,7 @@
         file_path = '/home/user/test.file'
         basename = 'test.file'
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         out = cloud.put_file(client, file_path)
 
         assert out == basename
@@ -330,7 +327,7 @@
         distro = MagicMock()
         distro.install_package.return_value = 'package install successful!'
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.log_file = 'fake_file.name'
         cloud.distro = distro
 
@@ -361,7 +358,7 @@
             'test.noarch.rpm', 'test.tar.xz', 'test.py'
         ]
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.inject = 'tests/data/injection/test_injection.yaml'
 
         cloud.process_injection_file(client)
@@ -406,7 +403,7 @@
         mock_get_console_log.return_value = 'Console log output...'
         self.kwargs['running_instance_id'] = 'fakeinstance'
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         with pytest.raises(IpaCloudException) as error:
             cloud.test_image()
         assert str(error.value) == 'Unable to connect to instance: ERROR!'
@@ -437,7 +434,7 @@
         self.kwargs['running_instance_id'] = 'fakeinstance'
         self.kwargs['test_files'] = ['test_hard_reboot']
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.ssh_private_key_file = 'tests/data/ida_test'
         cloud.ssh_user = 'root'
         cloud.logger = MagicMock()
@@ -494,7 +491,7 @@
         self.kwargs['running_instance_id'] = 'fakeinstance'
         self.kwargs['test_files'] = ['test_soft_reboot']
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.ssh_private_key_file = 'tests/data/ida_test'
         cloud.ssh_user = 'root'
         cloud.logger = MagicMock()
@@ -551,7 +548,7 @@
         self.kwargs['test_files'] = ['test_update']
         self.kwargs['cleanup'] = True
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.ssh_private_key_file = 'tests/data/ida_test'
         cloud.ssh_user = 'root'
 
@@ -589,7 +586,7 @@
         self.kwargs['test_files'] = ['test_refresh']
         self.kwargs['cleanup'] = True
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.ssh_private_key_file = 'tests/data/ida_test'
         cloud.ssh_user = 'root'
 
@@ -623,7 +620,7 @@
         self.kwargs['running_instance_id'] = 'fakeinstance'
         self.kwargs['early_exit'] = True
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.ssh_private_key_file = 'tests/data/ida_test'
         cloud.ssh_user = 'root'
 
@@ -640,7 +637,7 @@
         mock_get_instance_state.return_value = 'Stopped'
         mock_sleep.return_value = None
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud._wait_on_instance('Stopped')
         assert mock_get_instance_state.call_count == 1
 
@@ -653,7 +650,7 @@
             'Failed to collect VM info: Does not exist.'
         mock_get_ssh_client.return_value = client
 
-        cloud = IpaCloud(*args, **self.kwargs)
+        cloud = IpaCloud(**self.kwargs)
         cloud.distro = distro
         cloud.log_file = 'fake_file.name'
         cloud.logger = MagicMock()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/tests/test_ipa_ec2.py 
new/img-proof-6.0.0/tests/test_ipa_ec2.py
--- old/img-proof-5.3.0/tests/test_ipa_ec2.py   2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/tests/test_ipa_ec2.py   2020-08-18 21:44:44.000000000 
+0200
@@ -36,14 +36,16 @@
     def setup_method(self, method):
         """Set up kwargs dict."""
         self.kwargs = {
-            'account_name': 'bob',
             'config': 'tests/data/config',
             'distro_name': 'SLES',
             'image_id': 'fakeimage',
             'no_default_test_dirs': True,
             'cloud_config': 'tests/ec2/.ec2utils.conf',
             'test_files': ['test_image'],
-            'ssh_key_name': 'test-key'
+            'custom_args': {
+                'account_name': 'bob',
+                'ssh_key_name': 'test-key'
+            }
         }
 
     def test_ec2_exception_required_args(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/tests/test_ipa_gce.py 
new/img-proof-6.0.0/tests/test_ipa_gce.py
--- old/img-proof-5.3.0/tests/test_ipa_gce.py   2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/tests/test_ipa_gce.py   2020-08-18 21:44:44.000000000 
+0200
@@ -64,9 +64,11 @@
             'distro_name': 'SLES',
             'image_id': 'fakeimage',
             'no_default_test_dirs': True,
-            'service_account_file': 'tests/gce/service-account.json',
             'ssh_private_key_file': 'tests/data/ida_test',
-            'test_files': ['test_image']
+            'test_files': ['test_image'],
+            'custom_args': {
+                'service_account_file': 'tests/gce/service-account.json'
+            }
         }
 
         driver = MagicMock()
@@ -80,7 +82,7 @@
 
     def test_gce_exception_required_args(self):
         """Test an exception is raised if required args missing."""
-        self.kwargs['service_account_file'] = None
+        self.kwargs['custom_args']['service_account_file'] = None
         self.kwargs['ssh_private_key_file'] = None
 
         # Test service account file required
@@ -90,7 +92,8 @@
         assert str(error.value) == \
             'Service account file is required to connect to GCE.'
 
-        self.kwargs['service_account_file'] = 'tests/gce/service-account.json'
+        self.kwargs['custom_args']['service_account_file'] = \
+            'tests/gce/service-account.json'
 
         # Test ssh private key file required
         with pytest.raises(GCECloudException) as error:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/tests/test_ipa_oci.py 
new/img-proof-6.0.0/tests/test_ipa_oci.py
--- old/img-proof-5.3.0/tests/test_ipa_oci.py   2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/tests/test_ipa_oci.py   2020-08-18 21:44:44.000000000 
+0200
@@ -41,15 +41,19 @@
             'no_default_test_dirs': True,
             'cloud_config': 'tests/oci/config',
             'test_files': ['test_image'],
-            'oci_user_id':
-                'ocid1.user.oc1..'
-                'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
-            'signing_key_fingerprint':
-                '00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00',
-            'signing_key_file': 'tests/oci/api_key.pem',
-            'tenancy':
-                'ocid1.tenancy.oc1..'
-                'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+            'custom_args': {
+                'oci_user_id':
+                    'ocid1.user.oc1..'
+                    'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+                    'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
+                'signing_key_fingerprint':
+                    '00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00',
+                'signing_key_file': 'tests/oci/api_key.pem',
+                'tenancy':
+                    'ocid1.tenancy.oc1..'
+                    'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+                    'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+            }
         }
 
     def test_oci_exception_required_args(self):
@@ -58,13 +62,13 @@
         with pytest.raises(OCICloudException):
             OCICloud(**self.kwargs)
 
-        self.kwargs['availability_domain'] = 'Omic:PHX-AD-1'
+        self.kwargs['custom_args']['availability_domain'] = 'Omic:PHX-AD-1'
 
         # Test missing compartment id
         with pytest.raises(OCICloudException):
             OCICloud(**self.kwargs)
 
-        self.kwargs['compartment_id'] = (
+        self.kwargs['custom_args']['compartment_id'] = (
             'ocid1.compartment.oc1..'
             'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
         )
@@ -83,8 +87,8 @@
         mock_oci.core.VirtualNetworkClient.return_value = client
         mock_oci.core.VirtualNetworkClientCompsiteOperations.return_value = 
client  # noqa
 
-        self.kwargs['availability_domain'] = 'Omic:PHX-AD-1'
-        self.kwargs['compartment_id'] = (
+        self.kwargs['custom_args']['availability_domain'] = 'Omic:PHX-AD-1'
+        self.kwargs['custom_args']['compartment_id'] = (
             'ocid1.compartment.oc1..'
             'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/img-proof-5.3.0/tests/test_ipa_ssh.py 
new/img-proof-6.0.0/tests/test_ipa_ssh.py
--- old/img-proof-5.3.0/tests/test_ipa_ssh.py   2020-08-06 22:46:08.000000000 
+0200
+++ new/img-proof-6.0.0/tests/test_ipa_ssh.py   2020-08-18 21:44:44.000000000 
+0200
@@ -35,12 +35,12 @@
         self.kwargs = {
             'config': 'tests/data/config',
             'distro_name': 'sles',
-            'ip_address': '10.0.0.1',
             'no_default_test_dirs': True,
             'ssh_private_key_file': 'tests/data/ida_test',
             'ssh_user': 'root',
             'test_dirs': 'tests/data/tests',
-            'test_files': ['test_image']
+            'test_files': ['test_image'],
+            'custom_args': {'ip_address': '10.0.0.1'}
         }
 
     @pytest.mark.parametrize('name,msg', [
@@ -48,8 +48,7 @@
         (
             'ssh_private_key_file',
             'SSH private key file is required to connect to instance.'
-        ),
-        ('ip_address', 'IP address is required to connect to instance.')
+        )
     ])
     def test_required_args(self, name, msg):
         self.kwargs[name] = None


Reply via email to