utils_devops 0.1.167__py3-none-any.whl → 0.1.169__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.
@@ -2270,6 +2270,7 @@ def playwright_test_compose(
2270
2270
  dry_run: bool = False,
2271
2271
  project_name: Optional[str] = None,
2272
2272
  ui: Optional[bool] = False,
2273
+ skip_project_up: Optional[bool] = False,
2273
2274
  logger: Optional[logger] = None,
2274
2275
  ) -> Dict[str, Any]:
2275
2276
  """
@@ -2345,8 +2346,39 @@ def playwright_test_compose(
2345
2346
  logger.info(f"{STICKERS['success']} Validation complete")
2346
2347
  logger.info("")
2347
2348
 
2349
+ if skip_project_up :
2350
+ # Step 4: Health checks (single phase with total timeout)
2351
+ if not dry_run:
2352
+ logger.info("🏥 Step 4: Performing health checks...")
2353
+ health_success, health_details = _perform_health_checks(
2354
+ compose_file=compose_file,
2355
+ services=services,
2356
+ timeout=50,
2357
+ interval=1,
2358
+ logger=logger,
2359
+ env_file=env_file
2360
+ )
2361
+
2362
+ result["steps"]["health_check"] = health_details
2363
+ result["health_status"] = health_details.get("service_status", {})
2364
+
2365
+ # Identify failing services (any not 'healthy')
2366
+ failing_services = [
2367
+ svc for svc, status in health_details.get("service_status", {}).items()
2368
+ if status.get("overall_status") != "healthy"
2369
+ ]
2370
+ result["failing_services"] = failing_services
2371
+
2372
+ if health_success:
2373
+ logger.info("✅ All services healthy!")
2374
+ result["success"] = True
2375
+ else:
2376
+ logger.error(f"❌ Health checks failed for {len(failing_services)} services: {failing_services}")
2377
+ result["success"] = False
2378
+ skip_project_up = False
2379
+
2348
2380
  # STEP 1: Version update
2349
- if update_version:
2381
+ if update_version and not skip_project_up :
2350
2382
  logger.info(f"{STICKERS['info']} STEP 1: Updating version")
2351
2383
  if not dry_run:
2352
2384
  new_version = _update_env_version(env_file=env_file, source=version_source, logger=logger)
@@ -2357,37 +2389,42 @@ def playwright_test_compose(
2357
2389
  logger.info("")
2358
2390
 
2359
2391
  # STEP 2: Environment
2360
- if not dry_run:
2392
+ if not dry_run and not skip_project_up:
2361
2393
  envs.dotenv_set_key(env_file,"STATIC_CAPTCHA","true")
2362
2394
 
2363
2395
 
2364
2396
  # STEP 3: Application stack
2365
2397
  logger.info(f"{STICKERS['info']} STEP 3: Starting application stack")
2366
2398
  if not dry_run:
2367
- app_result = test_compose(
2368
- compose_file=compose_file,
2369
- env_file=env_file,
2370
- update_version=False,
2371
- services=services,
2372
- health_timeout=health_timeout,
2373
- health_interval=health_interval,
2374
- capture_logs=capture_logs,
2375
- log_tail=log_tail,
2376
- pull_missing=pull_missing,
2377
- no_build=no_build,
2378
- no_pull=no_pull,
2379
- keep_compose_up=True,
2380
- project_name=project_name,
2381
- dry_run=dry_run,
2382
- logger=logger,
2383
- )
2384
-
2385
- result['app_result'] = app_result
2386
- if not app_result.get('success'):
2387
- raise DockerOpsError("Application stack failed")
2388
-
2389
- logger.info(f"{STICKERS['success']} Application stack ready")
2390
- logger.info("")
2399
+ if not skip_project_up :
2400
+ app_result = test_compose(
2401
+ compose_file=compose_file,
2402
+ env_file=env_file,
2403
+ update_version=False,
2404
+ services=services,
2405
+ health_timeout=health_timeout,
2406
+ health_interval=health_interval,
2407
+ capture_logs=capture_logs,
2408
+ log_tail=log_tail,
2409
+ pull_missing=pull_missing,
2410
+ no_build=no_build,
2411
+ no_pull=no_pull,
2412
+ keep_compose_up=True,
2413
+ project_name=project_name,
2414
+ dry_run=dry_run,
2415
+ logger=logger,
2416
+ )
2417
+
2418
+ result['app_result'] = app_result
2419
+ if not app_result.get('success'):
2420
+ raise DockerOpsError("Application stack failed")
2421
+
2422
+ logger.info(f"{STICKERS['success']} Application stack ready")
2423
+ logger.info("")
2424
+ else :
2425
+ logger.info(f"{STICKERS['info']} Application start skipped (skip_project_up is True)")
2426
+ logger.info("")
2427
+
2391
2428
  else:
2392
2429
  logger.info(f"{STICKERS['info']} Application start skipped (dry run)")
2393
2430
  logger.info("")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utils_devops
3
- Version: 0.1.167
3
+ Version: 0.1.169
4
4
  Summary: Lightweight DevOps utilities for automation scripts: config editing (YAML/JSON/INI/.env), templating, diffing, and CLI tools
5
5
  License: MIT
6
6
  Keywords: devops,automation,nginx,cli,jinja2,yaml,config,diff,templating,logging,docker,compose,file-ops
@@ -9,7 +9,7 @@ utils_devops/core/strings.py,sha256=8s0GSjcyTKwLjJjsJ_XfOJxPtyb549icDlU9SUxSvHI,
9
9
  utils_devops/core/systems.py,sha256=wNbEFUAvbMPdqWN-iXvTzvj5iE9xaWfjZYYvD0EZAH0,47577
10
10
  utils_devops/extras/__init__.py,sha256=ZXHeVLHO3_qiW9AY-UQ_YA9cQzmkLGv54a2UbyvtlM0,3571
11
11
  utils_devops/extras/aws_ops.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- utils_devops/extras/docker_ops.py,sha256=VGH3SWufYEEr4459Xl_tgJ-rXNu62lFj-hSbtQua39I,197991
12
+ utils_devops/extras/docker_ops.py,sha256=-ZdlmyJZEvXKOK7a130oCLJOES9LzXiqwuhFw9MBn1s,199809
13
13
  utils_devops/extras/git_ops.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  utils_devops/extras/interaction_ops.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  utils_devops/extras/metrics_ops.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -19,7 +19,7 @@ utils_devops/extras/notification_ops.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
19
19
  utils_devops/extras/performance_ops.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  utils_devops/extras/ssh_ops.py,sha256=hTOYzyWmnZWzOLeZbCoZRLxSJiBmr0QgS_87qks-CYk,76305
21
21
  utils_devops/extras/vault_ops.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- utils_devops-0.1.167.dist-info/METADATA,sha256=wDLqYUzvaS-2ZxOyvkSJEkokdUTawXNDxM2ytS2h1-s,1903
23
- utils_devops-0.1.167.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
24
- utils_devops-0.1.167.dist-info/entry_points.txt,sha256=ei3B6ZL5yu6dOq-U1r8wsBdkXeg63RAyV7m8_ADaE6k,53
25
- utils_devops-0.1.167.dist-info/RECORD,,
22
+ utils_devops-0.1.169.dist-info/METADATA,sha256=PxPjbHemG288yCIUoL5-mLtR3pveXzroUtymUMamosA,1903
23
+ utils_devops-0.1.169.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
24
+ utils_devops-0.1.169.dist-info/entry_points.txt,sha256=ei3B6ZL5yu6dOq-U1r8wsBdkXeg63RAyV7m8_ADaE6k,53
25
+ utils_devops-0.1.169.dist-info/RECORD,,