summaryrefslogtreecommitdiff
diff options
authorMaciej Kisielewski <maciej.kisielewski@canonical.com>2022-05-03 22:51:23 +0000
committerMaciej Kisielewski <maciej.kisielewski@canonical.com>2022-05-08 14:56:35 +0000
commit23690b465167c38e8a977358c6998a844ebbd8bb (patch)
tree9210f2e2b2fcdbdaa1718a775e99eae7345d5c23
parentd693981bfa27560b2e7878858024eea11ee9945b (diff)
Add: make removable_watcher Zapper aware
-rwxr-xr-xbin/removable_storage_watcher.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/bin/removable_storage_watcher.py b/bin/removable_storage_watcher.py
index c13439e..42113e1 100755
--- a/bin/removable_storage_watcher.py
+++ b/bin/removable_storage_watcher.py
@@ -5,6 +5,7 @@ import collections
import copy
import dbus
import logging
+import os
import sys
import gi
@@ -22,6 +23,7 @@ from checkbox_support.heuristics.udisks2 import is_memory_card # noqa: E402
from checkbox_support.parsers.udevadm import CARD_READER_RE # noqa: E402
from checkbox_support.parsers.udevadm import GENERIC_RE # noqa: E402
from checkbox_support.parsers.udevadm import FLASH_RE # noqa: E402
+from checkbox_support.scripts.zapper_proxy import ControlVersionDecider
from checkbox_support.udev import get_interconnect_speed # noqa: E402
from checkbox_support.udev import get_udev_block_devices # noqa: E402
@@ -877,6 +879,8 @@ def main():
dest='logging_level', help="Enable debugging")
parser.add_argument('--unmounted', action='store_true',
help="Don't require drive being automounted")
+ parser.add_argument('--zapper-usb-address', type=str,
+ help="Zapper's USB switch address to use")
parser.set_defaults(logging_level=logging.WARNING)
args = parser.parse_args()
@@ -910,7 +914,21 @@ def main():
args.action, args.device, args.minimum_speed, args.memorycard)
# Run the actual listener and wait till it either times out of discovers
# the appropriate media changes
- print("\n\n{} NOW\n\n".format(args.action.upper()), flush=True)
+ if args.zapper_usb_address:
+ zapper_host = os.environ.get('ZAPPER_ADDRESS')
+ if not zapper_host:
+ raise SystemExit(
+ "ZAPPER_ADDRESS environment variable not found!")
+ zapper_control = ControlVersionDecider().decide(zapper_host)
+ usb_address = args.zapper_usb_address
+ if args.action == "insert":
+ logging.info("Calling zapper to connect the USB device")
+ zapper_control.usb_set_state(usb_address, 'dut')
+ elif args.action == "remove":
+ logging.info("Calling zapper to disconnect the USB device")
+ zapper_control.usb_set_state(usb_address, 'off')
+ else:
+ print("\n\n{} NOW\n\n".format(args.action.upper()), flush=True)
try:
return listener.check(args.timeout)
except KeyboardInterrupt: