Skip to content

Commit c896687

Browse files
authored
QDR Auth in smoketest (#525) (#527)
* QDR Auth in smoketest * Added qdr-test as a mock of the OSP-side QDR * Connection from qdr-test -> default-interconnect is TLS+Auth * Collectors point at qdr-test instead of default-interconnect directly * Much more realistic than the existing setup * Eliminated a substitution in sensubility config * Used default QDR basic auth in Jenkinsfile (cherry picked from commit 37b6f03)
1 parent b063b92 commit c896687

7 files changed

+133
-18
lines changed

Jenkinsfile

-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ spec:
3636
strategy: ephemeral
3737
transports:
3838
qdr:
39-
auth: none
4039
enabled: true
4140
deploymentSize: 1
4241
web:

tests/smoketest/collectd-sensubility.conf

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ worker_count=2
1010
checks={"check-container-health":{"command":"cat /healthcheck.log","handlers":[],"interval":3,"occurrences":3,"refresh":90,"standalone":true}}
1111

1212
[amqp1]
13-
connection=amqp://default-interconnect.<<NAMESPACE>>.svc:5671
13+
connection=amqp://qdr-test:5672
1414
results_channel=sensubility/cloud1-telemetry
1515
client_name=smoketest.redhat.com
1616
results_format=smartgateway

tests/smoketest/minimal-collectd.conf.template

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ LoadPlugin cpu
1111
LoadPlugin amqp1
1212
<Plugin "amqp1">
1313
<Transport "name">
14-
Host "default-interconnect"
15-
Port "5671"
14+
Host "qdr-test"
15+
Port "5672"
1616
Address "collectd"
1717
<Instance "cloud1-telemetry">
1818
Format JSON
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: qdr-test-config
5+
data:
6+
qdrouterd.conf: |
7+
router {
8+
mode: edge
9+
id: qdr-test.smoketest
10+
workerThreads: 2
11+
saslConfigDir: /etc/sasl2
12+
saslConfigName: qdrouterd
13+
}
14+
15+
sslProfile {
16+
name: sslProfile
17+
caCertFile: /etc/pki/tls/certs/ca.crt
18+
}
19+
20+
listener {
21+
host: 0.0.0.0
22+
port: 5672
23+
authenticatePeer: false
24+
saslMechanisms: ANONYMOUS
25+
}
26+
27+
connector {
28+
host: default-interconnect
29+
port: 5671
30+
role: edge
31+
saslPassword: pass:<<AMQP_PASS>>
32+
saslUsername: guest@default-interconnect
33+
sslProfile: sslProfile
34+
verifyHostname: false
35+
}
36+
37+
address {
38+
prefix: unicast
39+
distribution: closest
40+
}
41+
42+
address {
43+
prefix: exclusive
44+
distribution: closest
45+
}
46+
47+
address {
48+
prefix: broadcast
49+
distribution: multicast
50+
}
51+
52+
address {
53+
distribution: multicast
54+
prefix: collectd
55+
}
56+
57+
address {
58+
distribution: multicast
59+
prefix: anycast/ceilometer
60+
}
61+
62+
log {
63+
module: DEFAULT
64+
enable: info+
65+
includeTimestamp: true
66+
}

tests/smoketest/qdr-test.yaml

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
annotations:
5+
openshift.io/scc: restricted-v2
6+
name: qdr-test
7+
labels:
8+
qdr: qdr-test
9+
spec:
10+
containers:
11+
- name: qdr
12+
image: quay.io/tripleowallabycentos9/openstack-qdrouterd:current-tripleo
13+
imagePullPolicy: IfNotPresent
14+
command: ['/usr/sbin/qdrouterd','-c','/etc/qpid-dispatch/qdrouterd.conf']
15+
securityContext:
16+
allowPrivilegeEscalation: false
17+
capabilities:
18+
drop:
19+
- ALL
20+
ports:
21+
- containerPort: 5672
22+
name: amqp
23+
protocol: TCP
24+
volumeMounts:
25+
- mountPath: /etc/pki/tls/certs/
26+
name: default-interconnect-selfsigned-cert
27+
- mountPath: /etc/qpid-dispatch/
28+
name: qdr-test-config
29+
resources: {}
30+
volumes:
31+
- name: default-interconnect-selfsigned-cert
32+
secret:
33+
defaultMode: 420
34+
secretName: default-interconnect-selfsigned
35+
- name: qdr-test-config
36+
configMap:
37+
defaultMode: 420
38+
name: qdr-test-config
39+
40+
---
41+
42+
apiVersion: v1
43+
kind: Service
44+
metadata:
45+
name: qdr-test
46+
spec:
47+
ports:
48+
- name: amqp
49+
port: 5672
50+
targetPort: amqp
51+
selector:
52+
qdr: qdr-test

tests/smoketest/smoketest.sh

+9-11
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,6 @@ if [ "${OC_CLIENT_VERSION_Y}" -lt "${OC_CLIENT_VERSION_Y_REQUIRED}" ] || [ "${OC
2727
exit 1
2828
fi
2929

30-
if [ "$(oc get stf default -o=jsonpath='{.spec.transports.qdr.auth}')" != "none" ]; then
31-
echo "*** QDR authentication is currently not supported in smoketests."
32-
echo "To disable it, use: oc patch stf default --patch '{\"spec\":{\"transports\":{\"qdr\":{\"auth\":\"none\"}}}}' --type=merge"
33-
echo "For more info: https://github.com/infrawatch/service-telemetry-operator/pull/492"
34-
exit 1
35-
fi
36-
3730
CLEANUP=${CLEANUP:-true}
3831
SMOKETEST_VERBOSE=${SMOKETEST_VERBOSE:-true}
3932

@@ -57,18 +50,23 @@ ELASTICSEARCH_AUTH_PASS=$(oc get secret elasticsearch-es-elastic-user -ogo-templ
5750
echo "*** [INFO] Getting Prometheus authentication password"
5851
PROMETHEUS_AUTH_PASS=$(oc get secret default-prometheus-htpasswd -ogo-template='{{ .data.password | base64decode }}')
5952

60-
echo "*** [INFO] Setting namepsace for collectd-sensubility config"
61-
sed "s/<<NAMESPACE>>/${OCP_PROJECT}/g" "${REL}/collectd-sensubility.conf" > /tmp/collectd-sensubility.conf
62-
6353
echo "*** [INFO] Creating configmaps..."
6454
oc delete configmap/stf-smoketest-healthcheck-log configmap/stf-smoketest-collectd-config configmap/stf-smoketest-sensubility-config configmap/stf-smoketest-collectd-entrypoint-script configmap/stf-smoketest-ceilometer-publisher configmap/stf-smoketest-ceilometer-entrypoint-script job/stf-smoketest || true
6555
oc create configmap stf-smoketest-healthcheck-log --from-file "${REL}/healthcheck.log"
6656
oc create configmap stf-smoketest-collectd-config --from-file "${REL}/minimal-collectd.conf.template"
67-
oc create configmap stf-smoketest-sensubility-config --from-file /tmp/collectd-sensubility.conf
57+
oc create configmap stf-smoketest-sensubility-config --from-file "${REL}/collectd-sensubility.conf"
6858
oc create configmap stf-smoketest-collectd-entrypoint-script --from-file "${REL}/smoketest_collectd_entrypoint.sh"
6959
oc create configmap stf-smoketest-ceilometer-publisher --from-file "${REL}/ceilometer_publish.py"
7060
oc create configmap stf-smoketest-ceilometer-entrypoint-script --from-file "${REL}/smoketest_ceilometer_entrypoint.sh"
7161

62+
echo "*** [INFO] Creating Mock OSP Metrics QDR router..."
63+
oc delete pod qdr-test
64+
oc delete service qdr-test
65+
oc delete configmap qdr-test-config
66+
AMQP_PASS=$(oc get secret default-interconnect-users -o json | jq -r .data.guest | base64 -d)
67+
oc create -f <(sed -e "s/<<AMQP_PASS>>/${AMQP_PASS}/;" "${REL}/qdr-test.conf.yaml.template")
68+
oc create -f "${REL}/qdr-test.yaml"
69+
7270
echo "*** [INFO] Creating smoketest jobs..."
7371
oc delete job -l app=stf-smoketest
7472
for NAME in "${CLOUDNAMES[@]}"; do

tests/smoketest/smoketest_ceilometer_entrypoint.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ POD=$(hostname)
1313
echo "*** [INFO] My pod is: ${POD}"
1414

1515
# Run ceilometer_publisher script
16-
python3 /ceilometer_publish.py default-interconnect:5671 'driver=amqp&topic=cloud1-metering' 'driver=amqp&topic=cloud1-event'
16+
python3 /ceilometer_publish.py qdr-test:5672 'driver=amqp&topic=cloud1-metering' 'driver=amqp&topic=cloud1-event'
1717

1818
# Sleeping to produce data
19-
echo "*** [INFO] Sleeping for 20 seconds to produce all metrics and events"
20-
sleep 20
19+
echo "*** [INFO] Sleeping for 30 seconds to produce all metrics and events"
20+
sleep 30
2121

2222
echo "*** [INFO] List of metric names for debugging..."
2323
curl -sk -u "internal:${PROMETHEUS_AUTH_PASS}" -g "${PROMETHEUS}/api/v1/label/__name__/values" 2>&2 | tee /tmp/label_names

0 commit comments

Comments
 (0)