PEP-0476 introduced more thorough certificate chain verfication
for HTTPS connectivity; this was introduced in Python 2.7.9, and
breaks a number of unit tests in the cinder codebase.
Disable certificate chain verification for cinder SSL tests
using the backwards compatible SSLContext provided for this
purpose.
Change-Id: Iffc3658196f608c7a7c9b6527dc8e7210fb05bff
Closes-Bug: #
1403068
import os.path
import re
import socket
+import ssl
import tempfile
import time
import urllib2
def open_no_proxy(*args, **kwargs):
- opener = urllib2.build_opener(urllib2.ProxyHandler({}))
+ # NOTE(coreycb):
+ # Deal with more secure certification chain verficiation
+ # introduced in python 2.7.9 under PEP-0476
+ # https://github.com/python/peps/blob/master/pep-0476.txt
+ if hasattr(ssl, "_create_unverified_context"):
+ opener = urllib2.build_opener(
+ urllib2.ProxyHandler({}),
+ urllib2.HTTPSHandler(context=ssl._create_unverified_context())
+ )
+ else:
+ opener = urllib2.build_opener(urllib2.ProxyHandler({}))
return opener.open(*args, **kwargs)