keystone_changed
This commit is contained in:
parent
e50a423f33
commit
d9a942d88c
@ -241,64 +241,15 @@ def keystone_joined(relation_id=None):
|
|||||||
|
|
||||||
|
|
||||||
def keystone_changed():
|
def keystone_changed():
|
||||||
CONFIGS.write('/etc/glance/glance-api-paste.ini')
|
if 'identity-service' not in CONFIGS.complete_contexts():
|
||||||
CONFIGS.write('/etc/glance/glance-registry-paste.ini')
|
juju_log('INFO', 'identity-service relation incomplete. Peer not ready?')
|
||||||
|
return
|
||||||
|
|
||||||
CONFIGS.write('/etc/glance/glance-api.conf')
|
CONFIGS.write('/etc/glance/glance-api.conf')
|
||||||
CONFIGS.write('/etc/glance/glance-registry.conf')
|
CONFIGS.write('/etc/glance/glance-registry.conf')
|
||||||
|
|
||||||
restart(*SERVICES)
|
CONFIGS.write('/etc/glance/glance-api-paste.ini')
|
||||||
|
CONFIGS.write('/etc/glance/glance-registry-paste.ini')
|
||||||
# Configure any object-store / swift relations now that we have an
|
|
||||||
# identity-service
|
|
||||||
if relation_ids('object-store'):
|
|
||||||
object_store_joined()
|
|
||||||
|
|
||||||
# possibly configure HTTPS for API and registry
|
|
||||||
configure_https()
|
|
||||||
|
|
||||||
for r_id in relation_ids('identity-service'):
|
|
||||||
keystone_joined(relation_id=r_id)
|
|
||||||
for r_id in relation_ids('image-service'):
|
|
||||||
image_service_joined(relation_id=r_id)
|
|
||||||
|
|
||||||
|
|
||||||
def keystone_changed(rid=None):
|
|
||||||
relation_data = relation_get_dict(relation_id=rid)
|
|
||||||
|
|
||||||
token = relation_data["admin_token"]
|
|
||||||
service_port = relation_data["service_port"]
|
|
||||||
auth_port = relation_data["auth_port"]
|
|
||||||
service_username = relation_data["service_username"]
|
|
||||||
service_password = relation_data["service_password"]
|
|
||||||
service_tenant = relation_data["service_tenant"]
|
|
||||||
|
|
||||||
if not token or not service_port or not auth_port or \
|
|
||||||
not service_username or not service_password or not service_tenant:
|
|
||||||
juju_log('INFO', 'keystone_changed: Peer not ready')
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
if token == "-1":
|
|
||||||
juju_log('ERROR', 'keystone_changed: admin token error')
|
|
||||||
sys.exit(1)
|
|
||||||
juju_log('INFO', 'keystone_changed: Acquired admin token')
|
|
||||||
|
|
||||||
keystone_host = relation_data["auth_host"]
|
|
||||||
|
|
||||||
set_or_update(key='flavor', value='keystone', file='api', section="paste_deploy")
|
|
||||||
set_or_update(key='flavor', value='keystone', file='registry', section="paste_deploy")
|
|
||||||
|
|
||||||
section = "filter:authtoken"
|
|
||||||
for i in ['api-paste', 'registry-paste']:
|
|
||||||
set_or_update(key='service_host', value=keystone_host, file=i, section=section)
|
|
||||||
set_or_update(key='service_port', value=service_port, file=i, section=section)
|
|
||||||
set_or_update(key='auth_host', value=keystone_host, file=i, section=section)
|
|
||||||
set_or_update(key='auth_port', value=auth_port, file=i, section=section)
|
|
||||||
set_or_update(key='auth_uri', value="http://%s:%s/" % (keystone_host, service_port), file=i, section=section)
|
|
||||||
set_or_update(key='admin_token', value=token, file=i, section=section)
|
|
||||||
set_or_update(key='admin_tenant_name', value=service_tenant, file=i, section=section)
|
|
||||||
set_or_update(key='admin_user', value=service_username, file=i, section=section)
|
|
||||||
set_or_update(key='admin_password', value=service_password, file=i, section=section)
|
|
||||||
|
|
||||||
restart(*SERVICES)
|
restart(*SERVICES)
|
||||||
|
|
||||||
@ -310,10 +261,11 @@ def keystone_changed(rid=None):
|
|||||||
# possibly configure HTTPS for API and registry
|
# possibly configure HTTPS for API and registry
|
||||||
configure_https()
|
configure_https()
|
||||||
|
|
||||||
for r_id in relation_ids('identity-service'):
|
# TODO: maybe this should be removed as it was added on the initial port.
|
||||||
keystone_joined(relation_id=r_id)
|
#for r_id in relation_ids('identity-service'):
|
||||||
for r_id in relation_ids('image-service'):
|
# keystone_joined(relation_id=r_id)
|
||||||
image_service_joined(relation_id=r_id)
|
#for r_id in relation_ids('image-service'):
|
||||||
|
# image_service_joined(relation_id=r_id)
|
||||||
|
|
||||||
|
|
||||||
def config_changed():
|
def config_changed():
|
||||||
|
@ -27,13 +27,23 @@ TEMPLATES = 'templates/'
|
|||||||
|
|
||||||
CONFIG_FILES = OrderedDict([
|
CONFIG_FILES = OrderedDict([
|
||||||
('/etc/glance/glance-registry.conf', {
|
('/etc/glance/glance-registry.conf', {
|
||||||
'hook_contexts': [context.SharedDBContext()],
|
'hook_contexts': [context.SharedDBContext(),
|
||||||
|
context.IdentityServiceContext()],
|
||||||
'services': ['glance-registry']
|
'services': ['glance-registry']
|
||||||
}),
|
}),
|
||||||
('/etc/glance/glance-api.conf', {
|
('/etc/glance/glance-api.conf', {
|
||||||
'hook_contexts': [context.SharedDBContext()],
|
'hook_contexts': [context.SharedDBContext(),
|
||||||
|
context.IdentityServiceContext()],
|
||||||
'services': ['glance-api']
|
'services': ['glance-api']
|
||||||
}),
|
}),
|
||||||
|
('/etc/glance/glance-api-paste.ini', {
|
||||||
|
'hook_contexts': [context.IdentityServiceContext()],
|
||||||
|
'services': ['glance-api']
|
||||||
|
}),
|
||||||
|
('/etc/glance/glance-registry-paste.ini', {
|
||||||
|
'hook_contexts': [context.IdentityServiceContext()],
|
||||||
|
'services': ['glance-registry']
|
||||||
|
}),
|
||||||
])
|
])
|
||||||
|
|
||||||
def register_configs():
|
def register_configs():
|
||||||
@ -44,7 +54,9 @@ def register_configs():
|
|||||||
openstack_release='grizzly')
|
openstack_release='grizzly')
|
||||||
|
|
||||||
confs = ['/etc/glance/glance-registry.conf',
|
confs = ['/etc/glance/glance-registry.conf',
|
||||||
'/etc/glance/glance-api.conf']
|
'/etc/glance/glance-api.conf',
|
||||||
|
'/etc/glance/glance-api-paste.ini',
|
||||||
|
'/etc/glance/glance-registry-paste.ini',]
|
||||||
|
|
||||||
for conf in confs:
|
for conf in confs:
|
||||||
configs.register(conf, CONFIG_FILES[conf]['hook_contexts'])
|
configs.register(conf, CONFIG_FILES[conf]['hook_contexts'])
|
||||||
|
65
templates/essex/glance-api.conf
Normal file
65
templates/essex/glance-api.conf
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
verbose = True
|
||||||
|
debug = True
|
||||||
|
default_store = file
|
||||||
|
bind_host = 0.0.0.0
|
||||||
|
bind_port = 9292
|
||||||
|
log_file = /var/log/glance/api.log
|
||||||
|
backlog = 4096
|
||||||
|
workers = 0
|
||||||
|
use_syslog = False
|
||||||
|
registry_host = 0.0.0.0
|
||||||
|
registry_port = 9191
|
||||||
|
registry_client_protocol = http
|
||||||
|
notifier_strategy = noop
|
||||||
|
rabbit_host = localhost
|
||||||
|
rabbit_port = 5672
|
||||||
|
rabbit_use_ssl = false
|
||||||
|
rabbit_userid = guest
|
||||||
|
rabbit_password = guest
|
||||||
|
rabbit_virtual_host = /
|
||||||
|
rabbit_notification_exchange = glance
|
||||||
|
rabbit_notification_topic = glance_notifications
|
||||||
|
qpid_notification_exchange = glance
|
||||||
|
qpid_notification_topic = glance_notifications
|
||||||
|
qpid_host = localhost
|
||||||
|
qpid_port = 5672
|
||||||
|
qpid_username =
|
||||||
|
qpid_password =
|
||||||
|
qpid_sasl_mechanisms =
|
||||||
|
qpid_reconnect_timeout = 0
|
||||||
|
qpid_reconnect_limit = 0
|
||||||
|
qpid_reconnect_interval_min = 0
|
||||||
|
qpid_reconnect_interval_max = 0
|
||||||
|
qpid_reconnect_interval = 0
|
||||||
|
qpid_heartbeat = 5
|
||||||
|
qpid_protocol = tcp
|
||||||
|
qpid_tcp_nodelay = True
|
||||||
|
filesystem_store_datadir = /var/lib/glance/images/
|
||||||
|
swift_store_auth_version = 2
|
||||||
|
swift_store_auth_address = 127.0.0.1:35357/v2.0/
|
||||||
|
swift_store_user = jdoe:jdoe
|
||||||
|
swift_store_key = a86850deb2742ec3cb41518e26aa2d89
|
||||||
|
swift_store_container = glance
|
||||||
|
swift_store_create_container_on_put = False
|
||||||
|
swift_store_large_object_size = 5120
|
||||||
|
swift_store_large_object_chunk_size = 200
|
||||||
|
swift_enable_snet = False
|
||||||
|
s3_store_host = 127.0.0.1:8080/v1.0/
|
||||||
|
s3_store_access_key = <20-char AWS access key>
|
||||||
|
s3_store_secret_key = <40-char AWS secret key>
|
||||||
|
s3_store_bucket = <lowercased 20-char aws access key>glance
|
||||||
|
s3_store_create_bucket_on_put = False
|
||||||
|
rbd_store_ceph_conf = /etc/ceph/ceph.conf
|
||||||
|
rbd_store_user = glance
|
||||||
|
rbd_store_pool = images
|
||||||
|
rbd_store_chunk_size = 8
|
||||||
|
delayed_delete = False
|
||||||
|
scrub_time = 43200
|
||||||
|
scrubber_datadir = /var/lib/glance/scrubber
|
||||||
|
image_cache_dir = /var/lib/glance/image-cache/
|
||||||
|
|
||||||
|
{% if auth_host %}
|
||||||
|
[paste_deploy]
|
||||||
|
flavor = keystone
|
||||||
|
{% endif %}
|
@ -74,4 +74,7 @@ admin_tenant_name = %SERVICE_TENANT_NAME%
|
|||||||
admin_user = %SERVICE_USER%
|
admin_user = %SERVICE_USER%
|
||||||
admin_password = %SERVICE_PASSWORD%
|
admin_password = %SERVICE_PASSWORD%
|
||||||
|
|
||||||
|
{% if auth_host %}
|
||||||
[paste_deploy]
|
[paste_deploy]
|
||||||
|
flavor = keystone
|
||||||
|
{% endif %}
|
||||||
|
51
templates/glance-api-paste.ini
Normal file
51
templates/glance-api-paste.ini
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
[pipeline:glance-api]
|
||||||
|
pipeline = versionnegotiation context apiv1app
|
||||||
|
|
||||||
|
[pipeline:glance-api-keystone]
|
||||||
|
pipeline = versionnegotiation authtoken context apiv1app
|
||||||
|
|
||||||
|
[pipeline:glance-api-caching]
|
||||||
|
pipeline = versionnegotiation context cache apiv1app
|
||||||
|
|
||||||
|
[pipeline:glance-api-keystone+caching]
|
||||||
|
pipeline = versionnegotiation authtoken context cache apiv1app
|
||||||
|
|
||||||
|
[pipeline:glance-api-cachemanagement]
|
||||||
|
pipeline = versionnegotiation context cache cachemanage apiv1app
|
||||||
|
|
||||||
|
[pipeline:glance-api-keystone+cachemanagement]
|
||||||
|
pipeline = versionnegotiation authtoken context cache cachemanage apiv1app
|
||||||
|
|
||||||
|
[app:apiv1app]
|
||||||
|
paste.app_factory = glance.common.wsgi:app_factory
|
||||||
|
glance.app_factory = glance.api.v1.router:API
|
||||||
|
|
||||||
|
[filter:versionnegotiation]
|
||||||
|
paste.filter_factory = glance.common.wsgi:filter_factory
|
||||||
|
glance.filter_factory = glance.api.middleware.version_negotiation:VersionNegotiationFilter
|
||||||
|
|
||||||
|
[filter:cache]
|
||||||
|
paste.filter_factory = glance.common.wsgi:filter_factory
|
||||||
|
glance.filter_factory = glance.api.middleware.cache:CacheFilter
|
||||||
|
|
||||||
|
[filter:cachemanage]
|
||||||
|
paste.filter_factory = glance.common.wsgi:filter_factory
|
||||||
|
glance.filter_factory = glance.api.middleware.cache_manage:CacheManageFilter
|
||||||
|
|
||||||
|
[filter:context]
|
||||||
|
paste.filter_factory = glance.common.wsgi:filter_factory
|
||||||
|
glance.filter_factory = glance.common.context:ContextMiddleware
|
||||||
|
|
||||||
|
[filter:authtoken]
|
||||||
|
paste.filter_factory = keystone.middleware.auth_token:filter_factory
|
||||||
|
service_protocol = {{ service_protocol }}
|
||||||
|
service_host = {{ service_host }}
|
||||||
|
service_port = {{ service_port }}
|
||||||
|
auth_host = {{ auth_host }}
|
||||||
|
auth_port = {{ auth_port }}
|
||||||
|
auth_protocol = {{ auth_protocol }}
|
||||||
|
auth_uri = http://{{ service_host }}:{{ service_port }}/
|
||||||
|
admin_tenant_name = {{ admin_tenant_name }}
|
||||||
|
admin_user = {{ admin_user }}
|
||||||
|
admin_password = {{ admin_password }}
|
||||||
|
admin_token = {{ admin_token }}
|
28
templates/glance-registry-paste.ini
Normal file
28
templates/glance-registry-paste.ini
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
[pipeline:glance-registry]
|
||||||
|
pipeline = context registryapp
|
||||||
|
|
||||||
|
[pipeline:glance-registry-keystone]
|
||||||
|
pipeline = authtoken context registryapp
|
||||||
|
|
||||||
|
[app:registryapp]
|
||||||
|
paste.app_factory = glance.common.wsgi:app_factory
|
||||||
|
glance.app_factory = glance.registry.api.v1:API
|
||||||
|
|
||||||
|
[filter:context]
|
||||||
|
context_class = glance.registry.context.RequestContext
|
||||||
|
paste.filter_factory = glance.common.wsgi:filter_factory
|
||||||
|
glance.filter_factory = glance.common.context:ContextMiddleware
|
||||||
|
|
||||||
|
[filter:authtoken]
|
||||||
|
paste.filter_factory = keystone.middleware.auth_token:filter_factory
|
||||||
|
service_protocol = {{ service_protocol }}
|
||||||
|
service_host = {{ service_host }}
|
||||||
|
service_port = {{ service_port }}
|
||||||
|
auth_host = {{ auth_host }}
|
||||||
|
auth_port = {{ auth_port }}
|
||||||
|
auth_protocol = {{ auth_protocol }}
|
||||||
|
auth_uri = http://{{ service_host }}:{{ service_port }}/
|
||||||
|
admin_tenant_name = {{ admin_tenant_name }}
|
||||||
|
admin_user = {{ admin_user }}
|
||||||
|
admin_password = {{ admin_password }}
|
||||||
|
admin_token = {{ admin_token }
|
@ -12,3 +12,8 @@ sql_idle_timeout = 3600
|
|||||||
api_limit_max = 1000
|
api_limit_max = 1000
|
||||||
limit_param_default = 25
|
limit_param_default = 25
|
||||||
use_syslog = False
|
use_syslog = False
|
||||||
|
|
||||||
|
{% if auth_host %}
|
||||||
|
[paste_deploy]
|
||||||
|
flavor = keystone
|
||||||
|
{% endif %}
|
||||||
|
Loading…
Reference in New Issue
Block a user