X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ea17ec3d053bd2f792730c5ea74d03109ef942ce..29a07d251a7eecd0ae4965ac5113f9de7da4e6b7:/sdk/python/run_test_server.py diff --git a/sdk/python/run_test_server.py b/sdk/python/run_test_server.py index ba1df86753..bdfdea9734 100644 --- a/sdk/python/run_test_server.py +++ b/sdk/python/run_test_server.py @@ -123,15 +123,24 @@ def stop(): os.chdir(cwd) -def _start_keep(n): +def _start_keep(n, keep_args): keep0 = tempfile.mkdtemp() - kp0 = subprocess.Popen(["bin/keep", "-volumes={}".format(keep0), "-listen=:{}".format(25107+n)]) + keep_cmd = ["bin/keep", + "-volumes={}".format(keep0), + "-listen=:{}".format(25107+n), + "-pid={}".format("tmp/keep{}.pid".format(n))] + + for arg, val in keep_args.iteritems(): + keep_cmd.append("{}={}".format(arg, val)) + + kp0 = subprocess.Popen(keep_cmd) with open("tmp/keep{}.pid".format(n), 'w') as f: f.write(str(kp0.pid)) + with open("tmp/keep{}.volume".format(n), 'w') as f: f.write(keep0) -def run_keep(): +def run_keep(blob_signing_key=None, enforce_permissions=False): stop_keep() cwd = os.getcwd() @@ -141,13 +150,24 @@ def run_keep(): else: os.environ["GOPATH"] = os.getcwd() + ":" + os.environ["GOPATH"] - subprocess.call(["go", "install", "keep"]) + subprocess.call(["./go.sh", "install", "keep"]) if not os.path.exists("tmp"): os.mkdir("tmp") - _start_keep(0) - _start_keep(1) + keep_args = {} + if blob_signing_key: + with open("tmp/keep.blob_signing_key", "w") as f: + f.write(blob_signing_key) + keep_args['--permission-key-file'] = 'tmp/keep.blob_signing_key' + if enforce_permissions: + keep_args['--enforce-permissions'] = 'true' + + _start_keep(0, keep_args) + _start_keep(1, keep_args) + + os.environ["ARVADOS_API_HOST"] = "127.0.0.1:3001" + os.environ["ARVADOS_API_HOST_INSECURE"] = "true" authorize_with("admin") api = arvados.api('v1', cache=False) @@ -168,6 +188,9 @@ def _stop_keep(n): if os.path.exists("tmp/keep{}.volume".format(n)): with open("tmp/keep{}.volume".format(n), 'r') as r: shutil.rmtree(r.read(), True) + os.unlink("tmp/keep{}.volume".format(n)) + if os.path.exists("tmp/keep.blob_signing_key"): + os.remove("tmp/keep.blob_signing_key") def stop_keep(): cwd = os.getcwd() @@ -176,10 +199,43 @@ def stop_keep(): _stop_keep(0) _stop_keep(1) - shutil.rmtree("tmp", True) + os.chdir(cwd) + +def run_keep_proxy(auth): + stop_keep_proxy() + + cwd = os.getcwd() + os.chdir(os.path.join(os.path.dirname(__file__), KEEP_SERVER_DIR)) + if os.environ.get('GOPATH') == None: + os.environ["GOPATH"] = os.getcwd() + else: + os.environ["GOPATH"] = os.getcwd() + ":" + os.environ["GOPATH"] + + subprocess.call(["./go.sh", "install", "arvados.org/keepproxy"]) + + if not os.path.exists("tmp"): + os.mkdir("tmp") + + os.environ["ARVADOS_API_HOST"] = "127.0.0.1:3001" + os.environ["ARVADOS_API_HOST_INSECURE"] = "true" + os.environ["ARVADOS_API_TOKEN"] = fixture("api_client_authorizations")[auth]["api_token"] + + kp0 = subprocess.Popen(["bin/keepproxy", "-pid=tmp/keepproxy.pid", "-listen=:{}".format(25101)]) + + authorize_with("admin") + api = arvados.api('v1', cache=False) + api.keep_services().create(body={"keep_service": {"service_host": "localhost", "service_port": 25101, "service_type": "proxy"} }).execute() + + arvados.config.settings()["ARVADOS_KEEP_PROXY"] = "http://localhost:25101" os.chdir(cwd) +def stop_keep_proxy(): + cwd = os.getcwd() + os.chdir(os.path.join(os.path.dirname(__file__), KEEP_SERVER_DIR)) + kill_server_pid("tmp/keepproxy.pid", 0) + os.chdir(cwd) + def fixture(fix): '''load a fixture yaml file''' with open(os.path.join(os.path.dirname(__file__), ARV_API_SERVER_DIR, "test", "fixtures", @@ -213,3 +269,9 @@ if __name__ == "__main__": run_keep() elif args.action == 'stop_keep': stop_keep() + elif args.action == 'start_keep_proxy': + run_keep_proxy("admin") + elif args.action == 'stop_keep_proxy': + stop_keep_proxy() + else: + print('Unrecognized action "{}", actions are "start", "stop", "start_keep", "stop_keep"'.format(args.action))