Skip to content

Commit e809c07

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 [1]. 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 [2] - enhanced StatefulSet and Deployment configuration that incorporates the processed Topology - kuttl test to verify a referenced topology has been applied to the StatefulSet and the resulting Pods 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 cd27e92 commit e809c07

File tree

16 files changed

+546
-194
lines changed

16 files changed

+546
-194
lines changed

api/bases/mariadb.openstack.org_galeras.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,23 @@ spec:
9898
description: SecretName - holding the cert, key for the service
9999
type: string
100100
type: object
101+
topologyRef:
102+
description: |-
103+
TopologyRef to apply the Topology defined by the associated CR referenced
104+
by name
105+
properties:
106+
name:
107+
description: Name - The Topology CR name that the Service references
108+
type: string
109+
namespace:
110+
description: |-
111+
Namespace - The Namespace to fetch the Topology CR referenced
112+
NOTE: Namespace currently points by default to the same namespace where
113+
the Service is deployed. Customizing the namespace is not supported and
114+
webhooks prevent editing this field to a value different from the
115+
current project
116+
type: string
117+
type: object
101118
required:
102119
- containerImage
103120
- replicas
@@ -197,6 +214,9 @@ spec:
197214
type: string
198215
description: Map of hashes to track input changes
199216
type: object
217+
lastAppliedTopology:
218+
description: LastAppliedTopology - the last applied Topology
219+
type: string
200220
observedGeneration:
201221
description: |-
202222
ObservedGeneration - the most recent generation observed for this

api/go.mod

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,26 @@ require (
66
github.com/go-logr/logr v1.4.2
77
github.com/onsi/ginkgo/v2 v2.20.1
88
github.com/onsi/gomega v1.34.1
9-
github.com/openstack-k8s-operators/lib-common/modules/common v0.5.1-0.20241029151503-4878b3fa3333
10-
k8s.io/api v0.29.12
11-
k8s.io/apimachinery v0.29.12
12-
k8s.io/client-go v0.29.12
9+
github.com/openstack-k8s-operators/infra-operator/apis v0.5.1-0.20250210183624-a8bf66784d6d
10+
github.com/openstack-k8s-operators/lib-common/modules/common v0.5.1-0.20250205143454-43504d7ad19a
11+
k8s.io/api v0.29.13
12+
k8s.io/apimachinery v0.29.13
13+
k8s.io/client-go v0.29.13
1314
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
1415
sigs.k8s.io/controller-runtime v0.17.6
1516
)
1617

1718
require (
1819
github.com/beorn7/perks v1.0.1 // indirect
1920
github.com/cespare/xxhash/v2 v2.2.0 // indirect
20-
github.com/davecgh/go-spew v1.1.1 // indirect
21-
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
22-
github.com/evanphx/json-patch/v5 v5.8.0 // indirect
21+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
22+
github.com/emicklei/go-restful/v3 v3.12.0 // indirect
23+
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
2324
github.com/fsnotify/fsnotify v1.7.0 // indirect
2425
github.com/go-logr/zapr v1.3.0 // indirect
25-
github.com/go-openapi/jsonpointer v0.19.6 // indirect
26-
github.com/go-openapi/jsonreference v0.20.2 // indirect
27-
github.com/go-openapi/swag v0.22.3 // indirect
26+
github.com/go-openapi/jsonpointer v0.21.0 // indirect
27+
github.com/go-openapi/jsonreference v0.21.0 // indirect
28+
github.com/go-openapi/swag v0.23.0 // indirect
2829
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
2930
github.com/gogo/protobuf v1.3.2 // indirect
3031
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
@@ -34,42 +35,41 @@ require (
3435
github.com/google/gofuzz v1.2.0 // indirect
3536
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect
3637
github.com/google/uuid v1.6.0 // indirect
37-
github.com/imdario/mergo v0.3.12 // indirect
38+
github.com/imdario/mergo v0.3.16 // indirect
3839
github.com/josharian/intern v1.0.0 // indirect
3940
github.com/json-iterator/go v1.1.12 // indirect
4041
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.5 // indirect
4142
github.com/mailru/easyjson v0.7.7 // indirect
42-
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
4343
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
4444
github.com/modern-go/reflect2 v1.0.2 // indirect
4545
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
4646
github.com/openshift/api v3.9.0+incompatible // indirect
4747
github.com/pkg/errors v0.9.1 // indirect
48-
github.com/prometheus/client_golang v1.18.0 // indirect
49-
github.com/prometheus/client_model v0.5.0 // indirect
50-
github.com/prometheus/common v0.45.0 // indirect
51-
github.com/prometheus/procfs v0.12.0 // indirect
48+
github.com/prometheus/client_golang v1.19.0 // indirect
49+
github.com/prometheus/client_model v0.6.0 // indirect
50+
github.com/prometheus/common v0.51.1 // indirect
51+
github.com/prometheus/procfs v0.13.0 // indirect
5252
github.com/spf13/pflag v1.0.5 // indirect
5353
go.uber.org/multierr v1.11.0 // indirect
5454
go.uber.org/zap v1.27.0 // indirect
5555
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
5656
golang.org/x/net v0.28.0 // indirect
57-
golang.org/x/oauth2 v0.12.0 // indirect
57+
golang.org/x/oauth2 v0.18.0 // indirect
5858
golang.org/x/sys v0.23.0 // indirect
5959
golang.org/x/term v0.23.0 // indirect
6060
golang.org/x/text v0.17.0 // indirect
61-
golang.org/x/time v0.3.0 // indirect
61+
golang.org/x/time v0.5.0 // indirect
6262
golang.org/x/tools v0.24.0 // indirect
6363
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
64-
google.golang.org/appengine v1.6.7 // indirect
64+
google.golang.org/appengine v1.6.8 // indirect
6565
google.golang.org/protobuf v1.34.1 // indirect
6666
gopkg.in/inf.v0 v0.9.1 // indirect
6767
gopkg.in/yaml.v2 v2.4.0 // indirect
6868
gopkg.in/yaml.v3 v3.0.1 // indirect
69-
k8s.io/apiextensions-apiserver v0.29.12 // indirect
70-
k8s.io/component-base v0.29.12 // indirect
71-
k8s.io/klog/v2 v2.110.1 // indirect
72-
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
69+
k8s.io/apiextensions-apiserver v0.29.13 // indirect
70+
k8s.io/component-base v0.29.13 // indirect
71+
k8s.io/klog/v2 v2.120.1 // indirect
72+
k8s.io/kube-openapi v0.0.0-20240322212309-b815d8309940 // indirect
7373
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
7474
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
7575
sigs.k8s.io/yaml v1.4.0 // indirect

0 commit comments

Comments
 (0)