Merge lp:~james-page/charms/precise/quantum-gateway/ha-fixes into lp:~openstack-charmers/charms/precise/quantum-gateway/ha-support
- Precise Pangolin (12.04)
- ha-fixes
- Merge into ha-support
Proposed by
James Page
Status: | Merged |
---|---|
Approved by: | Adam Gandelman |
Approved revision: | 62 |
Merged at revision: | 53 |
Proposed branch: | lp:~james-page/charms/precise/quantum-gateway/ha-fixes |
Merge into: | lp:~openstack-charmers/charms/precise/quantum-gateway/ha-support |
Diff against target: |
436 lines (+57/-193) 8 files modified
config.yaml (+1/-0) hooks/hooks.py (+34/-53) hooks/quantum_utils.py (+2/-45) hooks/utils.py (+16/-85) metadata.yaml (+1/-7) templates/nova.conf (+1/-1) templates/ovs_quantum_plugin.ini (+1/-1) templates/quantum.conf (+1/-1) |
To merge this branch: | bzr merge lp:~james-page/charms/precise/quantum-gateway/ha-fixes |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
OpenStack Charmers | Pending | ||
Review via email: mp+152682@code.launchpad.net |
Commit message
Description of the change
Quantum has undergone some refactoring upstream and now includes a scheduler which spread dhcp and l3 agent services across all gateway nodes.
This invalidates the original HA approach; HA was on the plan for the scheduler - trying to find out if it will make grizzly.
Other than that fixed up a few other minor issues and added support for HTTPS on the quantum API service itself.
To post a comment you must log in.
Revision history for this message
Adam Gandelman (gandelman-a) wrote : | # |
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'config.yaml' | |||
2 | --- config.yaml 2013-01-18 10:09:25 +0000 | |||
3 | +++ config.yaml 2013-03-11 14:16:22 +0000 | |||
4 | @@ -7,6 +7,7 @@ | |||
5 | 7 | Supported values include: | 7 | Supported values include: |
6 | 8 | . | 8 | . |
7 | 9 | ovs - OpenVSwitch | 9 | ovs - OpenVSwitch |
8 | 10 | nvp - Nicira Network Virtualization Platform | ||
9 | 10 | ext-port: | 11 | ext-port: |
10 | 11 | type: string | 12 | type: string |
11 | 12 | description: | | 13 | description: | |
12 | 13 | 14 | ||
13 | === removed symlink 'hooks/cluster-relation-changed' | |||
14 | === target was u'hooks.py' | |||
15 | === modified file 'hooks/hooks.py' | |||
16 | --- hooks/hooks.py 2013-02-18 17:50:16 +0000 | |||
17 | +++ hooks/hooks.py 2013-03-11 14:16:22 +0000 | |||
18 | @@ -24,10 +24,11 @@ | |||
19 | 24 | def config_changed(): | 24 | def config_changed(): |
20 | 25 | if PLUGIN in qutils.GATEWAY_PKGS.keys(): | 25 | if PLUGIN in qutils.GATEWAY_PKGS.keys(): |
21 | 26 | render_quantum_conf() | 26 | render_quantum_conf() |
23 | 27 | render_plugin_conf() | 27 | render_dhcp_agent_conf() |
24 | 28 | render_l3_agent_conf() | 28 | render_l3_agent_conf() |
25 | 29 | render_metadata_agent_conf() | 29 | render_metadata_agent_conf() |
26 | 30 | render_metadata_api_conf() | 30 | render_metadata_api_conf() |
27 | 31 | render_plugin_conf() | ||
28 | 31 | if PLUGIN == qutils.OVS: | 32 | if PLUGIN == qutils.OVS: |
29 | 32 | qutils.add_bridge(qutils.INT_BRIDGE) | 33 | qutils.add_bridge(qutils.INT_BRIDGE) |
30 | 33 | qutils.add_bridge(qutils.EXT_BRIDGE) | 34 | qutils.add_bridge(qutils.EXT_BRIDGE) |
31 | @@ -58,6 +59,16 @@ | |||
32 | 58 | ) | 59 | ) |
33 | 59 | 60 | ||
34 | 60 | 61 | ||
35 | 62 | def render_dhcp_agent_conf(): | ||
36 | 63 | if (os.path.exists(qutils.DHCP_AGENT_CONF)): | ||
37 | 64 | with open(qutils.DHCP_AGENT_CONF, "w") as conf: | ||
38 | 65 | conf.write(utils.render_template( | ||
39 | 66 | os.path.basename(qutils.DHCP_AGENT_CONF), | ||
40 | 67 | {} | ||
41 | 68 | ) | ||
42 | 69 | ) | ||
43 | 70 | |||
44 | 71 | |||
45 | 61 | def render_metadata_agent_conf(): | 72 | def render_metadata_agent_conf(): |
46 | 62 | context = get_keystone_conf() | 73 | context = get_keystone_conf() |
47 | 63 | if (context and | 74 | if (context and |
48 | @@ -136,6 +147,8 @@ | |||
49 | 136 | unit, relid), | 147 | unit, relid), |
50 | 137 | "quantum_port": utils.relation_get('quantum_port', | 148 | "quantum_port": utils.relation_get('quantum_port', |
51 | 138 | unit, relid), | 149 | unit, relid), |
52 | 150 | "quantum_url": utils.relation_get('quantum_url', | ||
53 | 151 | unit, relid), | ||
54 | 139 | "region": utils.relation_get('region', | 152 | "region": utils.relation_get('region', |
55 | 140 | unit, relid) | 153 | unit, relid) |
56 | 141 | } | 154 | } |
57 | @@ -197,6 +210,7 @@ | |||
58 | 197 | 210 | ||
59 | 198 | 211 | ||
60 | 199 | def amqp_changed(): | 212 | def amqp_changed(): |
61 | 213 | render_dhcp_agent_conf() | ||
62 | 200 | render_quantum_conf() | 214 | render_quantum_conf() |
63 | 201 | render_metadata_api_conf() | 215 | render_metadata_api_conf() |
64 | 202 | restart_agents() | 216 | restart_agents() |
65 | @@ -222,62 +236,31 @@ | |||
66 | 222 | 236 | ||
67 | 223 | 237 | ||
68 | 224 | def nm_changed(): | 238 | def nm_changed(): |
69 | 239 | render_dhcp_agent_conf() | ||
70 | 225 | render_l3_agent_conf() | 240 | render_l3_agent_conf() |
71 | 226 | render_metadata_agent_conf() | 241 | render_metadata_agent_conf() |
72 | 227 | render_metadata_api_conf() | 242 | render_metadata_api_conf() |
73 | 243 | store_ca_cert() | ||
74 | 228 | restart_agents() | 244 | restart_agents() |
75 | 229 | 245 | ||
76 | 230 | 246 | ||
77 | 247 | def store_ca_cert(): | ||
78 | 248 | ca_cert = get_ca_cert() | ||
79 | 249 | if ca_cert: | ||
80 | 250 | utils.install_ca(ca_cert) | ||
81 | 251 | |||
82 | 252 | |||
83 | 253 | def get_ca_cert(): | ||
84 | 254 | for relid in utils.relation_ids('quantum-network-service'): | ||
85 | 255 | for unit in utils.relation_list(relid): | ||
86 | 256 | ca_cert = utils.relation_get('ca_cert', unit, relid) | ||
87 | 257 | if ca_cert: | ||
88 | 258 | return ca_cert | ||
89 | 259 | return None | ||
90 | 260 | |||
91 | 261 | |||
92 | 231 | def restart_agents(): | 262 | def restart_agents(): |
142 | 232 | if utils.eligible_leader(RESOURCE_GROUP): | 263 | utils.restart(*qutils.GATEWAY_AGENTS[PLUGIN]) |
94 | 233 | utils.restart(*qutils.GATEWAY_AGENTS[PLUGIN]) | ||
95 | 234 | else: | ||
96 | 235 | # Stop any clustered agents and flush local config | ||
97 | 236 | # from network namespaces, ovs ports and dnsmasq instances | ||
98 | 237 | utils.stop(*qutils.CLUSTERED_AGENTS[PLUGIN]) | ||
99 | 238 | utils.restart(*qutils.STANDALONE_AGENTS[PLUGIN]) | ||
100 | 239 | qutils.flush_local_configuration() | ||
101 | 240 | |||
102 | 241 | |||
103 | 242 | RESOURCE_GROUP = 'grp_quantum_services' | ||
104 | 243 | |||
105 | 244 | |||
106 | 245 | def ha_relation_joined(): | ||
107 | 246 | # init services that will be clusterized. Used to disable init scripts | ||
108 | 247 | # Used when resources have upstart jobs that are needed to be disabled. | ||
109 | 248 | # resource_name:init_script_name | ||
110 | 249 | init_services = {'res_quantum_dhcp_agent': 'quantum-dhcp-agent', | ||
111 | 250 | 'res_quantum_l3_agent': 'quantum-l3-agent'} | ||
112 | 251 | |||
113 | 252 | # Obtain resources | ||
114 | 253 | # TODO: Just use upstart for the time being | ||
115 | 254 | #resources = {'res_quantum_dhcp_agent': 'ocf:openstack:quantum-agent-dhcp', | ||
116 | 255 | # 'res_quantum_l3_agent': 'ocf:openstack:quantum-agent-l3'} | ||
117 | 256 | resources = {'res_quantum_dhcp_agent': 'upstart:quantum-dhcp-agent', | ||
118 | 257 | 'res_quantum_l3_agent': 'upstart:quantum-l3-agent'} | ||
119 | 258 | # TODO: monitors are currently disabled as this creates issues | ||
120 | 259 | # when forming the cluster. | ||
121 | 260 | resource_params = {'res_quantum_dhcp_agent': | ||
122 | 261 | 'op monitor interval="5s"', | ||
123 | 262 | 'res_quantum_l3_agent': | ||
124 | 263 | 'op monitor interval="5s"'} | ||
125 | 264 | groups = { | ||
126 | 265 | RESOURCE_GROUP: | ||
127 | 266 | 'res_quantum_dhcp_agent res_quantum_l3_agent' | ||
128 | 267 | } | ||
129 | 268 | # set relation values | ||
130 | 269 | utils.relation_set(resources=resources, | ||
131 | 270 | resource_params=resource_params, | ||
132 | 271 | init_services=init_services, | ||
133 | 272 | groups=groups, | ||
134 | 273 | corosync_bindiface=utils.config_get('ha-bindiface'), | ||
135 | 274 | corosync_mcastport=utils.config_get('ha-mcastport')) | ||
136 | 275 | |||
137 | 276 | |||
138 | 277 | def cluster_changed(): | ||
139 | 278 | if not utils.eligible_leader(RESOURCE_GROUP): | ||
140 | 279 | utils.stop(*qutils.CLUSTERED_AGENTS[PLUGIN]) | ||
141 | 280 | qutils.flush_local_configuration() | ||
143 | 281 | 264 | ||
144 | 282 | 265 | ||
145 | 283 | utils.do_hooks({ | 266 | utils.do_hooks({ |
146 | @@ -288,9 +271,7 @@ | |||
147 | 288 | "shared-db-relation-changed": db_changed, | 271 | "shared-db-relation-changed": db_changed, |
148 | 289 | "amqp-relation-joined": amqp_joined, | 272 | "amqp-relation-joined": amqp_joined, |
149 | 290 | "amqp-relation-changed": amqp_changed, | 273 | "amqp-relation-changed": amqp_changed, |
153 | 291 | "quantum-network-service-relation-changed": nm_changed, | 274 | "quantum-network-service-relation-changed": nm_changed |
151 | 292 | "ha-relation-joined": ha_relation_joined, | ||
152 | 293 | "cluster-relation-changed": cluster_changed | ||
154 | 294 | }) | 275 | }) |
155 | 295 | 276 | ||
156 | 296 | sys.exit(0) | 277 | sys.exit(0) |
157 | 297 | 278 | ||
158 | === modified file 'hooks/quantum_utils.py' | |||
159 | --- hooks/quantum_utils.py 2013-02-18 09:14:49 +0000 | |||
160 | +++ hooks/quantum_utils.py 2013-03-11 14:16:22 +0000 | |||
161 | @@ -6,24 +6,17 @@ | |||
162 | 6 | 6 | ||
163 | 7 | 7 | ||
164 | 8 | OVS = "ovs" | 8 | OVS = "ovs" |
165 | 9 | NVP = "nvp" | ||
166 | 10 | 9 | ||
167 | 11 | OVS_PLUGIN = \ | 10 | OVS_PLUGIN = \ |
168 | 12 | "quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2" | 11 | "quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2" |
169 | 13 | NVP_PLUGIN = \ | ||
170 | 14 | "quantum.plugins.nicira.nicira_nvp_plugin.QuantumPlugin.NvpPluginV2" | ||
171 | 15 | CORE_PLUGIN = { | 12 | CORE_PLUGIN = { |
172 | 16 | OVS: OVS_PLUGIN, | 13 | OVS: OVS_PLUGIN, |
173 | 17 | NVP: NVP_PLUGIN | ||
174 | 18 | } | 14 | } |
175 | 19 | 15 | ||
176 | 20 | OVS_PLUGIN_CONF = \ | 16 | OVS_PLUGIN_CONF = \ |
177 | 21 | "/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini" | 17 | "/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini" |
178 | 22 | NVP_PLUGIN_CONF = \ | ||
179 | 23 | "/etc/quantum/plugins/nicira/nvp.ini" | ||
180 | 24 | PLUGIN_CONF = { | 18 | PLUGIN_CONF = { |
181 | 25 | OVS: OVS_PLUGIN_CONF, | 19 | OVS: OVS_PLUGIN_CONF, |
182 | 26 | NVP: NVP_PLUGIN_CONF | ||
183 | 27 | } | 20 | } |
184 | 28 | 21 | ||
185 | 29 | GATEWAY_PKGS = { | 22 | GATEWAY_PKGS = { |
186 | @@ -34,19 +27,8 @@ | |||
187 | 34 | 'python-mysqldb', | 27 | 'python-mysqldb', |
188 | 35 | "nova-api-metadata" | 28 | "nova-api-metadata" |
189 | 36 | ], | 29 | ], |
190 | 37 | NVP: [ | ||
191 | 38 | "quantum-plugin-nicira", | ||
192 | 39 | "quantum-l3-agent", | ||
193 | 40 | "quantum-dhcp-agent", | ||
194 | 41 | 'python-mysqldb', | ||
195 | 42 | "nova-api-metadata" | ||
196 | 43 | ] | ||
197 | 44 | } | 30 | } |
198 | 45 | 31 | ||
199 | 46 | # TODO: conditionally add quantum-metadata-agent if | ||
200 | 47 | # running 2013.1 onwards. OR add some overrides | ||
201 | 48 | # start on starting quantum-l3-agent | ||
202 | 49 | # stop on stopping quantum-l3-agent | ||
203 | 50 | GATEWAY_AGENTS = { | 32 | GATEWAY_AGENTS = { |
204 | 51 | OVS: [ | 33 | OVS: [ |
205 | 52 | "quantum-plugin-openvswitch-agent", | 34 | "quantum-plugin-openvswitch-agent", |
206 | @@ -54,33 +36,8 @@ | |||
207 | 54 | "quantum-dhcp-agent", | 36 | "quantum-dhcp-agent", |
208 | 55 | "nova-api-metadata" | 37 | "nova-api-metadata" |
209 | 56 | ], | 38 | ], |
237 | 57 | NVP: [ | 39 | } |
238 | 58 | "quantum-l3-agent", | 40 | |
212 | 59 | "quantum-dhcp-agent", | ||
213 | 60 | "nova-api-metadata" | ||
214 | 61 | ] | ||
215 | 62 | } | ||
216 | 63 | |||
217 | 64 | CLUSTERED_AGENTS = { | ||
218 | 65 | OVS: [ | ||
219 | 66 | "quantum-l3-agent", | ||
220 | 67 | "quantum-dhcp-agent", | ||
221 | 68 | ], | ||
222 | 69 | NVP: [ | ||
223 | 70 | "quantum-l3-agent", | ||
224 | 71 | "quantum-dhcp-agent", | ||
225 | 72 | ] | ||
226 | 73 | } | ||
227 | 74 | |||
228 | 75 | STANDALONE_AGENTS = { | ||
229 | 76 | OVS: [ | ||
230 | 77 | "quantum-plugin-openvswitch-agent", | ||
231 | 78 | "nova-api-metadata" | ||
232 | 79 | ], | ||
233 | 80 | NVP: [ | ||
234 | 81 | "nova-api-metadata" | ||
235 | 82 | ] | ||
236 | 83 | } | ||
239 | 84 | 41 | ||
240 | 85 | if get_os_version('quantum-common') >= "2013.1": | 42 | if get_os_version('quantum-common') >= "2013.1": |
241 | 86 | for plugin in GATEWAY_AGENTS: | 43 | for plugin in GATEWAY_AGENTS: |
242 | 87 | 44 | ||
243 | === modified file 'hooks/utils.py' | |||
244 | --- hooks/utils.py 2013-02-08 17:51:20 +0000 | |||
245 | +++ hooks/utils.py 2013-03-11 14:16:22 +0000 | |||
246 | @@ -12,6 +12,7 @@ | |||
247 | 12 | import socket | 12 | import socket |
248 | 13 | import sys | 13 | import sys |
249 | 14 | import apt_pkg as apt | 14 | import apt_pkg as apt |
250 | 15 | import base64 | ||
251 | 15 | 16 | ||
252 | 16 | 17 | ||
253 | 17 | def do_hooks(hooks): | 18 | def do_hooks(hooks): |
254 | @@ -86,8 +87,8 @@ | |||
255 | 86 | if source.startswith('cloud:'): | 87 | if source.startswith('cloud:'): |
256 | 87 | install('ubuntu-cloud-keyring') | 88 | install('ubuntu-cloud-keyring') |
257 | 88 | pocket = source.split(':')[1] | 89 | pocket = source.split(':')[1] |
260 | 89 | with open('/etc/apt/sources.list.d/cloud-archive.list', 'w') as apt: | 90 | with open('/etc/apt/sources.list.d/cloud-archive.list', 'w') as sfile: |
261 | 90 | apt.write(CLOUD_ARCHIVE.format(CLOUD_ARCHIVE_POCKETS[pocket])) | 91 | sfile.write(CLOUD_ARCHIVE.format(CLOUD_ARCHIVE_POCKETS[pocket])) |
262 | 91 | if source.startswith('deb'): | 92 | if source.startswith('deb'): |
263 | 92 | l = len(source.split('|')) | 93 | l = len(source.split('|')) |
264 | 93 | if l == 2: | 94 | if l == 2: |
265 | @@ -101,8 +102,8 @@ | |||
266 | 101 | elif l == 1: | 102 | elif l == 1: |
267 | 102 | apt_line = source | 103 | apt_line = source |
268 | 103 | 104 | ||
271 | 104 | with open('/etc/apt/sources.list.d/quantum.list', 'w') as apt: | 105 | with open('/etc/apt/sources.list.d/quantum.list', 'w') as sfile: |
272 | 105 | apt.write(apt_line + "\n") | 106 | sfile.write(apt_line + "\n") |
273 | 106 | cmd = [ | 107 | cmd = [ |
274 | 107 | 'apt-get', | 108 | 'apt-get', |
275 | 108 | 'update' | 109 | 'update' |
276 | @@ -214,38 +215,15 @@ | |||
277 | 214 | return hostname | 215 | return hostname |
278 | 215 | except socket.error: | 216 | except socket.error: |
279 | 216 | pass | 217 | pass |
295 | 217 | try: | 218 | answers = dns.resolver.query(hostname, 'A') |
296 | 218 | answers = dns.resolver.query(hostname, 'A') | 219 | if answers: |
297 | 219 | if answers: | 220 | return answers[0].address |
298 | 220 | return answers[0].address | 221 | else: |
299 | 221 | except dns.resolver.NXDOMAIN: | 222 | return None |
285 | 222 | pass | ||
286 | 223 | return None | ||
287 | 224 | |||
288 | 225 | |||
289 | 226 | CLUSTER_RESOURCES = { | ||
290 | 227 | 'quantum-dhcp-agent': 'res_quantum_dhcp_agent', | ||
291 | 228 | 'quantum-l3-agent': 'res_quantum_l3_agent' | ||
292 | 229 | } | ||
293 | 230 | |||
294 | 231 | HAMARKER = '/var/lib/juju/haconfigured' | ||
300 | 232 | 223 | ||
301 | 233 | 224 | ||
302 | 234 | def _service_ctl(service, action): | 225 | def _service_ctl(service, action): |
317 | 235 | if (os.path.exists(HAMARKER) and | 226 | subprocess.call(['service', service, action]) |
304 | 236 | os.path.exists(os.path.join('/etc/init/', | ||
305 | 237 | '{}.override'.format(service))) and | ||
306 | 238 | service in CLUSTER_RESOURCES): | ||
307 | 239 | hostname = str(subprocess.check_output(['hostname'])).strip() | ||
308 | 240 | service_status = \ | ||
309 | 241 | subprocess.check_output(['crm', 'resource', 'show', | ||
310 | 242 | CLUSTER_RESOURCES[service]]) | ||
311 | 243 | # Only restart if we are the node that owns the service | ||
312 | 244 | if hostname in service_status: | ||
313 | 245 | subprocess.check_call(['crm', 'resource', action, | ||
314 | 246 | CLUSTER_RESOURCES[service]]) | ||
315 | 247 | else: | ||
316 | 248 | subprocess.call(['service', service, action]) | ||
318 | 249 | 227 | ||
319 | 250 | 228 | ||
320 | 251 | def restart(*services): | 229 | def restart(*services): |
321 | @@ -273,55 +251,8 @@ | |||
322 | 273 | return None | 251 | return None |
323 | 274 | 252 | ||
324 | 275 | 253 | ||
377 | 276 | def is_clustered(): | 254 | def install_ca(ca_cert): |
378 | 277 | for r_id in (relation_ids('ha') or []): | 255 | with open('/usr/local/share/ca-certificates/keystone_juju_ca_cert.crt', |
379 | 278 | for unit in (relation_list(r_id) or []): | 256 | 'w') as crt: |
380 | 279 | clustered = relation_get('clustered', | 257 | crt.write(base64.b64decode(ca_cert)) |
381 | 280 | unit=unit, | 258 | subprocess.check_call(['update-ca-certificates', '--fresh']) |
330 | 281 | rid=r_id) | ||
331 | 282 | if clustered: | ||
332 | 283 | return True | ||
333 | 284 | return False | ||
334 | 285 | |||
335 | 286 | |||
336 | 287 | def is_leader(resource): | ||
337 | 288 | if os.path.exists('/usr/sbin/crm'): | ||
338 | 289 | try: | ||
339 | 290 | status = subprocess.check_output(['crm', 'resource', | ||
340 | 291 | 'show', resource]) | ||
341 | 292 | hostname = get_unit_hostname() | ||
342 | 293 | if hostname in status: | ||
343 | 294 | return True | ||
344 | 295 | except subprocess.CalledProcessError: | ||
345 | 296 | pass | ||
346 | 297 | return False | ||
347 | 298 | |||
348 | 299 | |||
349 | 300 | def peer_units(): | ||
350 | 301 | peers = [] | ||
351 | 302 | for r_id in (relation_ids('cluster') or []): | ||
352 | 303 | for unit in (relation_list(r_id) or []): | ||
353 | 304 | peers.append(unit) | ||
354 | 305 | return peers | ||
355 | 306 | |||
356 | 307 | |||
357 | 308 | def oldest_peer(peers): | ||
358 | 309 | local_unit_no = int(os.getenv('JUJU_UNIT_NAME').split('/')[1]) | ||
359 | 310 | for peer in peers: | ||
360 | 311 | remote_unit_no = int(peer.split('/')[1]) | ||
361 | 312 | if remote_unit_no < local_unit_no: | ||
362 | 313 | return False | ||
363 | 314 | return True | ||
364 | 315 | |||
365 | 316 | |||
366 | 317 | def eligible_leader(resource): | ||
367 | 318 | if is_clustered(): | ||
368 | 319 | if not is_leader(resource): | ||
369 | 320 | juju_log('INFO', 'Deferring action to CRM leader.') | ||
370 | 321 | return False | ||
371 | 322 | else: | ||
372 | 323 | peers = peer_units() | ||
373 | 324 | if peers and not oldest_peer(peers): | ||
374 | 325 | juju_log('INFO', 'Deferring action to oldest service unit.') | ||
375 | 326 | return False | ||
376 | 327 | return True | ||
382 | 328 | 259 | ||
383 | === modified file 'metadata.yaml' | |||
384 | --- metadata.yaml 2013-02-08 16:10:48 +0000 | |||
385 | +++ metadata.yaml 2013-03-11 14:16:22 +0000 | |||
386 | @@ -20,10 +20,4 @@ | |||
387 | 20 | shared-db: | 20 | shared-db: |
388 | 21 | interface: mysql-shared | 21 | interface: mysql-shared |
389 | 22 | amqp: | 22 | amqp: |
397 | 23 | interface: rabbitmq | 23 | interface: rabbitmq |
391 | 24 | ha: | ||
392 | 25 | interface: hacluster | ||
393 | 26 | scope: container | ||
394 | 27 | peers: | ||
395 | 28 | cluster: | ||
396 | 29 | interface: quantum-gateway-ha | ||
398 | 30 | \ No newline at end of file | 24 | \ No newline at end of file |
399 | 31 | 25 | ||
400 | === modified file 'templates/nova.conf' | |||
401 | --- templates/nova.conf 2013-01-18 12:39:10 +0000 | |||
402 | +++ templates/nova.conf 2013-03-11 14:16:22 +0000 | |||
403 | @@ -18,7 +18,7 @@ | |||
404 | 18 | # Access to quantum API services | 18 | # Access to quantum API services |
405 | 19 | network_api_class=nova.network.quantumv2.api.API | 19 | network_api_class=nova.network.quantumv2.api.API |
406 | 20 | quantum_auth_strategy=keystone | 20 | quantum_auth_strategy=keystone |
408 | 21 | quantum_url=http://{{ quantum_host }}:{{ quantum_port }} | 21 | quantum_url={{ quantum_url }} |
409 | 22 | quantum_admin_tenant_name={{ service_tenant }} | 22 | quantum_admin_tenant_name={{ service_tenant }} |
410 | 23 | quantum_admin_username={{ service_username }} | 23 | quantum_admin_username={{ service_username }} |
411 | 24 | quantum_admin_password={{ service_password }} | 24 | quantum_admin_password={{ service_password }} |
412 | 25 | 25 | ||
413 | === modified file 'templates/ovs_quantum_plugin.ini' | |||
414 | --- templates/ovs_quantum_plugin.ini 2012-11-05 11:59:27 +0000 | |||
415 | +++ templates/ovs_quantum_plugin.ini 2013-03-11 14:16:22 +0000 | |||
416 | @@ -7,5 +7,5 @@ | |||
417 | 7 | enable_tunneling = True | 7 | enable_tunneling = True |
418 | 8 | tunnel_id_ranges = 1:1000 | 8 | tunnel_id_ranges = 1:1000 |
419 | 9 | [AGENT] | 9 | [AGENT] |
421 | 10 | polling_interval = 2 | 10 | polling_interval = 10 |
422 | 11 | root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf | 11 | root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf |
423 | 12 | 12 | ||
424 | === modified file 'templates/quantum.conf' | |||
425 | --- templates/quantum.conf 2013-02-18 09:14:49 +0000 | |||
426 | +++ templates/quantum.conf 2013-03-11 14:16:22 +0000 | |||
427 | @@ -14,7 +14,7 @@ | |||
428 | 14 | list_notifier_drivers = quantum.openstack.common.notifier.rabbit_notifier | 14 | list_notifier_drivers = quantum.openstack.common.notifier.rabbit_notifier |
429 | 15 | lock_path = /var/lock/quantum | 15 | lock_path = /var/lock/quantum |
430 | 16 | # Ensure that netns cleanup operations kill processes and remove ports | 16 | # Ensure that netns cleanup operations kill processes and remove ports |
432 | 17 | force = true | 17 | # force = true |
433 | 18 | [AGENT] | 18 | [AGENT] |
434 | 19 | root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf | 19 | root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf |
435 | 20 | [QUOTAS] | 20 | [QUOTAS] |
436 | 21 | \ No newline at end of file | 21 | \ No newline at end of file |
James-
This looks good to me, but I can't seem to actually push the merge back?
$ bzr push :parent chroot- 93200144: ///~openstack- charmers/ charms/ precise/ quantum- gateway/ ha-support/ .bzr/branch/ lock): Transport operation not possible: readonly transport
bzr: ERROR: Cannot lock LockDir(