Skip to content

Commit 34408a1

Browse files
committed
Consume Topology CR by reference
This patch provides more granular control over Pod placement and scheduling through the Topology CR integration introduced in infra-operator. In particular it provides: - a new API parameter (TopologyRef) defined for each Component that allows to reference an existing Topology CRs in the same namespace - the operator logic that retrieves and processes the referenced Topology CR through the functions provided by lib-common - enhanced StatefulSet and deployment configuration that incorporates the processed Topology - a set of envTest to test the lifecycle (add/update/override/remove) of the resulting StatefulSets when a Topology is referenced Note that webhooks are in place to prevent referencing a Topology from a different namespace (which is not a supported scenario). Signed-off-by: Francesco Pantano <[email protected]>
1 parent c8b08cf commit 34408a1

File tree

53 files changed

+1907
-98
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1907
-98
lines changed

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ endif
6666
SHELL = /usr/bin/env bash -o pipefail
6767
.SHELLFLAGS = -ec
6868

69+
PROCS?=$(shell expr $(shell nproc --ignore 2) / 4)
70+
PROC_CMD = --procs ${PROCS}
71+
6972
DOCKER_BUILD_ARGS ?=
7073

7174
.PHONY: all

api/bases/designate.openstack.org_designateapis.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,23 @@ spec:
397397
bundle file
398398
type: string
399399
type: object
400+
topologyRef:
401+
description: |-
402+
TopologyRef to apply the Topology defined by the associated CR referenced
403+
by name
404+
properties:
405+
name:
406+
description: Name - The Topology CR name that the Service references
407+
type: string
408+
namespace:
409+
description: |-
410+
Namespace - The Namespace to fetch the Topology CR referenced
411+
NOTE: Namespace currently points by default to the same namespace where
412+
the Service is deployed. Customizing the namespace is not supported and
413+
webhooks prevent editing this field to a value different from the
414+
current project
415+
type: string
416+
type: object
400417
transportURLSecret:
401418
description: Secret containing RabbitMq transport URL
402419
type: string
@@ -460,6 +477,9 @@ spec:
460477
type: string
461478
description: Map of hashes to track e.g. job status
462479
type: object
480+
lastAppliedTopology:
481+
description: LastAppliedTopology - the last applied Topology
482+
type: string
463483
networkAttachments:
464484
additionalProperties:
465485
items:

api/bases/designate.openstack.org_designatebackendbind9s.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,23 @@ spec:
220220
storageRequest:
221221
description: StorageRequest
222222
type: string
223+
topologyRef:
224+
description: |-
225+
TopologyRef to apply the Topology defined by the associated CR referenced
226+
by name
227+
properties:
228+
name:
229+
description: Name - The Topology CR name that the Service references
230+
type: string
231+
namespace:
232+
description: |-
233+
Namespace - The Namespace to fetch the Topology CR referenced
234+
NOTE: Namespace currently points by default to the same namespace where
235+
the Service is deployed. Customizing the namespace is not supported and
236+
webhooks prevent editing this field to a value different from the
237+
current project
238+
type: string
239+
type: object
223240
transportURLSecret:
224241
description: Secret containing RabbitMq transport URL
225242
type: string
@@ -277,6 +294,9 @@ spec:
277294
type: string
278295
description: Map of hashes to track e.g. job status
279296
type: object
297+
lastAppliedTopology:
298+
description: LastAppliedTopology - the last applied Topology
299+
type: string
280300
networkAttachments:
281301
additionalProperties:
282302
items:

api/bases/designate.openstack.org_designatecentrals.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,23 @@ spec:
220220
bundle file
221221
type: string
222222
type: object
223+
topologyRef:
224+
description: |-
225+
TopologyRef to apply the Topology defined by the associated CR referenced
226+
by name
227+
properties:
228+
name:
229+
description: Name - The Topology CR name that the Service references
230+
type: string
231+
namespace:
232+
description: |-
233+
Namespace - The Namespace to fetch the Topology CR referenced
234+
NOTE: Namespace currently points by default to the same namespace where
235+
the Service is deployed. Customizing the namespace is not supported and
236+
webhooks prevent editing this field to a value different from the
237+
current project
238+
type: string
239+
type: object
223240
transportURLSecret:
224241
description: Secret containing RabbitMq transport URL
225242
type: string
@@ -276,6 +293,9 @@ spec:
276293
type: string
277294
description: Map of hashes to track e.g. job status
278295
type: object
296+
lastAppliedTopology:
297+
description: LastAppliedTopology - the last applied Topology
298+
type: string
279299
networkAttachments:
280300
additionalProperties:
281301
items:

