Merge ~hopem/stsstack-bundles:fix-mysql-innodb-cluster into stsstack-bundles:master
- Git
- lp:~hopem/stsstack-bundles
- fix-mysql-innodb-cluster
- Merge into master
Proposed by
Edward Hope-Morley
Status: | Merged |
---|---|
Merged at revision: | 5ff193183d11e2f6f279a771ea4208579c6dc380 |
Proposed branch: | ~hopem/stsstack-bundles:fix-mysql-innodb-cluster |
Merge into: | stsstack-bundles:master |
Diff against target: |
402 lines (+110/-26) 23 files modified
ceph/ceph.yaml.template (+2/-2) ceph/pipeline/02configure (+3/-0) common/generate_bundle_base (+9/-1) common/render.d/all (+65/-0) kubernetes/pipeline/02configure (+3/-0) openstack/module_defaults (+1/-0) openstack/openstack.yaml.template (+5/-5) openstack/pipeline/02configure (+3/-0) overlays/barbican.yaml (+1/-1) overlays/designate.yaml (+1/-1) overlays/gnocchi.yaml (+1/-1) overlays/heat.yaml (+1/-1) overlays/k8s-keystone.yaml (+1/-1) overlays/manila.yaml (+2/-2) overlays/mysql-innodb-cluster-router.yaml (+1/-0) overlays/mysql-innodb-cluster.yaml (+1/-4) overlays/octavia.yaml (+1/-1) overlays/placement.yaml (+1/-1) overlays/telemetry-legacy-aodh.yaml (+1/-1) overlays/telemetry.yaml (+1/-1) overlays/vault.yaml (+1/-1) swift/pipeline/02configure (+3/-0) swift/swift.yaml.template (+2/-2) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Hemanth Nakkina | Approve | ||
Review via email: mp+396086@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/ceph/ceph.yaml.template b/ceph/ceph.yaml.template |
2 | index b355b64..3dbed61 100644 |
3 | --- a/ceph/ceph.yaml.template |
4 | +++ b/ceph/ceph.yaml.template |
5 | @@ -42,8 +42,8 @@ applications: |
6 | verbose: *verbose |
7 | openstack-origin: *openstack_origin |
8 | relations: |
9 | - - [ keystone, mysql ] |
10 | + - [ keystone:shared-db, __MYSQL_INTERFACE__ ] |
11 | - [ ceph-mon, ceph-osd ] |
12 | - - [ glance, mysql ] |
13 | + - [ glance:shared-db, __MYSQL_INTERFACE__ ] |
14 | - [ glance, keystone ] |
15 | - [ glance, __CEPH_INTERFACE__] |
16 | diff --git a/ceph/pipeline/02configure b/ceph/pipeline/02configure |
17 | index fb5cd8f..48c4575 100644 |
18 | --- a/ceph/pipeline/02configure |
19 | +++ b/ceph/pipeline/02configure |
20 | @@ -13,6 +13,9 @@ if has_min_series focal; then |
21 | # There is no Focal support for percona-cluster |
22 | MOD_PARAMS[__NUM_MYSQL_UNITS__]=3 |
23 | MOD_OVERLAYS+=( "mysql-innodb-cluster.yaml") |
24 | + # this will be auto-generated for each app (see common/render.d/all) |
25 | + MOD_OVERLAYS+=( "mysql-innodb-cluster-router.yaml" ) |
26 | + MOD_PARAMS[__MYSQL_INTERFACE__]='__APPLICATION_MYSQL_INNODB_ROUTER__' |
27 | else |
28 | MOD_OVERLAYS+=( "mysql.yaml" ) |
29 | fi |
30 | diff --git a/common/generate_bundle_base b/common/generate_bundle_base |
31 | index 5a47e02..1a7b005 100644 |
32 | --- a/common/generate_bundle_base |
33 | +++ b/common/generate_bundle_base |
34 | @@ -66,8 +66,9 @@ finish () |
35 | # command. |
36 | has_opt --replay && finish |
37 | |
38 | -# Flush any existing overlays |
39 | +# Purge any existing overlays and parts |
40 | rm -f $bundles_dir/o/* |
41 | +rm -rf $bundles_dir/parts |
42 | |
43 | # Establish what cloud provider is in use and if it's MAAS, use unit placement. |
44 | cloud=`juju show-model| sed -rn 's/.+cloud:\s*(.+).*/\1/p'| uniq` |
45 | @@ -77,6 +78,9 @@ if [[ $type = maas ]]; then |
46 | MASTER_OPTS[HYPERCONVERGED_DEPLOYMENT]=true |
47 | fi |
48 | |
49 | +# load renderers |
50 | +RENDER_PARTS_DIR=$bundles_dir/parts |
51 | +mkdir -p $RENDER_PARTS_DIR |
52 | . $MOD_DIR/common/render.d/all |
53 | if ${MASTER_OPTS[HYPERCONVERGED_DEPLOYMENT]}; then |
54 | PLACEMENT_OVERLAYS_DIR=$bundles_dir/p |
55 | @@ -182,6 +186,10 @@ if ${MASTER_OPTS[HYPERCONVERGED_DEPLOYMENT]}; then |
56 | find $bundles_dir -name \*.yaml| xargs -l sed -i -r "/^\s+charm:.+/a$bindings" |
57 | fi |
58 | |
59 | +# put together any mysql interface parts that may have been generated as part |
60 | +# of render() |
61 | +aggregate_mysql_interface_parts $bundles_dir/o |
62 | + |
63 | ((${#overlay_opts[@]})) && overlay_opts+=("") # right padding |
64 | |
65 | base_bundle=$bundles_dir/`basename $bundle` |
66 | diff --git a/common/render.d/all b/common/render.d/all |
67 | index ad841dc..39939da 100644 |
68 | --- a/common/render.d/all |
69 | +++ b/common/render.d/all |
70 | @@ -2,6 +2,66 @@ |
71 | |
72 | # Renderers defined here must be applied to any/all templates. |
73 | |
74 | +__generate_app_mysql_inndodb_router () |
75 | +{ |
76 | + local app="$1" |
77 | + |
78 | + mkdir -p $RENDER_PARTS_DIR/mysql/{applications,relations} |
79 | + |
80 | +cat << EOF > $RENDER_PARTS_DIR/mysql/applications/$app-mysql-innodb-cluster-router.part |
81 | + $app-mysql-router: |
82 | + charm: cs:~openstack-charmers-next/mysql-router |
83 | +EOF |
84 | +cat << EOF > $RENDER_PARTS_DIR/mysql/relations/$app-mysql-innodb-cluster-router.part |
85 | + - [ mysql:db-router, $app-mysql-router:db-router ] |
86 | +EOF |
87 | +} |
88 | + |
89 | +__create_mysql_interface_parts () |
90 | +{ |
91 | + local template=$1 |
92 | + local templates_path=$2 |
93 | + local template_short=`basename $1` |
94 | + local template_key=__APPLICATION_MYSQL_INNODB_ROUTER__ |
95 | + |
96 | + readarray -t lines<<<"`grep "$template_key" $template`" |
97 | + ((${#lines[@]})) && [ -n "${lines[0]}" ] || return 0 |
98 | + for line in "${lines[@]}"; do |
99 | + app=`echo $line| sed -r "s/.*\s+([[:alnum:]\-]+):shared-db.*/\1/g"` |
100 | + [ -n "$app" ] || continue |
101 | + sed -i -r "s/($app:shared-db\s*,\s*)$template_key/\1$app-mysql-router:shared-db/g" $template |
102 | + __generate_app_mysql_inndodb_router $app |
103 | + done |
104 | +} |
105 | + |
106 | +__create_yaml_dict_entry () |
107 | +{ |
108 | + local section=$1 |
109 | + shift |
110 | + |
111 | + cat <<- EOF |
112 | + $section: |
113 | + $@ |
114 | + EOF |
115 | +} |
116 | + |
117 | +aggregate_mysql_interface_parts() |
118 | +{ |
119 | + # this is called once after all the individial mysql application interface |
120 | + # parts have been created. |
121 | + local rendered_path=$1 |
122 | + local dir |
123 | + |
124 | + ((`find $RENDER_PARTS_DIR/mysql -type f| wc -l`)) || return 0 |
125 | + |
126 | + # this function is only expected to be called once so ensure clean file. |
127 | + echo -e "# overlay auto-generated by stsstack-bundles\n" > $rendered_path/mysql-innodb-cluster-router.yaml |
128 | + for key in applications relations; do |
129 | + dir=$RENDER_PARTS_DIR/mysql/$key |
130 | + [ -d "$dir" ] || return 0 |
131 | + __create_yaml_dict_entry $key "`cat $dir/*`" >> $rendered_path/mysql-innodb-cluster-router.yaml |
132 | + done |
133 | +} |
134 | |
135 | # Each custom bundle generator can specify a set of parameters to apply to |
136 | # bundle templates as variables. They are converted into a sed statement that |
137 | @@ -40,5 +100,10 @@ render () { |
138 | if has_opt --use-stable-charms; then |
139 | sed -i -r 's,~openstack-charmers-next/,,g' $1 |
140 | fi |
141 | + |
142 | + # render mysql interface if exists |
143 | + # note: no changes applied until aggregate_mysql_interface_parts() |
144 | + # called so be sure to do so once all rendering complete. |
145 | + __create_mysql_interface_parts $1 $MOD_DIR/overlays |
146 | } |
147 | |
148 | diff --git a/kubernetes/pipeline/02configure b/kubernetes/pipeline/02configure |
149 | index 310dee1..d0e8221 100644 |
150 | --- a/kubernetes/pipeline/02configure |
151 | +++ b/kubernetes/pipeline/02configure |
152 | @@ -37,6 +37,9 @@ add_mysql_overlay () |
153 | # There is no Focal support for percona-cluster |
154 | MOD_PARAMS[__NUM_MYSQL_UNITS__]=3 |
155 | MOD_OVERLAYS+=( "mysql-innodb-cluster.yaml") |
156 | + # this will be auto-generated for each app (see common/render.d/all) |
157 | + MOD_OVERLAYS+=( "mysql-innodb-cluster-router.yaml" ) |
158 | + MOD_PARAMS[__MYSQL_INTERFACE__]='__APPLICATION_MYSQL_INNODB_ROUTER__' |
159 | else |
160 | MOD_OVERLAYS+=( "mysql.yaml" ) |
161 | fi |
162 | diff --git a/openstack/module_defaults b/openstack/module_defaults |
163 | index 26fb26c..cb57bed 100644 |
164 | --- a/openstack/module_defaults |
165 | +++ b/openstack/module_defaults |
166 | @@ -44,6 +44,7 @@ MOD_PARAMS[__AMPHORA_SSH_PUB_KEY__]='' |
167 | MOD_PARAMS[__GSSS_SWIFT_ENABLED__]=false # glance-simplestreams-sync can optionally store index data in swift |
168 | MOD_PARAMS[__LDAP_SERVER__]='' |
169 | MOD_PARAMS[__OVERLAY_NETWORK_TYPE__]='vxlan' |
170 | +MOD_PARAMS[__MYSQL_INTERFACE__]='mysql:shared-db' |
171 | |
172 | # This is enough for creating one ubuntu vm or multiple cirros vms but some |
173 | # scenarios may want to allow more per compute (e.g. octavia). |
174 | diff --git a/openstack/openstack.yaml.template b/openstack/openstack.yaml.template |
175 | index 2fbcb39..db28cf4 100644 |
176 | --- a/openstack/openstack.yaml.template |
177 | +++ b/openstack/openstack.yaml.template |
178 | @@ -93,8 +93,8 @@ applications: |
179 | ssl_cert: *ssl_cert |
180 | ssl_key: *ssl_key |
181 | relations: |
182 | - - [ keystone, mysql ] |
183 | - - [ "nova-cloud-controller:shared-db", mysql ] |
184 | + - [ keystone:shared-db, __MYSQL_INTERFACE__ ] |
185 | + - [ nova-cloud-controller:shared-db, __MYSQL_INTERFACE__ ] |
186 | - [ "nova-cloud-controller:amqp", rabbitmq-server ] |
187 | - [ nova-cloud-controller, glance ] |
188 | - [ nova-cloud-controller, keystone ] |
189 | @@ -102,15 +102,15 @@ relations: |
190 | - - nova-compute |
191 | - rabbitmq-server:amqp |
192 | - [ nova-compute, glance ] |
193 | - - [ glance, mysql ] |
194 | + - [ glance:shared-db, __MYSQL_INTERFACE__ ] |
195 | - [ glance, keystone ] |
196 | - [ glance, "cinder:image-service" ] |
197 | - [ glance, rabbitmq-server ] |
198 | - - [ cinder, mysql ] |
199 | + - [ cinder:shared-db, __MYSQL_INTERFACE__ ] |
200 | - [ cinder, rabbitmq-server ] |
201 | - [ cinder, nova-cloud-controller ] |
202 | - [ cinder, keystone ] |
203 | - - [ neutron-api, mysql ] |
204 | + - [ neutron-api:shared-db, __MYSQL_INTERFACE__ ] |
205 | - [ neutron-api, rabbitmq-server ] |
206 | - [ neutron-api, nova-cloud-controller ] |
207 | - [ neutron-api, keystone ] |
208 | diff --git a/openstack/pipeline/02configure b/openstack/pipeline/02configure |
209 | index 9ad9d7a..6d693e2 100644 |
210 | --- a/openstack/pipeline/02configure |
211 | +++ b/openstack/pipeline/02configure |
212 | @@ -282,6 +282,9 @@ do |
213 | if has_opt --vault; then |
214 | MOD_OVERLAYS+=( "vault-certificates-mysql-innodb-cluster.yaml" ) |
215 | fi |
216 | + # this will be auto-generated for each app (see common/render.d/all) |
217 | + MOD_OVERLAYS+=( "mysql-innodb-cluster-router.yaml" ) |
218 | + MOD_PARAMS[__MYSQL_INTERFACE__]='__APPLICATION_MYSQL_INNODB_ROUTER__' |
219 | ;; |
220 | --no-ml2dns) #__OPT__ |
221 | conflicts_with $1 --ml2dns |
222 | diff --git a/overlays/barbican.yaml b/overlays/barbican.yaml |
223 | index 5ba5d11..561b33a 100644 |
224 | --- a/overlays/barbican.yaml |
225 | +++ b/overlays/barbican.yaml |
226 | @@ -13,6 +13,6 @@ applications: |
227 | openstack-origin: *openstack_origin |
228 | relations: |
229 | - [ barbican:amqp, rabbitmq-server:amqp ] |
230 | - - [ barbican:shared-db, mysql:shared-db ] |
231 | + - [ barbican:shared-db, __MYSQL_INTERFACE__ ] |
232 | - [ barbican:identity-service, keystone:identity-service ] |
233 | |
234 | diff --git a/overlays/designate.yaml b/overlays/designate.yaml |
235 | index 85603d3..5c1f1f8 100644 |
236 | --- a/overlays/designate.yaml |
237 | +++ b/overlays/designate.yaml |
238 | @@ -23,7 +23,7 @@ applications: |
239 | reverse-dns-lookup: True |
240 | relations: |
241 | - [ designate, keystone ] |
242 | - - [ designate, mysql ] |
243 | + - [ designate:shared-db, __MYSQL_INTERFACE__ ] |
244 | - [ designate, rabbitmq-server ] |
245 | - [ designate, designate-bind ] |
246 | - [ designate, memcached ] |
247 | diff --git a/overlays/gnocchi.yaml b/overlays/gnocchi.yaml |
248 | index 1c67a1f..714179d 100644 |
249 | --- a/overlays/gnocchi.yaml |
250 | +++ b/overlays/gnocchi.yaml |
251 | @@ -13,7 +13,7 @@ applications: |
252 | openstack-origin: *openstack_origin |
253 | relations: |
254 | - [ gnocchi, __CEPH_INTERFACE__ ] |
255 | - - [ gnocchi, mysql ] |
256 | + - [ gnocchi:shared-db, __MYSQL_INTERFACE__ ] |
257 | - [ gnocchi, rabbitmq-server ] |
258 | - [ gnocchi, memcached ] |
259 | - [ gnocchi, ceilometer ] |
260 | diff --git a/overlays/heat.yaml b/overlays/heat.yaml |
261 | index 272aa93..c9ef444 100644 |
262 | --- a/overlays/heat.yaml |
263 | +++ b/overlays/heat.yaml |
264 | @@ -13,6 +13,6 @@ applications: |
265 | verbose: *verbose |
266 | openstack-origin: *openstack_origin |
267 | relations: |
268 | - - [ heat, mysql ] |
269 | + - [ heat:shared-db, __MYSQL_INTERFACE__ ] |
270 | - [ heat, keystone ] |
271 | - [ heat, rabbitmq-server ] |
272 | diff --git a/overlays/k8s-keystone.yaml b/overlays/k8s-keystone.yaml |
273 | index a49829a..9b5ffcf 100644 |
274 | --- a/overlays/k8s-keystone.yaml |
275 | +++ b/overlays/k8s-keystone.yaml |
276 | @@ -1,3 +1,3 @@ |
277 | relations: |
278 | - - [ 'keystone:shared-db', 'mysql:shared-db' ] |
279 | + - [ 'keystone:shared-db', '__MYSQL_INTERFACE__' ] |
280 | - [ 'kubernetes-master:keystone-credentials', 'keystone:identity-credentials' ] |
281 | diff --git a/overlays/manila.yaml b/overlays/manila.yaml |
282 | index 046f657..f70de3d 100644 |
283 | --- a/overlays/manila.yaml |
284 | +++ b/overlays/manila.yaml |
285 | @@ -23,10 +23,10 @@ applications: |
286 | share-protocols: NFS |
287 | relations: |
288 | - [ manila-ganesha, __CEPH_INTERFACE__ ] |
289 | - - [ manila-ganesha, mysql ] |
290 | + - [ manila-ganesha:shared-db, __MYSQL_INTERFACE__ ] |
291 | - [ manila-ganesha, rabbitmq-server ] |
292 | - [ manila-ganesha, keystone ] |
293 | - [ manila, manila-ganesha ] |
294 | - [ manila, rabbitmq-server ] |
295 | - [ manila, keystone ] |
296 | - - [ manila, mysql ] |
297 | + - [ manila:shared-db, __MYSQL_INTERFACE__ ] |
298 | diff --git a/overlays/mysql-innodb-cluster-router.yaml b/overlays/mysql-innodb-cluster-router.yaml |
299 | new file mode 100644 |
300 | index 0000000..0328246 |
301 | --- /dev/null |
302 | +++ b/overlays/mysql-innodb-cluster-router.yaml |
303 | @@ -0,0 +1 @@ |
304 | +# Intentionally blank, will be populated by render.d |
305 | diff --git a/overlays/mysql-innodb-cluster.yaml b/overlays/mysql-innodb-cluster.yaml |
306 | index 2c7f9e2..a2bd3d1 100644 |
307 | --- a/overlays/mysql-innodb-cluster.yaml |
308 | +++ b/overlays/mysql-innodb-cluster.yaml |
309 | @@ -10,7 +10,4 @@ applications: |
310 | source: *source |
311 | innodb-buffer-pool-size: 50% |
312 | max-connections: 20000 |
313 | - msyql-router: |
314 | - charm: cs:~openstack-charmers-next/mysql-router |
315 | -relations: |
316 | - - [mysql:db-router, msyql-router:db-router] |
317 | + |
318 | diff --git a/overlays/octavia.yaml b/overlays/octavia.yaml |
319 | index 8c1eddd..362501d 100644 |
320 | --- a/overlays/octavia.yaml |
321 | +++ b/overlays/octavia.yaml |
322 | @@ -13,7 +13,7 @@ applications: |
323 | amp-ssh-key-name: amphora-backdoor |
324 | amp-ssh-pub-key: '__AMPHORA_SSH_PUB_KEY__' |
325 | relations: |
326 | - - [ octavia:shared-db, mysql:shared-db ] |
327 | + - [ octavia:shared-db, __MYSQL_INTERFACE__ ] |
328 | - [ octavia:identity-service, keystone:identity-service ] |
329 | - [ octavia:amqp, rabbitmq-server:amqp ] |
330 | - [ octavia:neutron-api, neutron-api:neutron-load-balancer ] |
331 | diff --git a/overlays/placement.yaml b/overlays/placement.yaml |
332 | index 24df1aa..3cad461 100644 |
333 | --- a/overlays/placement.yaml |
334 | +++ b/overlays/placement.yaml |
335 | @@ -11,6 +11,6 @@ applications: |
336 | debug: *debug |
337 | openstack-origin: *openstack_origin |
338 | relations: |
339 | - - [ placement, mysql ] |
340 | + - [ placement:shared-db, __MYSQL_INTERFACE__ ] |
341 | - [ placement, keystone ] |
342 | - [ placement, nova-cloud-controller ] |
343 | diff --git a/overlays/telemetry-legacy-aodh.yaml b/overlays/telemetry-legacy-aodh.yaml |
344 | index 09dd655..0a0976c 100644 |
345 | --- a/overlays/telemetry-legacy-aodh.yaml |
346 | +++ b/overlays/telemetry-legacy-aodh.yaml |
347 | @@ -34,5 +34,5 @@ relations: |
348 | - [ ceilometer-agent, ceilometer ] |
349 | - [ ceilometer-agent, rabbitmq-server ] |
350 | - [ aodh, rabbitmq-server ] |
351 | - - [ aodh, mysql ] |
352 | + - [ aodh:shared-db, __MYSQL_INTERFACE__ ] |
353 | - [ aodh, keystone ] |
354 | diff --git a/overlays/telemetry.yaml b/overlays/telemetry.yaml |
355 | index 0f48459..3cdaad1 100644 |
356 | --- a/overlays/telemetry.yaml |
357 | +++ b/overlays/telemetry.yaml |
358 | @@ -29,5 +29,5 @@ relations: |
359 | - [ ceilometer-agent, ceilometer ] |
360 | - [ ceilometer-agent, rabbitmq-server ] |
361 | - [ aodh, rabbitmq-server ] |
362 | - - [ aodh, mysql ] |
363 | + - [ aodh:shared-db, __MYSQL_INTERFACE__ ] |
364 | - [ aodh, keystone ] |
365 | diff --git a/overlays/vault.yaml b/overlays/vault.yaml |
366 | index 7301c0c..ddc5ebb 100644 |
367 | --- a/overlays/vault.yaml |
368 | +++ b/overlays/vault.yaml |
369 | @@ -5,4 +5,4 @@ applications: |
370 | options: |
371 | auto-generate-root-ca-cert: true |
372 | relations: |
373 | - - [ 'mysql:shared-db', 'vault:shared-db' ] |
374 | + - [ vault:shared-db, __MYSQL_INTERFACE__ ] |
375 | diff --git a/swift/pipeline/02configure b/swift/pipeline/02configure |
376 | index 0907229..92383ba 100644 |
377 | --- a/swift/pipeline/02configure |
378 | +++ b/swift/pipeline/02configure |
379 | @@ -13,6 +13,9 @@ MOD_OVERLAYS+=( "keystone.yaml" ) |
380 | if has_min_series focal; then |
381 | # There is no Focal support for percona-cluster |
382 | MOD_OVERLAYS+=( "mysql-innodb-cluster.yaml") |
383 | + # this will be auto-generated for each app (see common/render.d/all) |
384 | + MOD_OVERLAYS+=( "mysql-innodb-cluster-router.yaml" ) |
385 | + MOD_PARAMS[__MYSQL_INTERFACE__]='__APPLICATION_MYSQL_INNODB_ROUTER__' |
386 | else |
387 | MOD_OVERLAYS+=( "mysql.yaml" ) |
388 | fi |
389 | diff --git a/swift/swift.yaml.template b/swift/swift.yaml.template |
390 | index a295838..15e633f 100644 |
391 | --- a/swift/swift.yaml.template |
392 | +++ b/swift/swift.yaml.template |
393 | @@ -21,7 +21,7 @@ applications: |
394 | verbose: *verbose |
395 | openstack-origin: *openstack_origin |
396 | relations: |
397 | - - [ keystone, mysql ] |
398 | - - [ glance, mysql ] |
399 | + - [ keystone:shared-db, __MYSQL_INTERFACE__ ] |
400 | + - [ glance:shared-db, __MYSQL_INTERFACE__ ] |
401 | - [ glance, keystone ] |
402 | - [ swift-proxy, glance ] |
LGTM