Skip to content

Commit fb5ada9

Browse files
Merge pull request #303 from dciabrin/chainsaw
Migration of Kuttl tests to Chainsaw
2 parents a4fdf76 + 24c0901 commit fb5ada9

20 files changed

+726
-0
lines changed
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
apiVersion: mariadb.openstack.org/v1beta1
2+
kind: Galera
3+
metadata:
4+
name: openstack
5+
spec:
6+
replicas: ($replicas)
7+
secret: osp-secret
8+
storageRequest: 500M
9+
status:
10+
bootstrapped: true
11+
conditions:
12+
- message: Setup complete
13+
reason: Ready
14+
status: "True"
15+
type: Ready
16+
- message: Create service completed
17+
reason: Ready
18+
status: "True"
19+
type: CreateServiceReady
20+
- message: Deployment completed
21+
reason: Ready
22+
status: "True"
23+
type: DeploymentReady
24+
- message: Input data complete
25+
reason: Ready
26+
status: "True"
27+
type: InputReady
28+
- message: RoleBinding created
29+
reason: Ready
30+
status: "True"
31+
type: RoleBindingReady
32+
- message: Role created
33+
reason: Ready
34+
status: "True"
35+
type: RoleReady
36+
- message: ServiceAccount created
37+
reason: Ready
38+
status: "True"
39+
type: ServiceAccountReady
40+
- message: Service config create completed
41+
reason: Ready
42+
status: "True"
43+
type: ServiceConfigReady
44+
- message: Input data complete
45+
reason: Ready
46+
status: "True"
47+
type: TLSInputReady
48+
---
49+
apiVersion: apps/v1
50+
kind: StatefulSet
51+
metadata:
52+
name: openstack-galera
53+
spec:
54+
replicas: ($replicas)
55+
selector:
56+
matchLabels:
57+
app: galera
58+
cr: galera-openstack
59+
galera/name: openstack
60+
serviceName: openstack-galera
61+
template:
62+
metadata:
63+
labels:
64+
app: galera
65+
cr: galera-openstack
66+
galera/name: openstack
67+
spec:
68+
containers:
69+
- command:
70+
- /usr/bin/dumb-init
71+
- --
72+
- /usr/local/bin/kolla_start
73+
name: galera
74+
ports:
75+
- containerPort: 3306
76+
name: mysql
77+
protocol: TCP
78+
- containerPort: 4567
79+
name: galera
80+
protocol: TCP
81+
serviceAccount: galera-openstack
82+
serviceAccountName: galera-openstack
83+
status:
84+
availableReplicas: ($replicas)
85+
readyReplicas: ($replicas)
86+
replicas: ($replicas)
87+
---
88+
apiVersion: v1
89+
kind: Service
90+
metadata:
91+
name: openstack-galera
92+
spec:
93+
ports:
94+
- name: mysql
95+
port: 3306
96+
protocol: TCP
97+
targetPort: 3306
98+
selector:
99+
app: galera
100+
cr: galera-openstack
101+
---
102+
apiVersion: v1
103+
kind: Service
104+
metadata:
105+
name: openstack
106+
spec:
107+
selector:
108+
statefulset.kubernetes.io/pod-name:
109+
(starts_with(@, 'openstack-galera-')): true
110+
---
111+
apiVersion: v1
112+
kind: Endpoints
113+
metadata:
114+
name: openstack-galera
115+
---
116+
apiVersion: v1
117+
kind: ConfigMap
118+
metadata:
119+
name: openstack-config-data
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: mariadb.openstack.org/v1beta1
2+
kind: Galera
3+
metadata:
4+
name: openstack
5+
spec:
6+
replicas: ($replicas)
7+
secret: osp-secret
8+
storageClass: local-storage
9+
storageRequest: 500M
10+
tls:
11+
caBundleSecretName: galera-cert
12+
secretName: galera-cert