api/bases/designate.openstack.org_designatemdnses.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,23 @@ spec:
222222
bundle file
223223
type: string
224224
type: object
225+
topologyRef:
226+
description: |-
227+
TopologyRef to apply the Topology defined by the associated CR referenced
228+
by name
229+
properties:
230+
name:
231+
description: Name - The Topology CR name that the Service references
232+
type: string
233+
namespace:
234+
description: |-
235+
Namespace - The Namespace to fetch the Topology CR referenced
236+
NOTE: Namespace currently points by default to the same namespace where
237+
the Service is deployed. Customizing the namespace is not supported and
238+
webhooks prevent editing this field to a value different from the
239+
current project
240+
type: string
241+
type: object
225242
transportURLSecret:
226243
description: Secret containing RabbitMq transport URL
227244
type: string
@@ -283,6 +300,9 @@ spec:
283300
type: string
284301
description: Map of hashes to track e.g. job status
285302
type: object
303+
lastAppliedTopology:
304+
description: LastAppliedTopology - the last applied Topology
305+
type: string
286306
networkAttachments:
287307
additionalProperties:
288308
items:

api/bases/designate.openstack.org_designateproducers.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,23 @@ spec:
219219
bundle file
220220
type: string
221221
type: object
222+
topologyRef:
223+
description: |-
224+
TopologyRef to apply the Topology defined by the associated CR referenced
225+
by name
226+
properties:
227+
name:
228+
description: Name - The Topology CR name that the Service references
229+
type: string
230+
namespace:
231+
description: |-
232+
Namespace - The Namespace to fetch the Topology CR referenced
233+
NOTE: Namespace currently points by default to the same namespace where
234+
the Service is deployed. Customizing the namespace is not supported and
235+
webhooks prevent editing this field to a value different from the
236+
current project
237+
type: string
238+
type: object
222239
transportURLSecret:
223240
description: Secret containing RabbitMq transport URL
224241
type: string
@@ -275,6 +292,9 @@ spec:
275292
type: string
276293
description: Map of hashes to track e.g. job status
277294
type: object
295+
lastAppliedTopology:
296+
description: LastAppliedTopology - the last applied Topology
297+
type: string
278298
networkAttachments:
279299
additionalProperties:
280300
items:

