aboutsummaryrefslogtreecommitdiff
path: root/scenarios/fragments/garage.py
diff options
context:
space:
mode:
Diffstat (limited to 'scenarios/fragments/garage.py')
-rw-r--r--scenarios/fragments/garage.py74
1 files changed, 42 insertions, 32 deletions
diff --git a/scenarios/fragments/garage.py b/scenarios/fragments/garage.py
index f886b33..d0d5209 100644
--- a/scenarios/fragments/garage.py
+++ b/scenarios/fragments/garage.py
@@ -1,22 +1,32 @@
-import glob, json, requests, time, garage_admin_sdk
+import glob, json, time
from os.path import exists
from os import environ as env
from pathlib import Path
-from fragments import shared
-from garage_admin_sdk.api import nodes_api, layout_api, key_api
-from garage_admin_sdk.model.node_cluster_info import NodeClusterInfo
-from garage_admin_sdk.model.layout_version import LayoutVersion
-from garage_admin_sdk.model.add_key_request import AddKeyRequest
-from garage_admin_sdk.model.update_key_request import UpdateKeyRequest
-from garage_admin_sdk.model.update_key_request_allow import UpdateKeyRequestAllow
+from . import shared
+
+try:
+ import garage_admin_sdk
+ from garage_admin_sdk.api import nodes_api, layout_api, key_api
+ from garage_admin_sdk.model.node_cluster_info import NodeClusterInfo
+ from garage_admin_sdk.model.layout_version import LayoutVersion
+ from garage_admin_sdk.model.add_key_request import AddKeyRequest
+ from garage_admin_sdk.model.update_key_request import UpdateKeyRequest
+ from garage_admin_sdk.model.update_key_request_allow import UpdateKeyRequestAllow
+except:
+ pass
storage_path = "./i/am/not/defined"
rpc_secret = "3e9abff5f9e480afbadb46a77b7a26fe0e404258f0dc3fd5386b0ba8e0ad2fba"
metrics = "cacce0b2de4bc2d9f5b5fdff551e01ac1496055aed248202d415398987e35f81"
admin = "ae8cb40ea7368bbdbb6430af11cca7da833d3458a5f52086f4e805a570fb5c2a"
-path = None
key = None
+version_flavor = {
+ "garage-local": { "path": "./garage/target/release/garage" },
+ "garage-v0.7": { "version": "v0.7.3", "target": "x86_64-unknown-linux-musl" },
+ "garage-v0.8": { "version": "89b8087ba81c508ba382aa6c9cb6bb3afa6a43c8", "target": "x86_64-unknown-linux-musl" },
+}
+version = version_flavor["garage-v0.7"]
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0",
@@ -29,15 +39,15 @@ keys = key_api.KeyApi(api)
# Setup, launch on import
-storage_path = Path(shared.storage_path) / "garage" / env['HOST']
-if 'ZONE' in env and env['ZONE'] != "":
- storage_path = Path(shared.storage_path) / "garage" / env['ZONE'] / env['HOST']
-config = storage_path / "garage.toml"
-env['GARAGE_CONFIG_FILE'] = str(config)
+if 'HOST' in env:
+ storage_path = Path(shared.storage_path) / "garage" / env['HOST']
+ if 'ZONE' in env and env['ZONE'] != "":
+ storage_path = Path(shared.storage_path) / "garage" / env['ZONE'] / env['HOST']
+ config = storage_path / "garage.toml"
+ env['GARAGE_CONFIG_FILE'] = str(config)
def deploy_coord(version=None, target=None):
destroy()
- from_ci(version, target)
shared.log("start daemon")
daemon()
shared.log("discover nodes")
@@ -50,32 +60,32 @@ def deploy_coord(version=None, target=None):
def deploy_follow(version=None, target=None):
destroy()
- from_ci(version, target)
shared.log("start daemon")
daemon()
shared.log("wait for coord")
sync_on_key_up()
shared.log("ready")
-def from_local(p):
- global path
- path = p
- shared.exec(f"{p} --version")
+def path(vers=None):
+ if vers is None:
+ vers = version
-def from_ci(version=None, target=None):
- global path
- version = version or "v0.7.3"
- target = target or "x86_64-unknown-linux-musl"
+ if "path" in vers: return vers["path"]
+ else:
+ binary = f"garage-{vers['target']}-{vers['version']}"
+ return Path(shared.binary_path) / binary
- binary = f"garage-{target}-{version}"
- path = Path(shared.binary_path) / binary
- if shared.id() != 1: return
+def download():
+ for flav, version in version_flavor.items():
+ if "path" in version: continue
- if not exists(path):
+ p = path(vers=version)
+ if exists(p): continue
+
shared.exec(f"mkdir -p {shared.binary_path}")
- shared.exec(f"wget https://garagehq.deuxfleurs.fr/_releases/{version}/{target}/garage -O {path}")
- shared.exec(f"chmod +x {path}")
- shared.exec(f"{path} --version")
+ shared.exec(f"wget https://garagehq.deuxfleurs.fr/_releases/{version['version']}/{version['target']}/garage -O {p}")
+ shared.exec(f"chmod +x {p}")
+ shared.exec(f"{p} --version")
def daemon():
shared.exec(f"mkdir -p {storage_path}")
@@ -108,7 +118,7 @@ metrics_token = "{metrics}"
admin_token = "{admin}"
""")
- shared.exec(f"{path} server 2>> {storage_path}/logs.stderr 1>> {storage_path}/logs.stdout & echo $! > {storage_path}/daemon.pid")
+ shared.exec(f"{path()} server 2>> {storage_path}/logs.stderr 1>> {storage_path}/logs.stdout & echo $! > {storage_path}/daemon.pid")
time.sleep(1)
node_info = storage_path / "node_info"