Skip to content

Commit 02a1b22

Browse files
committed
added integration test; use unversioned labels for STS listener volume
1 parent 2c253e8 commit 02a1b22

12 files changed

Lines changed: 756 additions & 10 deletions

File tree

deploy/helm/opensearch-operator/crds/crds.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@ spec:
133133
description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details.
134134
nullable: true
135135
type: string
136+
listenerClass:
137+
description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose the webserver.
138+
nullable: true
139+
type: string
136140
nodeRoles:
137141
items:
138142
enum:
@@ -325,6 +329,10 @@ spec:
325329
description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details.
326330
nullable: true
327331
type: string
332+
listenerClass:
333+
description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose the webserver.
334+
nullable: true
335+
type: string
328336
nodeRoles:
329337
items:
330338
enum:

rust/operator-binary/src/controller/build/role_group_builder.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::str::FromStr;
2+
13
use stackable_operator::{
24
builder::{
35
meta::ObjectMetaBuilder,
@@ -28,7 +30,7 @@ use crate::{
2830
controller::{ContextNames, OpenSearchRoleGroupConfig, ValidatedCluster},
2931
crd::v1alpha1,
3032
framework::{
31-
RoleGroupName,
33+
ProductVersion, RoleGroupName,
3234
builder::meta::ownerreference_from_resource,
3335
kvp::label::{recommended_labels, role_group_selector, role_selector},
3436
role_group_utils::ResourceNames,
@@ -126,8 +128,8 @@ impl<'a> RoleGroupBuilder<'a> {
126128
// still be consistent.
127129
let listener_volume_claim_template = ListenerOperatorVolumeSourceBuilder::new(
128130
&ListenerReference::ListenerName(listener_group_name),
129-
// TODO should be unversioned
130-
&self.recommended_labels(),
131+
&self
132+
.recommended_labels(ProductVersion::from_str("none").expect("version is supplied")),
131133
)
132134
.expect("should be a listener group name")
133135
.build_pvc(LISTENER_VOLUME_NAME.to_string())
@@ -166,7 +168,7 @@ impl<'a> RoleGroupBuilder<'a> {
166168
}
167169

168170
let metadata = ObjectMetaBuilder::new()
169-
.with_labels(self.recommended_labels())
171+
.with_labels(self.recommended_labels(self.cluster.product_version.clone()))
170172
.with_labels(node_role_labels)
171173
.build();
172174

@@ -413,16 +415,16 @@ impl<'a> RoleGroupBuilder<'a> {
413415
None,
414416
Some(true),
415417
))
416-
.with_labels(self.recommended_labels())
418+
.with_labels(self.recommended_labels(self.cluster.product_version.clone()))
417419
.with_labels(extra_labels)
418420
.build()
419421
}
420422

421-
fn recommended_labels(&self) -> Labels {
423+
fn recommended_labels(&self, product_version: ProductVersion) -> Labels {
422424
recommended_labels(
423425
&self.cluster,
424426
&self.context_names.product_name,
425-
&self.cluster.product_version,
427+
&product_version,
426428
&self.context_names.operator_name,
427429
&self.context_names.controller_name,
428430
&ValidatedCluster::role_name(),
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# see https://github.com/stackabletech/issues/issues/566
2+
---
3+
apiVersion: kuttl.dev/v1beta1
4+
kind: TestStep
5+
commands:
6+
- script: |
7+
kubectl patch namespace $NAMESPACE --patch='
8+
{
9+
"metadata": {
10+
"labels": {
11+
"pod-security.kubernetes.io/enforce": "privileged"
12+
}
13+
}
14+
}'
15+
timeout: 120
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
apiVersion: v1
3+
kind: ServiceAccount
4+
metadata:
5+
name: test-service-account
6+
---
7+
kind: Role
8+
apiVersion: rbac.authorization.k8s.io/v1
9+
metadata:
10+
name: test-role
11+
rules:
12+
- apiGroups:
13+
- security.openshift.io
14+
resources:
15+
- securitycontextconstraints
16+
resourceNames:
17+
- privileged
18+
verbs:
19+
- use
20+
---
21+
kind: RoleBinding
22+
apiVersion: rbac.authorization.k8s.io/v1
23+
metadata:
24+
name: test-role-binding
25+
subjects:
26+
- kind: ServiceAccount
27+
name: test-service-account
28+
roleRef:
29+
apiGroup: rbac.authorization.k8s.io
30+
kind: Role
31+
name: test-role
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
apiVersion: kuttl.dev/v1beta1
3+
kind: TestStep
4+
commands:
5+
- script: |
6+
envsubst < listener-classes.yaml | kubectl apply -n $NAMESPACE -f -
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# All fields are checked that are set by the operator.
2+
# This helps to detect unintentional changes.
3+
# The maintenance effort should be okay as long as it is only done in the smoke test.
4+
# TODO Check individual field in unit tests
5+
---
6+
apiVersion: kuttl.dev/v1beta1
7+
kind: TestAssert
8+
timeout: 600
9+
---
10+
apiVersion: apps/v1
11+
kind: StatefulSet
12+
metadata:
13+
name: opensearch-nodes-cluster-manager
14+
spec:
15+
replicas: 1
16+
status:
17+
readyReplicas: 1
18+
replicas: 1
19+
---
20+
apiVersion: apps/v1
21+
kind: StatefulSet
22+
metadata:
23+
name: opensearch-nodes-data
24+
spec:
25+
replicas: 1
26+
status:
27+
readyReplicas: 1
28+
replicas: 1
29+
---
30+
apiVersion: v1
31+
kind: Service
32+
metadata:
33+
name: opensearch-nodes-cluster-manager
34+
spec:
35+
type: NodePort # external-stable
36+
---
37+
apiVersion: v1
38+
kind: Service
39+
metadata:
40+
name: opensearch-nodes-data
41+
spec:
42+
type: NodePort # external-unstable
43+
---
44+
apiVersion: v1
45+
kind: Service
46+
metadata:
47+
name: opensearch
48+
spec:
49+
type: ClusterIP
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
apiVersion: kuttl.dev/v1beta1
3+
kind: TestStep
4+
timeout: 600
5+
commands:
6+
- script: >
7+
envsubst < opensearch.yaml |
8+
kubectl apply -n $NAMESPACE -f -
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
apiVersion: listeners.stackable.tech/v1alpha1
3+
kind: ListenerClass
4+
metadata:
5+
name: test-cluster-internal-$NAMESPACE
6+
spec:
7+
serviceType: ClusterIP
8+
---
9+
apiVersion: listeners.stackable.tech/v1alpha1
10+
kind: ListenerClass
11+
metadata:
12+
name: test-external-stable-$NAMESPACE
13+
spec:
14+
serviceType: NodePort
15+
---
16+
apiVersion: listeners.stackable.tech/v1alpha1
17+
kind: ListenerClass
18+
metadata:
19+
name: test-external-unstable-$NAMESPACE
20+
spec:
21+
serviceType: NodePort

0 commit comments

Comments
 (0)