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
1=== modified file 'hooks/keystone-hooks'
2--- hooks/keystone-hooks 2012-10-12 17:26:48 +0000
3+++ hooks/keystone-hooks 2012-10-28 10:48:21 +0000
4@@ -120,14 +120,14 @@
5 realtion_set({ "admin_token": -1 })
6 return
7
8- def add_endpoint(region, service, public_url, admin_url, internal_url):
9+ def add_endpoint(region, service, publicurl, adminurl, internalurl):
10 desc = valid_services[service]["desc"]
11 service_type = valid_services[service]["type"]
12 create_service_entry(service, service_type, desc)
13 create_endpoint_template(region=region, service=service,
14- public_url=public_url,
15- admin_url=admin_url,
16- internal_url=internal_url)
17+ publicurl=publicurl,
18+ adminurl=adminurl,
19+ internalurl=internalurl)
20
21 settings = relation_get_dict(relation_id=relation_id,
22 remote_unit=remote_unit)
23@@ -145,9 +145,9 @@
24
25 ensure_valid_service(settings['service'])
26 add_endpoint(region=settings['region'], service=settings['service'],
27- public_url=settings['public_url'],
28- admin_url=settings['admin_url'],
29- internal_url=settings['internal_url'])
30+ publicurl=settings['public_url'],
31+ adminurl=settings['admin_url'],
32+ internalurl=settings['internal_url'])
33 service_username = settings['service']
34 else:
35 # assemble multiple endpoints from relation data. service name
36@@ -182,9 +182,9 @@
37 ep = endpoints[ep]
38 ensure_valid_service(ep['service'])
39 add_endpoint(region=ep['region'], service=ep['service'],
40- public_url=ep['public_url'],
41- admin_url=ep['admin_url'],
42- internal_url=ep['internal_url'])
43+ publicurl=ep['public_url'],
44+ adminurl=ep['admin_url'],
45+ internalurl=ep['internal_url'])
46 services.append(ep['service'])
47 service_username = '_'.join(services)
48
49
50=== modified file 'hooks/utils.py'
51--- hooks/utils.py 2012-10-03 00:36:25 +0000
52+++ hooks/utils.py 2012-10-28 10:48:21 +0000
53@@ -264,8 +264,8 @@
54 description=service_desc)
55 juju_log("Created new service entry '%s'" % service_name)
56
57-def create_endpoint_template(region, service, public_url, admin_url,
58- internal_url):
59+def create_endpoint_template(region, service, publicurl, adminurl,
60+ internalurl):
61 """ Create a new endpoint template for service if one does not already
62 exist matching name *and* region """
63 import manager
64@@ -276,13 +276,24 @@
65 if ep['service_id'] == service_id and ep['region'] == region:
66 juju_log("Endpoint template already exists for '%s' in '%s'"
67 % (service, region))
68- return
69+
70+ up_to_date = True
71+ for k in ['publicurl', 'adminurl', 'internalurl']:
72+ if ep[k] != locals()[k]:
73+ up_to_date = False
74+
75+ if up_to_date:
76+ return
77+ else:
78+ # delete endpoint and recreate if endpoint urls need updating.
79+ juju_log("Updating endpoint template with new endpoint urls.")
80+ manager.api.endpoints.delete(ep['id'])
81
82 manager.api.endpoints.create(region=region,
83 service_id=service_id,
84- publicurl=public_url,
85- adminurl=admin_url,
86- internalurl=internal_url)
87+ publicurl=publicurl,
88+ adminurl=adminurl,
89+ internalurl=internalurl)
90 juju_log("Created new endpoint template for '%s' in '%s'" %
91 (region, service))
92
93
94=== modified file 'revision'
95--- revision 2012-10-12 17:26:48 +0000
96+++ revision 2012-10-28 10:48:21 +0000
97@@ -1,1 +1,1 @@
98-163
99+164

Subscribers

People subscribed via source and target branches