Merge ~hopem/stsstack-bundles:fix-mysql-innodb-cluster into stsstack-bundles: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)
Reviewer Review Type Date Requested Status
Hemanth Nakkina Approve
Review via email: mp+396086@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Hemanth Nakkina (hemanth-n) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/ceph/ceph.yaml.template b/ceph/ceph.yaml.template
2index 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__]
16diff --git a/ceph/pipeline/02configure b/ceph/pipeline/02configure
17index 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
30diff --git a/common/generate_bundle_base b/common/generate_bundle_base
31index 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`
66diff --git a/common/render.d/all b/common/render.d/all
67index 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
148diff --git a/kubernetes/pipeline/02configure b/kubernetes/pipeline/02configure
149index 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
162diff --git a/openstack/module_defaults b/openstack/module_defaults
163index 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).
174diff --git a/openstack/openstack.yaml.template b/openstack/openstack.yaml.template
175index 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 ]
208diff --git a/openstack/pipeline/02configure b/openstack/pipeline/02configure
209index 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
222diff --git a/overlays/barbican.yaml b/overlays/barbican.yaml
223index 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
234diff --git a/overlays/designate.yaml b/overlays/designate.yaml
235index 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 ]
247diff --git a/overlays/gnocchi.yaml b/overlays/gnocchi.yaml
248index 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 ]
260diff --git a/overlays/heat.yaml b/overlays/heat.yaml
261index 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 ]
272diff --git a/overlays/k8s-keystone.yaml b/overlays/k8s-keystone.yaml
273index 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' ]
281diff --git a/overlays/manila.yaml b/overlays/manila.yaml
282index 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__ ]
298diff --git a/overlays/mysql-innodb-cluster-router.yaml b/overlays/mysql-innodb-cluster-router.yaml
299new file mode 100644
300index 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
305diff --git a/overlays/mysql-innodb-cluster.yaml b/overlays/mysql-innodb-cluster.yaml
306index 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+
318diff --git a/overlays/octavia.yaml b/overlays/octavia.yaml
319index 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 ]
331diff --git a/overlays/placement.yaml b/overlays/placement.yaml
332index 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 ]
343diff --git a/overlays/telemetry-legacy-aodh.yaml b/overlays/telemetry-legacy-aodh.yaml
344index 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 ]
354diff --git a/overlays/telemetry.yaml b/overlays/telemetry.yaml
355index 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 ]
365diff --git a/overlays/vault.yaml b/overlays/vault.yaml
366index 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__ ]
375diff --git a/swift/pipeline/02configure b/swift/pipeline/02configure
376index 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
389diff --git a/swift/swift.yaml.template b/swift/swift.yaml.template
390index 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 ]

Subscribers

People subscribed via source and target branches