tests/chainsaw/common/galera.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: mariadb.openstack.org/v1beta1
2+
kind: Galera
3+
metadata:
4+
name: openstack
5+
spec:
6+
replicas: ($replicas)
7+
secret: osp-secret
8+
storageClass: local-storage
9+
storageRequest: 500M
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# hardcode the secret generated by the certificate CR below,
2+
# to avoid chainsaw from depending on cert-manager at runtime
3+
# the ca.crt key has been renamed to tls-ca-bundle.pem
4+
# ---
5+
# apiVersion: cert-manager.io/v1
6+
# kind: Certificate
7+
# metadata:
8+
# name: galera-cert
9+
# spec:
10+
# secretName: galera-cert
11+
# duration: 12720h
12+
# renewBefore: 1h
13+
# subject:
14+
# organizations:
15+
# - cluster.local
16+
# commonName: openstack-galera
17+
# isCA: false
18+
# privateKey:
19+
# algorithm: RSA
20+
# encoding: PKCS8
21+
# size: 2048
22+
# usages:
23+
# - server auth
24+
# - client auth
25+
# dnsNames:
26+
# - "openstack.openstack.svc"
27+
# - "openstack.openstack.svc.cluster.local"
28+
# - "*.openstack-galera"
29+
# - "*.openstack-galera.openstack"
30+
# - "*.openstack-galera.openstack.svc"
31+
# - "*.openstack-galera.openstack.svc.cluster"
32+
# - "*.openstack-galera.openstack.svc.cluster.local"
33+
# issuerRef:
34+
# name: ca-issuer
35+
# group: cert-manager.io
36+
# kind: Issuer
37+
# ---
38+
apiVersion: v1
39+
kind: Secret
40+
metadata:
41+
name: galera-cert
42+
data:
43+
tls-ca-bundle.pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmRENDQVNLZ0F3SUJBZ0lRSlUrQTRBYUpDRFowRDYzbDF5UXNFVEFLQmdncWhrak9QUVFEQWpBZU1Sd3cKR2dZRFZRUURFeE5yZFhSMGJDMXpaV3htYzJsbmJtVmtMV05oTUI0WERUSTBNREV4T0RFek1UazBNbG9YRFRJMQpNRGN3TVRFek1UazBNbG93SGpFY01Cb0dBMVVFQXhNVGEzVjBkR3d0YzJWc1puTnBaMjVsWkMxallUQlpNQk1HCkJ5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSTJKUWdYME1oZUNHSjQ2OHFSNE9wMGJYWGFuTWZSMWRpd3EKR1VtcXlrM20vdHVNZ2hxZlJNNmdWYXFpekNLMjQyNjJUL2dIamdsaDNJTEQ4UnByQXFlalFqQkFNQTRHQTFVZApEd0VCL3dRRUF3SUNwREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlFMbThjamY3dmc5ZjRxCjdsMzVmN1YxUXNsRDlqQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQUZkdEhUbkdiMWtQVlJlZmcvbmNHaThoR2UKVlh5UVZycFJjRStNSXZMeUpRSWhBS2VLZHNleE9LUElQSDVOT0VBUHNxOTQ5cWlFVHU4ZlJEVUdkanozSkZSKwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
44+
tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURhekNDQXhHZ0F3SUJBZ0lSQUoranowQ1p5aGV5Nk5tVWxTZnBoVUF3Q2dZSUtvWkl6ajBFQXdJd0hqRWMKTUJvR0ExVUVBeE1UYTNWMGRHd3RjMlZzWm5OcFoyNWxaQzFqWVRBZUZ3MHlOREF4TVRneE16STFNekJhRncweQpOVEEzTURFeE16STFNekJhTURNeEZqQVVCZ05WQkFvVERXTnNkWE4wWlhJdWJHOWpZV3d4R1RBWEJnTlZCQU1UCkVHOXdaVzV6ZEdGamF5MW5ZV3hsY21Fd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUIKQVFEUTBmeFVYZVFvRTVhOGNmb1hTYXBpbmM2dDhHaTI2UFNrQW5kSDVXWG5jQVVmWFU1dEVqdkpWTVlPSmc2Rwp0amtyaHBTbjljL0JNTFlGUldKN2YxYVE1WXlpUTFKMkNYYjN1VlJPNTV3a3VZbmtJQ2Z0QjdERDVWTWVNQ3VDCkhZV0JqZm1vci94L3FLcGcrZ1BBV3NsY25VS245bFBudGRSQXFrU0hFM2lWRzNoR3R2ZDR4YWZ6eGt5bnJheGMKaU9pLysyVVUyeXlnTG0wM1AxRno0RU5BaUhNaVk4RTgxcGUrSit1OC9WMXNxaVNBdkg2b2RlR1Q2S2hrS2kwbworVnlwcGx2dnM4RnFTdUswRk9HbmhnbFhTWDRwZWM4V2ZCdVJXY2djMU9MbGtLMWJPb25ERzlIeVFabi85VWJwCi9wSTdZem5nU3R4TWhEMW56TmRnUTJJVEFnTUJBQUdqZ2dGT01JSUJTakFkQmdOVkhTVUVGakFVQmdnckJnRUYKQlFjREFRWUlLd1lCQlFVSEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RBV2dCUUxtOGNqZjd2Zwo5ZjRxN2wzNWY3VjFRc2xEOWpDQitRWURWUjBSQklIeE1JSHVnaGR2Y0dWdWMzUmhZMnN1YjNCbGJuTjBZV05yCkxuTjJZNElsYjNCbGJuTjBZV05yTG05d1pXNXpkR0ZqYXk1emRtTXVZMngxYzNSbGNpNXNiMk5oYklJU0tpNXYKY0dWdWMzUmhZMnN0WjJGc1pYSmhnaHdxTG05d1pXNXpkR0ZqYXkxbllXeGxjbUV1YjNCbGJuTjBZV05yZ2lBcQpMbTl3Wlc1emRHRmpheTFuWVd4bGNtRXViM0JsYm5OMFlXTnJMbk4yWTRJb0tpNXZjR1Z1YzNSaFkyc3RaMkZzClpYSmhMbTl3Wlc1emRHRmpheTV6ZG1NdVkyeDFjM1JsY29JdUtpNXZjR1Z1YzNSaFkyc3RaMkZzWlhKaExtOXcKWlc1emRHRmpheTV6ZG1NdVkyeDFjM1JsY2k1c2IyTmhiREFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUJ6Q1RGbgoyc1BVRHNvTFdYNy9nMlZDbjBsVEtjWVRLdkg3OGtDbUhXK3R6d0loQUxMa1hENWUvZ1hwNVF2UlYvNlhIbk15CjJ2YU5UQStLQXZicnFaR3JLRCtzCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
45+
tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2Z0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktnd2dnU2tBZ0VBQW9JQkFRRFEwZnhVWGVRb0U1YTgKY2ZvWFNhcGluYzZ0OEdpMjZQU2tBbmRINVdYbmNBVWZYVTV0RWp2SlZNWU9KZzZHdGprcmhwU245Yy9CTUxZRgpSV0o3ZjFhUTVZeWlRMUoyQ1hiM3VWUk81NXdrdVlua0lDZnRCN0RENVZNZU1DdUNIWVdCamZtb3IveC9xS3BnCitnUEFXc2xjblVLbjlsUG50ZFJBcWtTSEUzaVZHM2hHdHZkNHhhZnp4a3lucmF4Y2lPaS8rMlVVMnl5Z0xtMDMKUDFGejRFTkFpSE1pWThFODFwZStKK3U4L1Yxc3FpU0F2SDZvZGVHVDZLaGtLaTBvK1Z5cHBsdnZzOEZxU3VLMApGT0duaGdsWFNYNHBlYzhXZkJ1UldjZ2MxT0xsa0sxYk9vbkRHOUh5UVpuLzlVYnAvcEk3WXpuZ1N0eE1oRDFuCnpOZGdRMklUQWdNQkFBRUNnZ0VBSVNxSTRqbDdhR1ljRmRnZ2VaeG9wSHNkL1lCbWtVNlV0SXZ6dUFhV1ZkanoKNTFSaGhXOVU4WmcyVUw3NHBhckJqOGt6U1M0QWpsV1hRMlVPekVDZ1Zpa3ZXZ0pKVVpnVlBpbEFXN3ZyaitXcwpJZ0I5ZHVjMnl4WmNTam9xWHVNamRqMC9mdXhjdFVYcnNiVmo3U1ErUVNoMUVzcEw3MHh3NXNoa1UvUGl2Z095Ck4rbHh5UFhCK0RxVGdYSDRpVmQxbHNsaXpCbjB6d0VDb2d5V0RoVEg2d1pVYTBLWDNSVk1CcEhZTEZpdXBGZmgKWU9nbExIa2JDTmtzRXg3Zlg3Rks5eUVmQUxEeGZXSkVpQXRheGpEeng2NmVucFoyVWQzNU91MkNwYVdZbHNjNQpoOUNZRkRjeTVnYmZrL0xKdHFmZ2E0OVg4OUtBeXJrcDlUMS9McTNkU1FLQmdRRFU3dGRMUzVMeDJvUUx2Qi9vCk43ZFlWVGxXZW1BUWpqMFk0RHhVZmNOVE1oUmV6N01FM1dTcFlHYS9CWjNwQjROVGdhcG1qeEdqL2MveGZ3MHUKSG5pd2dFQU5vby9jNHNGVHJlWFBqNnYwbUdvbTZFcHd5UC9GL1NWNnFMVWNGS3piUFVtRTRnd3FtRWRiUjVZZwpsVCtzdHdOZ2czS3gwQW5sR1VucEcvODVIUUtCZ1FEN0RqSzFyejBFbW5aNU1OOXhrdUNYdzcxMzJxMTB1NWpsCjR1WEVqUG92cjZsamM4c3lMOEROUGNMSGxLWkpOUTZyL011T1ovekpDVGRvNWw1dDB0UnNnSFhyZktIN2NXN20KbUpocFk0amZQT0g5VlYveHFaVllGd2JXcVFVaXFtM290OHlTdmhzcE0rbFZmNnhiNHRYOUVVZWl5TWJXTEE1bwp4bGpwNG5SUTd3S0JnUUMrRUJyNFNKTDNjbmNmQ21Mb29xTHpJODgwVTdOZjA3YlJkNFlpWE1kMmdXTVJaZytECkxpTGwxUGloVldBb1d0NXNNWGRxYUJYMDdWOHBUcUR6STV2UzRBZE1wR2dKWUJYMG5XcGVKUDMySy8zRWtOK3gKWUpoOW40Sk94RHcwdm5lMGtqWUhlTVluVnhtS2JwR2dyOWZRVU9PZ3lIUWVKM1pObW84UWxqN3dPUUtCZ1FEQgpXbHYveGFqdTVLK2VBdC8wTHJTKzdjZjhpUFRTVkxFYlREYTl1LzNyd0JSclBnRWU4OXcvdGZOUGx0TEN5eFF6CnJZeHdidkluT3V2cjVKQ1JjTENkcUFvcGhXR1RyL2REcmY2a0hENkwvKzNsR0YyK1YyZG40c1FuaXlFalk3TW0KYW5ncUJEUVM5YUlkY1NrajAzNFBXOEdhUTV1djAxcDlvMVZUUEU5dERRS0JnSGlsbDhpMXIydFdrQUsxTERRbwpYWlRJUnNrb0dUaGFLbVNkNnNLMkxQK0xOMFZ0R3NZem5salhSYldWOE9ubHdUMThTWWhCbFRaNnVrN29GMTFKCmdJYzIwZEs1UUkzcVJoa3JoT21FaGlqTHI3ZkJIei9XRTVvbFppR1locHZJcDZ4QWlpN3BHNlIxYzJZUmtZUnkKY0lvanpYNm5zVmpDeUYrNTNabjJNdExKCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K # notsecret

