[Pkg-freeipa-devel] [Git][freeipa-team/pytest-multihost][upstream] 6 commits: Implement OpenSSH password auth with sshpass

Timo Aaltonen (@tjaalton) gitlab at salsa.debian.org
Tue Mar 29 08:59:53 BST 2022



Timo Aaltonen pushed to branch upstream at FreeIPA packaging / pytest-multihost


Commits:
12c8370f by Christian Heimes at 2020-03-17T12:31:56+01:00
Implement OpenSSH password auth with sshpass

Paramiko does not yet implement modern handshake variants with
rsa-sha2-256. OpenSSH 8.2 release notes say that the old ssh-rsa
algorithm (RSA with SHA-1 signature) be disabled soon. The algorithm does
not work in FIPS either.

The patch implements OpenSSH password-based logins using the sshpass
utilility. It reads the password from a secure file and feeds it to
OpenSSH command line tool.

See: https://www.openssh.com/releasenotes.html
See: https://linux.die.net/man/1/sshpass
Signed-off-by: Christian Heimes <cheimes at redhat.com>

- - - - -
95c08a60 by Scott Poore at 2020-04-02T08:36:33-05:00
Bump version to 3.1

- - - - -
23abfb86 by Scott Poore at 2020-04-03T16:11:22-05:00
Fix spec file to work with current distros

Bumping version to 3.2 also

- - - - -
cb646da0 by Scott Poore at 2020-04-06T12:04:09-05:00
README rst fix and version bump for pypi upload

- - - - -
56693d16 by Niranjan M.R at 2020-04-07T11:54:29+05:30
Set permissions in octal mode for sshpass to read the file

Signed-off-by: Niranjan M.R <mrniranjan at redhat.com>

- - - - -
9043c21a by Niranjan M.R at 2020-04-07T18:06:24+05:30
Bump version to 3.4

Signed-off-by: Niranjan M.R <mrniranjan at redhat.com>

- - - - -


4 changed files:

- README.rst
- pytest_multihost/transport.py
- python-pytest-multihost.spec
- setup.py


Changes:

=====================================
README.rst
=====================================
@@ -185,7 +185,7 @@ but an encoding can be given to get a test string.
 
 For command output, separate ``stdout_bytes`` and ``stdout_text`` attributes
 are provided.
