osmith has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ci/+/43138?usp=email )

Change subject: ansible: add octsimtest sudo scripts
......................................................................

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(-)

Approvals:
  Jenkins Builder: Verified
  jolly: Looks good to me, but someone else must approve
  pespin: Looks good to me, but someone else must approve
  osmith: Looks good to me, approved




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 https://gerrit.osmocom.org/c/osmo-ci/+/43138?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: osmo-ci
Gerrit-Branch: master
Gerrit-Change-Id: I9bcbbba156de0cea1f7fa49bfaeb99e6f1f90647
Gerrit-Change-Number: 43138
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: jolly <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>

Reply via email to