Merge lp:~gandelman-a/charms/precise/keystone/endpoint_reconfig into lp:~charmers/charms/precise/keystone/trunk

Proposed by Adam Gandelman
Status: Merged
Approved by: James Page
Approved revision: 38
Merged at revision: 42
Proposed branch: lp:~gandelman-a/charms/precise/keystone/endpoint_reconfig
Merge into: lp:~charmers/charms/precise/keystone/trunk
Diff against target: 99 lines (+28/-17)
3 files modified
hooks/keystone-hooks (+10/-10)
hooks/utils.py (+17/-6)
revision (+1/-1)
To merge this branch: bzr merge lp:~gandelman-a/charms/precise/keystone/endpoint_reconfig
Reviewer Review Type Date Requested Status
James Page Approve
Review via email: mp+131770@code.launchpad.net

Description of the change

Allows existing endpoint templates to be reconfigured based on new input from relation settings. This is especially useful (and required) for allowing services to reconfigure their catalog entry based on the existence of an external load balancer (haproxy).

To post a comment you must log in.
Revision history for this message
James Page (james-page) wrote :

Hi Adam

LGTM - I was not able to test the reconfiguration stuff as we don't have any charms that do this yet but the changes don't appear to impact the existing function so +1.

Cheers

James

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'hooks/keystone-hooks'
--- hooks/keystone-hooks 2012-10-12 17:26:48 +0000
+++ hooks/keystone-hooks 2012-10-28 10:48:21 +0000
@@ -120,14 +120,14 @@
120 realtion_set({ "admin_token": -1 })120 realtion_set({ "admin_token": -1 })
121 return121 return
122122
123 def add_endpoint(region, service, public_url, admin_url, internal_url):123 def add_endpoint(region, service, publicurl, adminurl, internalurl):
124 desc = valid_services[service]["desc"]124 desc = valid_services[service]["desc"]
125 service_type = valid_services[service]["type"]125 service_type = valid_services[service]["type"]
126 create_service_entry(service, service_type, desc)126 create_service_entry(service, service_type, desc)
127 create_endpoint_template(region=region, service=service,127 create_endpoint_template(region=region, service=service,
128 public_url=public_url,128 publicurl=publicurl,
129 admin_url=admin_url,129 adminurl=adminurl,
130 internal_url=internal_url)130 internalurl=internalurl)
131131
132 settings = relation_get_dict(relation_id=relation_id,132 settings = relation_get_dict(relation_id=relation_id,
133 remote_unit=remote_unit)133 remote_unit=remote_unit)
@@ -145,9 +145,9 @@
145145
146 ensure_valid_service(settings['service'])146 ensure_valid_service(settings['service'])
147 add_endpoint(region=settings['region'], service=settings['service'],147 add_endpoint(region=settings['region'], service=settings['service'],
148 public_url=settings['public_url'],148 publicurl=settings['public_url'],
149 admin_url=settings['admin_url'],149 adminurl=settings['admin_url'],
150 internal_url=settings['internal_url'])150 internalurl=settings['internal_url'])
151 service_username = settings['service']151 service_username = settings['service']
152 else:152 else:
153 # assemble multiple endpoints from relation data. service name153 # assemble multiple endpoints from relation data. service name
@@ -182,9 +182,9 @@
182 ep = endpoints[ep]182 ep = endpoints[ep]
183 ensure_valid_service(ep['service'])183 ensure_valid_service(ep['service'])
184 add_endpoint(region=ep['region'], service=ep['service'],184 add_endpoint(region=ep['region'], service=ep['service'],
185 public_url=ep['public_url'],185 publicurl=ep['public_url'],
186 admin_url=ep['admin_url'],186 adminurl=ep['admin_url'],
187 internal_url=ep['internal_url'])187 internalurl=ep['internal_url'])
188 services.append(ep['service'])188 services.append(ep['service'])
189 service_username = '_'.join(services)189 service_username = '_'.join(services)
190190
191191
=== modified file 'hooks/utils.py'
--- hooks/utils.py 2012-10-03 00:36:25 +0000
+++ hooks/utils.py 2012-10-28 10:48:21 +0000
@@ -264,8 +264,8 @@
264 description=service_desc)264 description=service_desc)
265 juju_log("Created new service entry '%s'" % service_name)265 juju_log("Created new service entry '%s'" % service_name)
266266
267def create_endpoint_template(region, service, public_url, admin_url,267def create_endpoint_template(region, service, publicurl, adminurl,
268 internal_url):268 internalurl):
269 """ Create a new endpoint template for service if one does not already269 """ Create a new endpoint template for service if one does not already
270 exist matching name *and* region """270 exist matching name *and* region """
271 import manager271 import manager
@@ -276,13 +276,24 @@
276 if ep['service_id'] == service_id and ep['region'] == region:276 if ep['service_id'] == service_id and ep['region'] == region:
277 juju_log("Endpoint template already exists for '%s' in '%s'"277 juju_log("Endpoint template already exists for '%s' in '%s'"
278 % (service, region))278 % (service, region))
279 return279
280 up_to_date = True
281 for k in ['publicurl', 'adminurl', 'internalurl']:
282 if ep[k] != locals()[k]:
283 up_to_date = False
284
285 if up_to_date:
286 return
287 else:
288 # delete endpoint and recreate if endpoint urls need updating.
289 juju_log("Updating endpoint template with new endpoint urls.")
290 manager.api.endpoints.delete(ep['id'])
280291
281 manager.api.endpoints.create(region=region,292 manager.api.endpoints.create(region=region,
282 service_id=service_id,293 service_id=service_id,
283 publicurl=public_url,294 publicurl=publicurl,
284 adminurl=admin_url,295 adminurl=adminurl,
285 internalurl=internal_url)296 internalurl=internalurl)
286 juju_log("Created new endpoint template for '%s' in '%s'" %297 juju_log("Created new endpoint template for '%s' in '%s'" %
287 (region, service))298 (region, service))
288299
289300
=== modified file 'revision'
--- revision 2012-10-12 17:26:48 +0000
+++ revision 2012-10-28 10:48:21 +0000
@@ -1,1 +1,1 @@
11631164

Subscribers

People subscribed via source and target branches