-The latter uses a configurable encoding (``utf-8` by default).
+The latter uses a configurable encoding (``utf-8`` by default).
 
 
 Contributing


=====================================
pytest_multihost/transport.py
=====================================
@@ -375,9 +375,15 @@ class OpenSSHTransport(Transport):
         if self.host.ssh_key_filename:
             key_filename = os.path.expanduser(self.host.ssh_key_filename)
             argv.extend(['-i', key_filename])
+            # disable password prompt
+            argv.extend(['-o', 'BatchMode=yes'])
         elif self.host.ssh_password:
-            self.log.critical('Password authentication not supported')
-            raise RuntimeError('Password authentication not supported')
+            password_file = os.path.join(self.control_dir.path, 'password')
+            with open(password_file, 'w') as f:
+                os.fchmod(f.fileno(), 0o600)
+                f.write(self.host.ssh_password)
+                f.write('\n')
+            argv = ['sshpass', '-f', password_file] + argv
         else:
             self.log.critical('No SSH credentials configured')
             raise RuntimeError('No SSH credentials configured')


=====================================
python-pytest-multihost.spec
=====================================
@@ -1,18 +1,19 @@
-%if 0%{?rhel}
-%global with_python3 0
-%else
-%global with_python3 1
+%if 0%{?fedora} >= 30 || 0%{?rhel} >= 8
+%global default_python_ver 3
 %endif
 
-%if 0%{?rhel} && 0%{?rhel} <= 6
-%{!?__python2: %global __python2 /usr/bin/python2}
-%{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
-%{!?python2_sitearch: %global python2_sitearch %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
+%if 0%{?default_python_ver} > 2
+%global with_python3 1
+%global __python %{__python3}
+%global with_python2 0
+%else
+%global with_python3 0
+%global with_python2 1
 %endif
 
 %global srcname pytest-multihost
 %global modulename pytest_multihost
-%global srcversion 3.0
+%global srcversion 3.4
 %global versionedname %{srcname}-%{srcversion}
 
 Name: python-%{srcname}
@@ -26,17 +27,30 @@ URL: https://github.com/encukou/%{srcname}
 Source0: https://github.com/encukou/%{srcname}/archive/v%{srcversion}.tar.gz#/%{versionedname}.tar.gz
 
 BuildArch: noarch
-BuildRequires: python-devel
-BuildRequires: python-setuptools
-BuildRequires: pytest
+
 %if 0%{?with_python3}
 BuildRequires: python3-devel
 BuildRequires: python3-setuptools
 BuildRequires: python3-pytest
+BuildRequires: openssh-clients
+BuildRequires: sshpass
+%endif
+
+%if 0%{?with_python2}
+BuildRequires: python-devel
+BuildRequires: python-setuptools
+BuildRequires: pytest
 %endif
 
 Requires: python
 Requires: pytest >= 2.4.0
+Requires: openssh-clients
+
+%if 0%{?rhel} <= 7
+Requires: sshpass
+%else
+Recommends: sshpass
+%endif
 
 # Should use python_provide macros, but those won't work in older EPEL
 Provides: python2-%{srcname}
@@ -59,6 +73,8 @@ Summary: Utility for writing multi-host tests for pytest
 
 Requires: python3
 Requires: python3-pytest
+Requires: openssh-clients
+Recommends: sshpass
 
 %description -n python3-%{srcname}
 Allows pytest tests to run commands on several machines.
@@ -77,9 +93,10 @@ rm -rf %{py3dir}
 cp -a . %{py3dir}
 %endif
 
-
 %build
+%if 0%{?with_python2}
 %{__python2} setup.py build
+%endif
 
 %if 0%{?with_python3}
 pushd %{py3dir}
@@ -89,7 +106,9 @@ popd
 
 %check
 # Do not run the test that needs passwordless SSH to localhost set up
+%if 0%{?with_python2}
 %{__python2} -m pytest -m "not needs_ssh"
+%endif
 
 %if 0%{?with_python3}
 pushd %{py3dir}
@@ -98,11 +117,8 @@ popd
 %endif
 
 %install
+%if 0%{?with_python2}
 %{__python2} setup.py install --skip-build --root %{buildroot}
-%if 0%{?with_python3}
-%py_byte_compile %{__python2} %{buildroot}%{python_sitelib}/%{srcname}
-%else
-# py_byte_compile is only defined in python3-devel
 %{__python2} -m compileall %{buildroot}%{python_sitelib}/%{srcname}
 %endif
 
@@ -113,15 +129,13 @@ pushd %{py3dir}
 popd
 %endif
 
+%if 0%{?with_python2}
 %files
-%if 0%{?rhel} && 0%{?rhel} <= 6
-%doc COPYING
-%else
 %license COPYING
-%endif
 %doc README.rst
-%{python_sitelib}/%{modulename}-%{version}-py2.?.egg-info
-%{python_sitelib}/%{modulename}/
+%{python2_sitelib}/%{modulename}-%{version}-py2.?.egg-info
+%{python2_sitelib}/%{modulename}/
+%endif
 
 %if 0%{?with_python3}
 %files -n python3-%{srcname}
@@ -133,6 +147,20 @@ popd
 
 
 %changelog
+* Tue Apr 07 2020 Niranjan MR <niranjan at ashoo.in> - 3.4-1
+- Set permissions in octal mode for sshpass to read the file
+
+* Mon Apr 06 2020 Scott Poore <spoore1 at gmail.com> - 3.3-1
+- README.rst fix for pypi upload
+- Bump version to 3.3
+
+* Fri Apr 03 2020 Scott Poore <spoore1 at gmail.com> - 3.2-1
+- Spec file updates to fix build issues on some distros
+- Bump version to 3.2 in setup.py also
+
+* Thu Apr 02 2020 Scott Poore <spoore1 at gmail.com> - 3.1-1
+- Implement OpenSSH password auth with sshpass
+
 * Fri Mar 02 2018 Petr Viktorin <encukou at gmail.com> - 3.0-1
 - Do not add extra newlines to stdin contents
 - Remove forgotten debug print


=====================================
setup.py
=====================================
@@ -11,7 +11,7 @@ with io.open('README.rst', 'rt', encoding='utf-8') as f:
 
 setup_args = dict(
     name = "pytest-multihost",
-    version = "3.0",
+    version = "3.4",
     description = "Utility for writing multi-host tests for pytest",
     long_description = readme_contents,
     url = "https://pagure.io/python-pytest-multihost",



View it on GitLab: https://salsa.debian.org/freeipa-team/pytest-multihost/-/compare/a70c8429b25c887dda1323e44e83a51d231c9087...9043c21a33917d7b6d60c2ec708947a6995ca4b3

-- 
View it on GitLab: https://salsa.debian.org/freeipa-team/pytest-multihost/-/compare/a70c8429b25c887dda1323e44e83a51d231c9087...9043c21a33917d7b6d60c2ec708947a6995ca4b3
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-freeipa-devel/attachments/20220329/86ff2cbe/attachment-0001.htm>


More information about the Pkg-freeipa-devel mailing list