osmith submitted this change.
ansible: add octsimtest sudo scripts
Add the scripts that jenkins can execute with sudo during the octsimtest
jobs, so they are properly versioned in a git repository.
restart-pcscd.sh is new (OS#7022), the other scripts were previously
added for SYS#8011 last month and have been in use since then.
Related: SYS#8011
Change-Id: I9bcbbba156de0cea1f7fa49bfaeb99e6f1f90647
---
A ansible/files/octsimtest/restart-pcscd.sh
A ansible/files/octsimtest/start-hook.sh
A ansible/files/octsimtest/stop-hook.sh
A ansible/files/octsimtest/sudoers.d-jenkins
M ansible/hosts
A ansible/setup-octsimtest.yml
M ansible/util/known_hosts
7 files changed, 116 insertions(+), 0 deletions(-)
diff --git a/ansible/files/octsimtest/restart-pcscd.sh b/ansible/files/octsimtest/restart-pcscd.sh
new file mode 100644
index 0000000..fdcd630
--- /dev/null
+++ b/ansible/files/octsimtest/restart-pcscd.sh
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+# SYS#8011
+systemctl restart pcscd
diff --git a/ansible/files/octsimtest/start-hook.sh b/ansible/files/octsimtest/start-hook.sh
new file mode 100644
index 0000000..13a67d4
--- /dev/null
+++ b/ansible/files/octsimtest/start-hook.sh
@@ -0,0 +1,37 @@
+#!/bin/sh -e
+# SYS#8011
+TMP_DIR=/tmp/osmo-ccid-firmware-tests
+CAPTURE_BUS_ID="$(lsusb | grep sysmoOCTSIM | cut -d ' ' -f 2 | tr -d 0)"
+
+if [ -e "$TMP_DIR"/dumpcap.pid ]; then
+ kill -9 $(cat "$TMP_DIR"/dumpcap.pid) || true
+fi
+
+rm -rf "$TMP_DIR"
+mkdir -p "$TMP_DIR"/logs
+
+cd "$TMP_DIR"
+
+# Store current date, so stop-hook.sh can get pcscd logs from journalctl
+date "+%F %H:%M:%S" >start_date
+
+echo "[start-hook] restarting pcscd"
+sleep 1
+systemctl restart pcscd
+sleep 1
+
+# usbmon capture
+if [ -n "$CAPTURE_BUS_ID" ]; then
+ echo "[start-hook] starting usbmon capture on bus $CAPTURE_BUS_ID"
+ modprobe usbmon
+ timeout 1h \
+ dumpcap \
+ -i usbmon"$CAPTURE_BUS_ID" \
+ -w logs/usbmon.pcapng \
+ >logs/dumpcap.log 2>&1 &
+ echo "$!" >dumpcap.pid
+else
+ echo "[start-hook] warning: failed to get capture bus ID, skipping capture"
+fi
+
+echo "[start-hook] done"
diff --git a/ansible/files/octsimtest/stop-hook.sh b/ansible/files/octsimtest/stop-hook.sh
new file mode 100644
index 0000000..b5722b4
--- /dev/null
+++ b/ansible/files/octsimtest/stop-hook.sh
@@ -0,0 +1,41 @@
+#!/bin/sh -e
+# SYS#8011
+OUTPUT_DIR="$PWD"
+TMP_DIR=/tmp/osmo-ccid-firmware-tests
+START_DATE=$(cat "$TMP_DIR"/start_date)
+
+if ! [ -d "$TMP_DIR" ]; then
+ echo "[stop-hook] nothing to do"
+ exit 0
+fi
+
+cd "$TMP_DIR"
+
+show_size() {
+ printf "[stop-hook] "
+ du -h "$1"
+}
+
+# Store pcscd log
+echo "[stop-hook] getting pcscd logs since $START_DATE"
+journalctl \
+ -u pcscd.service \
+ --since="$START_DATE" \
+ >logs/pcscd.log
+show_size logs/pcscd.log
+
+echo "[stop-hook] stopping usbmon capture"
+kill -9 $(cat dumpcap.pid) || true
+rm dumpcap.pid
+show_size logs/usbmon.pcapng
+
+echo "[stop-hook] compressing usbmon capture"
+pigz logs/usbmon.pcapng
+show_size logs/usbmon.pcapng.gz
+
+chown -R jenkins:jenkins logs
+cd "$OUTPUT_DIR"
+mv "$TMP_DIR"/logs .
+rm -rf "$TMP_DIR"
+
+echo "[stop-hook] done"
diff --git a/ansible/files/octsimtest/sudoers.d-jenkins b/ansible/files/octsimtest/sudoers.d-jenkins
new file mode 100644
index 0000000..a975094
--- /dev/null
+++ b/ansible/files/octsimtest/sudoers.d-jenkins
@@ -0,0 +1,3 @@
+jenkins ALL=(root) NOPASSWD: /etc/osmo-ccid-firmware-tests/start-hook.sh
+jenkins ALL=(root) NOPASSWD: /etc/osmo-ccid-firmware-tests/stop-hook.sh
+jenkins ALL=(root) NOPASSWD: /etc/osmo-ccid-firmware-tests/restart-pcscd.sh
diff --git a/ansible/hosts b/ansible/hosts
index c65dd40..9d854ce 100644
--- a/ansible/hosts
+++ b/ansible/hosts
@@ -22,6 +22,9 @@
[simtester]
simtest ansible_host=10.9.25.94
+[octsimtester]
+octsimtest ansible_host=10.9.25.92
+
[obs_workers]
build4-obsworker ansible_host=2a01:4f8:121:200a::1:2 obs_worker_instances=8 obs_worker_jobs=8
build5-obsworker ansible_host=2a01:4f8:140:926a::1:2 obs_worker_instances=8 obs_worker_jobs=8
diff --git a/ansible/setup-octsimtest.yml b/ansible/setup-octsimtest.yml
new file mode 100644
index 0000000..93f3229
--- /dev/null
+++ b/ansible/setup-octsimtest.yml
@@ -0,0 +1,28 @@
+---
+- name: setup octsimtest
+ hosts: octsimtest
+ user: root
+ tasks:
+
+ - name: install /etc/sudoers.d/jenkins
+ copy:
+ src: octsimtest/sudoers.d-jenkins
+ dest: /etc/sudoers.d/jenkins
+
+ - name: install /etc/osmo-ccid-firmware-tests/restart-pcscd.sh
+ copy:
+ src: octsimtest/restart-pcscd.sh
+ dest: /etc/osmo-ccid-firmware-tests/restart-pcscd.sh
+ mode: 0755
+
+ - name: install /etc/osmo-ccid-firmware-tests/start-hook.sh
+ copy:
+ src: octsimtest/start-hook.sh
+ dest: /etc/osmo-ccid-firmware-tests/start-hook.sh
+ mode: 0755
+
+ - name: install /etc/osmo-ccid-firmware-tests/stop-hook.sh
+ copy:
+ src: octsimtest/stop-hook.sh
+ dest: /etc/osmo-ccid-firmware-tests/stop-hook.sh
+ mode: 0755
diff --git a/ansible/util/known_hosts b/ansible/util/known_hosts
index c397642..84d62ad 100644
--- a/ansible/util/known_hosts
+++ b/ansible/util/known_hosts
@@ -14,3 +14,4 @@
10.9.25.26 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICHw8f7STEM6tZj/14dMG0aPcOLzpC0uSwoOlwAMv7Z3
10.9.25.28 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINEWffWCaHxwMs1W+m55WDHJSIR4O0eiTtcteJCBjKZK
10.9.25.94 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINnBQkBViNy6CyHbwOtyLBV5bG7yFxI93DJOfwIHDd/N
+10.9.25.92 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ8YZYuaz32dbIL3OBe/2hy4yauMR5rEsov207MB4Tq+
To view, visit change 43138. To unsubscribe, or for help writing mail filters, visit settings.