Skip to content

Commit acbefcc

Browse files
authored
Merge pull request #1572 from jluebbe/add-pystuck
remote: add support for pystuck
2 parents 1eb7127 + 289599d commit acbefcc

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

labgrid/remote/coordinator.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,6 +1002,9 @@ async def serve(listen, cleanup) -> None:
10021002
logging.debug("Starting server")
10031003
await server.start()
10041004

1005+
if inspect:
1006+
inspect.coordinator = coordinator
1007+
10051008
async def server_graceful_shutdown():
10061009
logging.info("Starting graceful shutdown...")
10071010
# Shuts down the server with 0 seconds of grace period. During the
@@ -1025,6 +1028,10 @@ def main():
10251028
help="coordinator listening host and port",
10261029
)
10271030
parser.add_argument("-d", "--debug", action="store_true", default=False, help="enable debug mode")
1031+
parser.add_argument("--pystuck", action="store_true", help="enable pystuck")
1032+
parser.add_argument(
1033+
"--pystuck-port", metavar="PORT", type=int, default=6666, help="use a different pystuck port than 6666"
1034+
)
10281035

10291036
args = parser.parse_args()
10301037

@@ -1033,6 +1040,19 @@ def main():
10331040
loop = asyncio.new_event_loop()
10341041
asyncio.set_event_loop(loop)
10351042

1043+
global inspect
1044+
if args.pystuck:
1045+
from types import SimpleNamespace
1046+
1047+
inspect = SimpleNamespace()
1048+
inspect.loop = loop
1049+
1050+
import pystuck
1051+
1052+
pystuck.run_server(port=args.pystuck_port)
1053+
else:
1054+
inspect = None
1055+
10361056
cleanup = []
10371057
loop.set_debug(True)
10381058
try:

labgrid/remote/exporter.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,6 +1005,10 @@ async def update_resource(self, group_name, resource_name):
10051005

10061006
async def amain(config) -> bool:
10071007
exporter = Exporter(config)
1008+
1009+
if inspect:
1010+
inspect.exporter = exporter
1011+
10081012
await exporter.run()
10091013

10101014

@@ -1044,6 +1048,10 @@ def main():
10441048
default=False,
10451049
help="enable isolated mode (always request SSH forwards)",
10461050
)
1051+
parser.add_argument("--pystuck", action="store_true", help="enable pystuck")
1052+
parser.add_argument(
1053+
"--pystuck-port", metavar="PORT", type=int, default=6667, help="use a different pystuck port than 6667"
1054+
)
10471055
parser.add_argument("resources", metavar="RESOURCES", type=str, help="resource config file name")
10481056

10491057
args = parser.parse_args()
@@ -1065,6 +1073,19 @@ def main():
10651073
loop = asyncio.new_event_loop()
10661074
asyncio.set_event_loop(loop)
10671075

1076+
global inspect
1077+
if args.pystuck:
1078+
from types import SimpleNamespace
1079+
1080+
inspect = SimpleNamespace()
1081+
inspect.loop = loop
1082+
1083+
import pystuck
1084+
1085+
pystuck.run_server(port=args.pystuck_port)
1086+
else:
1087+
inspect = None
1088+
10681089
asyncio.run(amain(config), debug=bool(args.debug))
10691090

10701091
if reexec:

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ dev = [
8888
"pytest-mock>=3.6.1",
8989
"pylint>=3.0.0",
9090
"ruff>=0.5.7",
91+
"pystuck",
9192

9293
# GRPC Channelz support
9394
"grpcio-channelz>=1.64.1, <2.0.0",

0 commit comments

Comments
 (0)