tests/chainsaw/config.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: chainsaw.kyverno.io/v1alpha2
2+
kind: Configuration
3+
metadata:
4+
name: config
5+
spec:
6+
timeouts:
7+
assert: 180s
8+
delete: 180s
9+
cleanup: 180s
10+
exec: 60s
11+
execution:
12+
failFast: true
13+
parallel: 1
14+
deletion:
15+
propagation: Foreground

tests/chainsaw/scripts/connect.sh

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/bin/bash
2+
PID=
3+
connect() {
4+
exec 6>&- 7<&-
5+
stdbuf -oL mysql --verbose -uroot -p$DB_ROOT_PASSWORD -h openstack -sN --raw --batch </tmp/cmd >/tmp/out &
6+
exec 6> /tmp/cmd 7< /tmp/out
7+
PID=$!
8+
}
9+
last=""
10+
mkfifo /tmp/cmd /tmp/out
11+
while true; do
12+
kill -0 $PID 2>/dev/null || connect
13+
echo "show variables like 'wsrep_node_name';" >&6
14+
# read 4 status line before the mysql answer
15+
for i in `seq 5`; do
16+
read -r out <&7;
17+
done
18+
out=$(echo "$out" | sed -ne 's/^wsrep_.*\t//p')
19+
if [ -n "$out" -a "$out" != "$last" ]; then
20+
last=$out
21+
echo $last
22+
fi
23+
sleep 0.5
24+
done
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/bash
2+
set -u
3+
ARGS=$1
4+
SQL=$2
5+
CMD="mysql -uroot -p\$DB_ROOT_PASSWORD $ARGS \"$SQL\""
6+
oc exec -n ${NAMESPACE} -c galera openstack-galera-0 -- /bin/sh -c "$CMD"
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
apiVersion: mariadb.openstack.org/v1beta1
3+
kind: MariaDBAccount
4+
metadata:
5+
labels:
6+
mariaDBDatabaseName: testdb-accounttest
7+
name: testdb-some-db-account
8+
status:
9+
conditions:
10+
- message: Setup complete
11+
reason: Ready
12+
status: "True"
13+
type: Ready
14+
- message: MariaDBAccount creation complete
15+
reason: Ready
16+
status: "True"
17+
type: MariaDBAccountReady
18+
- message: MariaDBDatabase ready
19+
reason: Ready
20+
status: "True"
21+
type: MariaDBDatabaseReady
22+
- message: MariaDB / Galera server ready
23+
reason: Ready
24+
status: "True"
25+
type: MariaDBServerReady
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
apiVersion: mariadb.openstack.org/v1beta1
3+
kind: MariaDBAccount
4+
metadata:
5+
labels:
6+
mariaDBDatabaseName: testdb-accounttest
7+
name: testdb-some-db-account
8+
status:
9+
conditions:
10+
# message: 'MariaDBAccount secret is missing or incomplete: Secret $NAMESPACE/some-db-secret not found'
11+
- reason: SecretMissing
12+
severity: Info
13+
status: "False"
14+
type: Ready
15+
# message: 'MariaDBAccount secret is missing or incomplete: Secret $NAMESPACE/some-db-secret not found'
16+
- reason: SecretMissing
17+
severity: Info
18+
status: "False"
19+
type: MariaDBAccountReady
20+
- message: MariaDBDatabase ready
21+
reason: Ready
22+
status: "True"
23+
type: MariaDBDatabaseReady
24+
- message: MariaDB / Galera server ready
25+
reason: Ready
26+
status: "True"
27+
type: MariaDBServerReady
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: v1
2+
data:
3+
DatabasePassword: ZGJzZWNyZXQx
4+
kind: Secret
5+
metadata:
6+
name: some-db-secret
7+
type: Opaque

0 commit comments

Comments
 (0)