Bug 1553517

Summary: Bump python-cryptography to >=2.1
Product: [Community] RDO Reporter: Carlos Goncalves <cgoncalves>
Component: distributionAssignee: Alfredo Moralejo <amoralej>
Status: CLOSED CURRENTRELEASE QA Contact: Shai Revivo <srevivo>
Severity: urgent Docs Contact:
Priority: unspecified    
Version: trunkCC: amoralej, amuller, jschluet, markmc, srevivo
Target Milestone: ---Keywords: Rebase
Target Release: trunk   
Hardware: Unspecified   
OS: Unspecified   
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1553752 1556933 (view as bug list) Environment:
Last Closed: 2018-03-29 07:57:51 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 1553520, 1553521, 1554409, 1556933    

Description Carlos Goncalves 2018-03-09 01:09:24 UTC
Description of problem:

Octavia requires python2-cryptography!=2.0,>=1.9 [1] and is synced with global-requirement.txt [2]. CentOS7 provides python2-cryptography-1.7.2-1.el7 which is not good enough and throws exceptions on load balancer create in Octavia:

2018-03-08 23:45:46.453 24634 ERROR octavia.controller.worker.controller_worker   File "/usr/lib/python2.7/site-packages/octavia/certificates/common/pkcs12.py", line 35, in get_certificate
2018-03-08 23:45:46.453 24634 ERROR octavia.controller.worker.controller_worker     return self.certificate.to_cryptography().public_bytes(
2018-03-08 23:45:46.453 24634 ERROR octavia.controller.worker.controller_worker AttributeError: 'X509' object has no attribute 'to_cryptography'

Could we promote python2-cryptography-2.1.4 from Fedora [3]? There might be some considerations to be made first, i.e. bump of openssl and pyopenssl versions?

[1] https://github.com/openstack/octavia/blob/master/requirements.txt#L47
[2] https://github.com/openstack/requirements/blob/master/global-requirements.txt#L28
[3] https://src.fedoraproject.org/rpms/python-cryptography/blob/master/f/python-cryptography.spec

Comment 1 Carlos Goncalves 2018-03-15 11:02:17 UTC
python-cryptography>=1.9 is not good enough as recently discovered with a new gate using lower-constraints [1]. Octavia requires python-cryptography>=2.1.

Version bump being requested upstream for global-requirements.txt and lower-constraints.txt in [2].

[1] https://review.openstack.org/#/c/553134/
[2] https://review.openstack.org/#/c/553136/

Comment 2 Alfredo Moralejo 2018-03-15 15:02:05 UTC
We are bumping python-cryptography to 2.1.4. This introduces new dependencies:

- cryptography-vectors (required same version as cryptography)
- python-cffi >= 1.7.0 is required for updated cryptography (updating to 1.11.2, overriding version in RHEL7)
- python-asn1crypto = 0.23.0, new dependency for updated python-cryptography

Currently we are hitting an issue because of a non-backwards compatible change in python-cryptography-2.1:

BACKWARDS INCOMPATIBLE: :attr:`DNSName.value <cryptography.x509.DNSName.value>`, :attr:`RFC822Name.value <cryptography.x509.RFC822Name.value>`, and :attr:`UniformResourceIdentifier.value <cryptography.x509.UniformResourceIdentifier.value>` will now return an :term:`A-label` string when parsing a certificate containing an internationalized domain name (IDN) or if the caller passed a :term:`U-label` to the constructor. See below for additional deprecations related to this change.

This is making puppet-openstack-integration jobs to fail and we are still evaluating the impact.