summaryrefslogtreecommitdiff
diff options
-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: