e329b52252
* charm-helpers sync for classic charms * rebuild for reactive charms * ensure tox.ini is from release-tools * ensure requirements.txt files are from release-tools * On reactive charms: - ensure master branch for charms.openstack - ensure master branch for charm-helpers Change-Id: Ic9c930a58afa9e1e849e61581b9cca588cc48529
91 lines
2.8 KiB
Python
91 lines
2.8 KiB
Python
# Copyright 2014-2015 Canonical Limited.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
#
|
|
# Copyright 2012 Canonical Ltd.
|
|
#
|
|
# This file is sourced from lp:openstack-charm-helpers
|
|
#
|
|
# Authors:
|
|
# James Page <james.page@ubuntu.com>
|
|
# Adam Gandelman <adamg@ubuntu.com>
|
|
#
|
|
|
|
import os
|
|
|
|
from charmhelpers.core import host
|
|
from charmhelpers.core.hookenv import (
|
|
config as config_get,
|
|
relation_get,
|
|
relation_ids,
|
|
related_units as relation_list,
|
|
log,
|
|
INFO,
|
|
)
|
|
|
|
# This file contains the CA cert from the charms ssl_ca configuration
|
|
# option, in future the file name should be updated reflect that.
|
|
CONFIG_CA_CERT_FILE = 'keystone_juju_ca_cert'
|
|
|
|
|
|
def get_cert(cn=None):
|
|
# TODO: deal with multiple https endpoints via charm config
|
|
cert = config_get('ssl_cert')
|
|
key = config_get('ssl_key')
|
|
if not (cert and key):
|
|
log("Inspecting identity-service relations for SSL certificate.",
|
|
level=INFO)
|
|
cert = key = None
|
|
if cn:
|
|
ssl_cert_attr = 'ssl_cert_{}'.format(cn)
|
|
ssl_key_attr = 'ssl_key_{}'.format(cn)
|
|
else:
|
|
ssl_cert_attr = 'ssl_cert'
|
|
ssl_key_attr = 'ssl_key'
|
|
for r_id in relation_ids('identity-service'):
|
|
for unit in relation_list(r_id):
|
|
if not cert:
|
|
cert = relation_get(ssl_cert_attr,
|
|
rid=r_id, unit=unit)
|
|
if not key:
|
|
key = relation_get(ssl_key_attr,
|
|
rid=r_id, unit=unit)
|
|
return (cert, key)
|
|
|
|
|
|
def get_ca_cert():
|
|
ca_cert = config_get('ssl_ca')
|
|
if ca_cert is None:
|
|
log("Inspecting identity-service relations for CA SSL certificate.",
|
|
level=INFO)
|
|
for r_id in (relation_ids('identity-service') +
|
|
relation_ids('identity-credentials')):
|
|
for unit in relation_list(r_id):
|
|
if ca_cert is None:
|
|
ca_cert = relation_get('ca_cert',
|
|
rid=r_id, unit=unit)
|
|
return ca_cert
|
|
|
|
|
|
def retrieve_ca_cert(cert_file):
|
|
cert = None
|
|
if os.path.isfile(cert_file):
|
|
with open(cert_file, 'rb') as crt:
|
|
cert = crt.read()
|
|
return cert
|
|
|
|
|
|
def install_ca_cert(ca_cert):
|
|
host.install_ca_cert(ca_cert, CONFIG_CA_CERT_FILE)
|