api/bases/designate.openstack.org_designates.yaml

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,24 @@ spec:
444444
a pre-created bundle file
445445
type: string
446446
type: object
447+
topologyRef:
448+
description: |-
449+
TopologyRef to apply the Topology defined by the associated CR referenced
450+
by name
451+
properties:
452+
name:
453+
description: Name - The Topology CR name that the Service
454+
references
455+
type: string
456+
namespace:
457+
description: |-
458+
Namespace - The Namespace to fetch the Topology CR referenced
459+
NOTE: Namespace currently points by default to the same namespace where
460+
the Service is deployed. Customizing the namespace is not supported and
461+
webhooks prevent editing this field to a value different from the
462+
current project
463+
type: string
464+
type: object
447465
transportURLSecret:
448466
description: Secret containing RabbitMq transport URL
449467
type: string
@@ -626,6 +644,24 @@ spec:
626644
storageRequest:
627645
description: StorageRequest
628646
type: string
647+
topologyRef:
648+
description: |-
649+
TopologyRef to apply the Topology defined by the associated CR referenced
650+
by name
651+
properties:
652+
name:
653+
description: Name - The Topology CR name that the Service
654+
references
655+
type: string
656+
namespace:
657+
description: |-
658+
Namespace - The Namespace to fetch the Topology CR referenced
659+
NOTE: Namespace currently points by default to the same namespace where
660+
the Service is deployed. Customizing the namespace is not supported and
661+
webhooks prevent editing this field to a value different from the
662+
current project
663+
type: string
664+
type: object
629665
transportURLSecret:
630666
description: Secret containing RabbitMq transport URL
631667
type: string
@@ -803,6 +839,24 @@ spec:
803839
a pre-created bundle file
804840
type: string
805841
type: object
842+
topologyRef:
843+
description: |-
844+
TopologyRef to apply the Topology defined by the associated CR referenced
845+
by name
846+
properties:
847+
name:
848+
description: Name - The Topology CR name that the Service
849+
references
850+
type: string
851+
namespace:
852+
description: |-
853+
Namespace - The Namespace to fetch the Topology CR referenced
854+
NOTE: Namespace currently points by default to the same namespace where
855+
the Service is deployed. Customizing the namespace is not supported and
856+
webhooks prevent editing this field to a value different from the
857+
current project
858+
type: string
859+
type: object
806860
transportURLSecret:
807861
description: Secret containing RabbitMq transport URL
808862
type: string
@@ -982,6 +1036,24 @@ spec:
9821036
a pre-created bundle file
9831037
type: string
9841038
type: object
1039+
topologyRef:
1040+
description: |-
1041+
TopologyRef to apply the Topology defined by the associated CR referenced
1042+
by name
1043+
properties:
1044+
name:
1045+
description: Name - The Topology CR name that the Service
1046+
references
1047+
type: string
1048+
namespace:
1049+
description: |-
1050+
Namespace - The Namespace to fetch the Topology CR referenced
1051+
NOTE: Namespace currently points by default to the same namespace where
1052+
the Service is deployed. Customizing the namespace is not supported and
1053+
webhooks prevent editing this field to a value different from the
1054+
current project
1055+
type: string
1056+
type: object
9851057
transportURLSecret:
9861058
description: Secret containing RabbitMq transport URL
9871059
type: string
@@ -1164,6 +1236,24 @@ spec:
11641236
a pre-created bundle file
11651237
type: string
11661238
type: object
1239+
topologyRef:
1240+
description: |-
1241+
TopologyRef to apply the Topology defined by the associated CR referenced
1242+
by name
1243+
properties:
1244+
name:
1245+
description: Name - The Topology CR name that the Service
1246+
references
1247+
type: string
1248+
namespace:
1249+
description: |-
1250+
Namespace - The Namespace to fetch the Topology CR referenced
1251+
NOTE: Namespace currently points by default to the same namespace where
1252+
the Service is deployed. Customizing the namespace is not supported and
1253+
webhooks prevent editing this field to a value different from the
1254+
current project
1255+
type: string
1256+
type: object
11671257
transportURLSecret:
11681258
description: Secret containing RabbitMq transport URL
11691259
type: string
@@ -1281,6 +1371,24 @@ spec:
12811371
description: ServiceAccount - service account name used internally
12821372
to provide Designate services the default SA name
12831373
type: string
1374+
topologyRef:
1375+
description: |-
1376+
TopologyRef to apply the Topology defined by the associated CR referenced
1377+
by name
1378+
properties:
1379+
name:
1380+
description: Name - The Topology CR name that the Service
1381+
references
1382+
type: string
1383+
namespace:
1384+
description: |-
1385+
Namespace - The Namespace to fetch the Topology CR referenced
1386+
NOTE: Namespace currently points by default to the same namespace where
1387+
the Service is deployed. Customizing the namespace is not supported and
1388+
webhooks prevent editing this field to a value different from the
1389+
current project
1390+
type: string
1391+
type: object
12841392
required:
12851393
- containerImage
12861394
type: object
@@ -1449,6 +1557,24 @@ spec:
14491557
a pre-created bundle file
14501558
type: string
14511559
type: object
1560+
topologyRef:
1561+
description: |-
1562+
TopologyRef to apply the Topology defined by the associated CR referenced
1563+
by name
1564+
properties:
1565+
name:
1566+
description: Name - The Topology CR name that the Service
1567+
references
1568+
type: string
1569+
namespace:
1570+
description: |-
1571+
Namespace - The Namespace to fetch the Topology CR referenced
1572+
NOTE: Namespace currently points by default to the same namespace where
1573+
the Service is deployed. Customizing the namespace is not supported and
1574+
webhooks prevent editing this field to a value different from the
1575+
current project
1576+
type: string
1577+
type: object
14521578
transportURLSecret:
14531579
description: Secret containing RabbitMq transport URL
14541580
type: string
@@ -1555,6 +1681,23 @@ spec:
15551681
description: ServiceUser - optional username used for this service
15561682
to register in designate
15571683
type: string
1684+
topologyRef:
1685+
description: |-
1686+
TopologyRef to apply the Topology defined by the associated CR referenced
1687+
by name
1688+
properties:
1689+
name:
1690+
description: Name - The Topology CR name that the Service references
1691+
type: string
1692+
namespace:
1693+
description: |-
1694+
Namespace - The Namespace to fetch the Topology CR referenced
1695+
NOTE: Namespace currently points by default to the same namespace where
1696+
the Service is deployed. Customizing the namespace is not supported and
1697+
webhooks prevent editing this field to a value different from the
1698+
current project
1699+
type: string
1700+
type: object
15581701
required:
15591702
- databaseInstance
15601703
- designateAPI

0 commit comments

Comments
 (0)