#!/usr/bin/python3 -IS """Private lifecycle-test commands; no real Docker, SSH or TCP connection.""" import json import os import socket import sys def main(): root = os.environ.get('HYB_DEPLOYMENT_FIXTURE_ROOT', '') if not os.path.basename(root).startswith('hyb-db-lifecycle-') or os.path.dirname(__file__) != os.path.join(root, 'bin'): raise ValueError('fixture_only') with socket.socket(socket.AF_UNIX) as connection: connection.connect(os.path.join(root, 'command.sock')) with connection.makefile('rwb') as stream: stream.write((json.dumps({'command': os.path.basename(__file__), 'args': sys.argv[1:]}) + '\n').encode()) stream.flush() reply = json.loads(stream.readline()) if reply.get('action') == 'stdin': stream.write((json.dumps(sys.stdin.read()) + '\n').encode()) stream.flush() reply = json.loads(stream.readline()) if reply.get('action') == 'timeout' and os.path.basename(__file__) == 'timeout': os.execv('/usr/bin/timeout', ['/usr/bin/timeout', *sys.argv[1:]]) if 'action' in reply or type(reply.get('code')) is not int: raise ValueError('invalid_reply') sys.stdout.write(reply.get('stdout', '')) sys.stderr.write(reply.get('stderr', '')) return reply['code'] try: sys.exit(main()) except Exception: sys.stderr.write('[deployment-fixture] transport_failed\n') sys.exit(97)