gitlab-runner-tart-driver 0.3.4__py3-none-any.whl → 0.3.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gitlab_runner_tart_driver/__init__.py +1 -1
- gitlab_runner_tart_driver/cli.py +1 -2
- gitlab_runner_tart_driver/commands/prepare.py +94 -16
- {gitlab_runner_tart_driver-0.3.4.dist-info → gitlab_runner_tart_driver-0.3.5.dist-info}/METADATA +1 -1
- {gitlab_runner_tart_driver-0.3.4.dist-info → gitlab_runner_tart_driver-0.3.5.dist-info}/RECORD +9 -9
- {gitlab_runner_tart_driver-0.3.4.dist-info → gitlab_runner_tart_driver-0.3.5.dist-info}/LICENSE.txt +0 -0
- {gitlab_runner_tart_driver-0.3.4.dist-info → gitlab_runner_tart_driver-0.3.5.dist-info}/WHEEL +0 -0
- {gitlab_runner_tart_driver-0.3.4.dist-info → gitlab_runner_tart_driver-0.3.5.dist-info}/entry_points.txt +0 -0
- {gitlab_runner_tart_driver-0.3.4.dist-info → gitlab_runner_tart_driver-0.3.5.dist-info}/top_level.txt +0 -0
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.3.
|
1
|
+
__version__ = "0.3.5"
|
gitlab_runner_tart_driver/cli.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import os
|
2
2
|
import sys
|
3
|
+
import time
|
3
4
|
|
4
5
|
import click
|
5
6
|
|
@@ -234,24 +235,19 @@ def prepare(
|
|
234
235
|
for v in volumes:
|
235
236
|
volume_mounts.append(TartVolume.from_string(v))
|
236
237
|
|
237
|
-
|
238
|
-
tart
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
if not ip:
|
250
|
-
click.echo(f"[ERROR] Error, VM was not reacheable after '{p.timeout}' seconds")
|
251
|
-
sys.exit(system_failure_exit_code)
|
238
|
+
_create_vm(
|
239
|
+
tart_client=tart,
|
240
|
+
vm_name=tart_vm_name,
|
241
|
+
volume_mounts=volume_mounts,
|
242
|
+
params=p,
|
243
|
+
system_failure_exit_code=system_failure_exit_code,
|
244
|
+
)
|
245
|
+
_get_vm_ip(tart_client=tart, vm_name=tart_vm_name, params=p, system_failure_exit_code=system_failure_exit_code)
|
246
|
+
ssh_session = _create_ssh_session(
|
247
|
+
tart_client=tart, vm_name=tart_vm_name, params=p, system_failure_exit_code=system_failure_exit_code
|
248
|
+
)
|
252
249
|
|
253
250
|
try:
|
254
|
-
ssh_session = tart.ssh_session(name=p.vm_name(), username=p.ssh_username, password=p.ssh_password)
|
255
251
|
ssh_session.exec_ssh_command(
|
256
252
|
f"sudo mkdir -p {remote_script_dir} && sudo chown {p.ssh_username}:{p.ssh_username} {remote_script_dir}",
|
257
253
|
)
|
@@ -289,3 +285,85 @@ def prepare(
|
|
289
285
|
tart.print_spec(tart_vm_name)
|
290
286
|
|
291
287
|
sys.exit(0)
|
288
|
+
|
289
|
+
|
290
|
+
def _create_vm(
|
291
|
+
tart_client, vm_name, volume_mounts, params, system_failure_exit_code, max_retries=3, retry_timeout_in_sec=5
|
292
|
+
):
|
293
|
+
try:
|
294
|
+
tart_client.run(vm_name, volume_mounts, no_graphics=params.headless, softnet=params.softnet_enabled)
|
295
|
+
# check if vm is listed
|
296
|
+
retry_count = 0
|
297
|
+
while True:
|
298
|
+
try:
|
299
|
+
vm = tart_client.get(vm_name)
|
300
|
+
if vm:
|
301
|
+
click.echo(f"[INFO] VM '{vm_name}' is running")
|
302
|
+
break
|
303
|
+
else:
|
304
|
+
raise Exception("VM not found")
|
305
|
+
except Exception:
|
306
|
+
if retry_count < max_retries:
|
307
|
+
retry_count += 1
|
308
|
+
click.secho(
|
309
|
+
f"[WARNING] Failed to get IP of VM '{vm_name}'. [{retry_count+1}/{max_retries}] Retrying in '{retry_timeout_in_sec}' seconds...",
|
310
|
+
fg="yellow",
|
311
|
+
)
|
312
|
+
time.sleep(retry_timeout_in_sec)
|
313
|
+
else:
|
314
|
+
click.secho(f"[ERROR] VM '{vm_name}' could not be started.")
|
315
|
+
sys.exit(system_failure_exit_code)
|
316
|
+
except Exception:
|
317
|
+
click.secho(f"[ERROR] Failed to start VM '{vm_name}'", fg="red")
|
318
|
+
sys.exit(system_failure_exit_code)
|
319
|
+
|
320
|
+
|
321
|
+
def _get_vm_ip(tart_client, vm_name, params, system_failure_exit_code, max_retries=3, retry_timeout_in_sec=5):
|
322
|
+
retry_count = 0
|
323
|
+
while True:
|
324
|
+
try:
|
325
|
+
vm_ip_address = tart_client.ip(vm_name, timeout=params.timeout)
|
326
|
+
if vm_ip_address:
|
327
|
+
break
|
328
|
+
else:
|
329
|
+
raise Exception("VM IP not found")
|
330
|
+
except Exception:
|
331
|
+
if retry_count < max_retries:
|
332
|
+
retry_count += 1
|
333
|
+
click.secho(
|
334
|
+
f"[WARNING] VM with name '{vm_name}' was not found. Retrying in '{retry_timeout_in_sec}' seconds...",
|
335
|
+
fg="yellow",
|
336
|
+
)
|
337
|
+
time.sleep(retry_timeout_in_sec)
|
338
|
+
else:
|
339
|
+
click.secho(f"[ERROR] Failed to get IP of VM '{vm_name}'.")
|
340
|
+
sys.exit(system_failure_exit_code)
|
341
|
+
|
342
|
+
return vm_ip_address
|
343
|
+
|
344
|
+
|
345
|
+
def _create_ssh_session(tart_client, vm_name, params, system_failure_exit_code, max_retries=3, retry_timeout_in_sec=5):
|
346
|
+
ssh_session = None
|
347
|
+
retry_count = 0
|
348
|
+
while True:
|
349
|
+
try:
|
350
|
+
ssh_session = tart_client.ssh_session(
|
351
|
+
name=vm_name, username=params.ssh_username, password=params.ssh_password
|
352
|
+
)
|
353
|
+
if ssh_session:
|
354
|
+
break
|
355
|
+
else:
|
356
|
+
raise Exception("SSH Session could not be established.")
|
357
|
+
except Exception:
|
358
|
+
if retry_count < max_retries:
|
359
|
+
retry_count += 1
|
360
|
+
click.secho(
|
361
|
+
f"[WARNING] Failed to setup ssh connection with '{vm_name}'. Retrying in '{retry_timeout_in_sec}' seconds...",
|
362
|
+
fg="yellow",
|
363
|
+
)
|
364
|
+
time.sleep(retry_timeout_in_sec)
|
365
|
+
else:
|
366
|
+
click.secho(f"[ERROR] Failed to setup ssh connection with '{vm_name}'.")
|
367
|
+
sys.exit(system_failure_exit_code)
|
368
|
+
|
369
|
+
return ssh_session
|
{gitlab_runner_tart_driver-0.3.4.dist-info → gitlab_runner_tart_driver-0.3.5.dist-info}/RECORD
RENAMED
@@ -1,10 +1,10 @@
|
|
1
|
-
gitlab_runner_tart_driver/__init__.py,sha256=
|
1
|
+
gitlab_runner_tart_driver/__init__.py,sha256=ThnCuF3X7rsQSd5PAea_jfYA70ZmhLvkFcLBxBPwZnY,22
|
2
2
|
gitlab_runner_tart_driver/__main__.py,sha256=FiyMv64vDC-R8i3CGEP9QP48djZFHm7utyChwZJWCeY,107
|
3
|
-
gitlab_runner_tart_driver/cli.py,sha256=
|
3
|
+
gitlab_runner_tart_driver/cli.py,sha256=rCtFzi7i4JUX7VXteBHyII4sEbMzpn8SIpyjyKrQCBI,592
|
4
4
|
gitlab_runner_tart_driver/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
gitlab_runner_tart_driver/commands/cleanup.py,sha256=nFe7TGdxsVSXNR9onm-3iCjmUo6SzujV5LrA_y439fs,1422
|
6
6
|
gitlab_runner_tart_driver/commands/config.py,sha256=cacJ9ms5r3nZGZ_sS2d21Uoz7S-bMjB__lORUmeXZ-4,760
|
7
|
-
gitlab_runner_tart_driver/commands/prepare.py,sha256=
|
7
|
+
gitlab_runner_tart_driver/commands/prepare.py,sha256=JTxTlPnPELC9C2TMOLqvcu23jOL0sofMxdp9OwpfddU,13964
|
8
8
|
gitlab_runner_tart_driver/commands/run.py,sha256=kXQxi8nxv6QQRFzGrlqifLtFtbjXAYgjCiMVqXkb2_A,3065
|
9
9
|
gitlab_runner_tart_driver/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
gitlab_runner_tart_driver/modules/gitlab_custom_command_config.py,sha256=XvE83QmQUcqtVMYZY3okGOgO86DBX6Y7xhXNenmKxFY,3086
|
@@ -12,9 +12,9 @@ gitlab_runner_tart_driver/modules/gitlab_custom_driver_config.py,sha256=ujxlzP1Z
|
|
12
12
|
gitlab_runner_tart_driver/modules/tart.py,sha256=rD6IPtpz57dwsPGVBWaeKeVoqI1MoBvdtkqozXgmAxA,9914
|
13
13
|
gitlab_runner_tart_driver/modules/utils.py,sha256=7ipKjy_5tC5iW67Na_A9XhF4o2lKcAqO8LRTTSJKNd0,923
|
14
14
|
gitlab_runner_tart_driver/scripts/install-gitlab-runner.sh.j2,sha256=-rBzxZ92w7lMrTCVcjMHhlZgqPIK1RJKVoOc2wjZvck,2533
|
15
|
-
gitlab_runner_tart_driver-0.3.
|
16
|
-
gitlab_runner_tart_driver-0.3.
|
17
|
-
gitlab_runner_tart_driver-0.3.
|
18
|
-
gitlab_runner_tart_driver-0.3.
|
19
|
-
gitlab_runner_tart_driver-0.3.
|
20
|
-
gitlab_runner_tart_driver-0.3.
|
15
|
+
gitlab_runner_tart_driver-0.3.5.dist-info/LICENSE.txt,sha256=TiYXQpEfbzcPBNGb7k1NslUngq_un-5cxGyT4W1S_f4,3303
|
16
|
+
gitlab_runner_tart_driver-0.3.5.dist-info/METADATA,sha256=dI44fmUwC6k_iCygHAOKtp31CoAKM7uBme8-OPdYVo0,20705
|
17
|
+
gitlab_runner_tart_driver-0.3.5.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
18
|
+
gitlab_runner_tart_driver-0.3.5.dist-info/entry_points.txt,sha256=xmvpGQf1wvFPy5wqDWXu8k5FD_k9KkCNCkpuworTsr0,82
|
19
|
+
gitlab_runner_tart_driver-0.3.5.dist-info/top_level.txt,sha256=JjRzCs2sr24xG4SV_5tIBPpNC1Tec7I4AbK4IKMDqOc,26
|
20
|
+
gitlab_runner_tart_driver-0.3.5.dist-info/RECORD,,
|
{gitlab_runner_tart_driver-0.3.4.dist-info → gitlab_runner_tart_driver-0.3.5.dist-info}/LICENSE.txt
RENAMED
File without changes
|
{gitlab_runner_tart_driver-0.3.4.dist-info → gitlab_runner_tart_driver-0.3.5.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|