Use default gRPC roots.pem if none provided

pull/4457/head
Masood Malekghassemi 9 years ago
parent ccc1610b95
commit 6d2ef17f30
  1. 1
      PYTHON-MANIFEST.in
  2. 12
      setup.py
  3. 1
      src/python/grpcio/.gitignore
  4. 2
      src/python/grpcio/commands.py
  5. 5
      src/python/grpcio/grpc/_adapter/_low.py

@ -6,3 +6,4 @@ include src/python/grpcio/commands.py
include src/python/grpcio/grpc_core_dependencies.py include src/python/grpcio/grpc_core_dependencies.py
include src/python/grpcio/README.rst include src/python/grpcio/README.rst
include requirements.txt include requirements.txt
include etc/roots.pem

@ -31,6 +31,7 @@
import os import os
import os.path import os.path
import shutil
import sys import sys
from distutils import core as _core from distutils import core as _core
@ -130,6 +131,14 @@ COMMAND_CLASS = {
'run_interop': commands.RunInterop, 'run_interop': commands.RunInterop,
} }
# Ensure that package data is copied over before any commands have been run:
credentials_dir = os.path.join(PYTHON_STEM, 'grpc/_adapter/credentials')
try:
os.mkdir(credentials_dir)
except OSError:
pass
shutil.copyfile('etc/roots.pem', os.path.join(credentials_dir, 'roots.pem'))
TEST_PACKAGE_DATA = { TEST_PACKAGE_DATA = {
'tests.interop': [ 'tests.interop': [
'credentials/ca.pem', 'credentials/ca.pem',
@ -144,6 +153,9 @@ TEST_PACKAGE_DATA = {
'credentials/server1.key', 'credentials/server1.key',
'credentials/server1.pem', 'credentials/server1.pem',
], ],
'grpc._adapter': [
'credentials/roots.pem'
],
} }
TESTS_REQUIRE = ( TESTS_REQUIRE = (

@ -14,3 +14,4 @@ nosetests.xml
doc/ doc/
_grpcio_metadata.py _grpcio_metadata.py
htmlcov/ htmlcov/
grpc/_adapter/credentials

@ -156,6 +156,8 @@ class BuildPy(build_py.build_py):
"""Custom project build command.""" """Custom project build command."""
def run(self): def run(self):
# TODO(atash): make this warn if the proto modules couldn't be built rather
# than cause build failure
self.run_command('build_proto_modules') self.run_command('build_proto_modules')
self.run_command('build_project_metadata') self.run_command('build_project_metadata')
build_py.build_py.run(self) build_py.build_py.run(self)

@ -27,6 +27,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import pkg_resources
import threading import threading
from grpc import _grpcio_metadata from grpc import _grpcio_metadata
@ -34,6 +35,7 @@ from grpc._cython import cygrpc
from grpc._adapter import _implementations from grpc._adapter import _implementations
from grpc._adapter import _types from grpc._adapter import _types
_ROOT_CERTIFICATES_RESOURCE_PATH = 'credentials/roots.pem'
_USER_AGENT = 'Python-gRPC-{}'.format(_grpcio_metadata.__version__) _USER_AGENT = 'Python-gRPC-{}'.format(_grpcio_metadata.__version__)
ChannelCredentials = cygrpc.ChannelCredentials ChannelCredentials = cygrpc.ChannelCredentials
@ -54,6 +56,9 @@ def channel_credentials_ssl(
pair = None pair = None
if private_key is not None or certificate_chain is not None: if private_key is not None or certificate_chain is not None:
pair = cygrpc.SslPemKeyCertPair(private_key, certificate_chain) pair = cygrpc.SslPemKeyCertPair(private_key, certificate_chain)
if root_certificates is None:
root_certificates = pkg_resources.resource_string(
__name__, _ROOT_CERTIFICATES_RESOURCE_PATH)
return cygrpc.channel_credentials_ssl(root_certificates, pair) return cygrpc.channel_credentials_ssl(root_certificates, pair)

Loading…
Cancel
Save