domino-py-iisas 1.0.9__tar.gz → 1.0.11__tar.gz

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.
Files changed (77) hide show
  1. {domino_py_iisas-1.0.9/src/domino_py_iisas.egg-info → domino_py_iisas-1.0.11}/PKG-INFO +1 -1
  2. domino_py_iisas-1.0.11/src/domino/VERSION +1 -0
  3. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/cli/utils/platform.py +74 -95
  4. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11/src/domino_py_iisas.egg-info}/PKG-INFO +1 -1
  5. domino_py_iisas-1.0.9/src/domino/VERSION +0 -1
  6. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/LICENSE +0 -0
  7. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/README.md +0 -0
  8. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/pyproject.toml +0 -0
  9. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/setup.cfg +0 -0
  10. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/__init__.py +0 -0
  11. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/actions/github_actions.py +0 -0
  12. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/base_piece.py +0 -0
  13. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/cli/__init__.py +0 -0
  14. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/cli/cli.py +0 -0
  15. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/cli/tests/test_create_piece.py +0 -0
  16. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/cli/utils/__init__.py +0 -0
  17. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/cli/utils/config-domino-local.toml +0 -0
  18. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/cli/utils/constants.py +0 -0
  19. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/cli/utils/docker-compose.yaml +0 -0
  20. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/cli/utils/pieces_repository.py +0 -0
  21. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/cli/utils/templates.py +0 -0
  22. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/client/__init__.py +0 -0
  23. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/client/domino_backend_client.py +0 -0
  24. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/client/github_rest_client.py +0 -0
  25. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/client/legacy/fs_client.py +0 -0
  26. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/client/legacy/s3_client.py +0 -0
  27. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/client/local_files_client.py +0 -0
  28. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/__init__.py +0 -0
  29. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/deprecated/base_operator.py +0 -0
  30. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/deprecated/external_python_operator.py +0 -0
  31. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/docker_operator.py +0 -0
  32. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/k8s_operator.py +0 -0
  33. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/python_operator.py +0 -0
  34. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/sidecar/__init__.py +0 -0
  35. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/sidecar/fuse.conf +0 -0
  36. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/sidecar/logger.py +0 -0
  37. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/sidecar/mount.py +0 -0
  38. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/sidecar/rclone.conf +0 -0
  39. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/sidecar/sidecar_lifecycle.sh +0 -0
  40. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/custom_operators/worker_operator.py +0 -0
  41. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/exceptions/__init__.py +0 -0
  42. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/exceptions/exceptions.py +0 -0
  43. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/logger.py +0 -0
  44. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/models/__init__.py +0 -0
  45. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/models/output_modifier.py +0 -0
  46. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/schemas/__init__.py +0 -0
  47. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/schemas/container_resources.py +0 -0
  48. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/schemas/deploy_mode.py +0 -0
  49. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/schemas/display_result.py +0 -0
  50. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/schemas/piece_metadata.py +0 -0
  51. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/schemas/shared_storage.py +0 -0
  52. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/scripts/__init__.py +0 -0
  53. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/scripts/build_docker_images_pieces.py +0 -0
  54. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/scripts/deprecated/create_docker_compose_file.py +0 -0
  55. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/scripts/deprecated/deprecated_piece_dry_run.py +0 -0
  56. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/scripts/deprecated/docker_compose_constants.py +0 -0
  57. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/scripts/deprecated/docker_compose_scripts.py +0 -0
  58. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/scripts/deprecated/run_piece_bash.py +0 -0
  59. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/scripts/load_piece.py +0 -0
  60. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/scripts/run_piece_docker.py +0 -0
  61. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/storage/__init__.py +0 -0
  62. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/storage/s3.py +0 -0
  63. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/task.py +0 -0
  64. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/testing/__init__.py +0 -0
  65. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/testing/dry_run.py +0 -0
  66. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/testing/http_client.py +0 -0
  67. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/testing/http_server.py +0 -0
  68. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/testing/utils.py +0 -0
  69. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/utils/__init__.py +0 -0
  70. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/utils/metadata_default.py +0 -0
  71. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/utils/piece_generator.py +0 -0
  72. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino/utils/workflow_shared_storage.py +0 -0
  73. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino_py_iisas.egg-info/SOURCES.txt +0 -0
  74. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino_py_iisas.egg-info/dependency_links.txt +0 -0
  75. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino_py_iisas.egg-info/entry_points.txt +0 -0
  76. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino_py_iisas.egg-info/requires.txt +0 -0
  77. {domino_py_iisas-1.0.9 → domino_py_iisas-1.0.11}/src/domino_py_iisas.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: domino-py-iisas
3
- Version: 1.0.9
3
+ Version: 1.0.11
4
4
  Summary: Fork of the original Python package for Domino.
5
5
  Author-email: Stefan Dlugolinsky <stefan.dlugolinsky@savba.sk>, Luiz Tauffer <luiz@taufferconsulting.com>, Vinicius Vaz <vinicius@taufferconsulting.com>
6
6
  License:
@@ -0,0 +1 @@
1
+ 1.0.11
@@ -9,7 +9,7 @@ import requests
9
9
  import time
10
10
  from concurrent.futures import ThreadPoolExecutor
11
11
  import base64
12
- import sys
12
+ import secrets
13
13
  from pathlib import Path
14
14
  from rich.console import Console
15
15
  from yaml.resolver import BaseResolver
@@ -429,6 +429,7 @@ def create_platform(install_airflow: bool = True, use_gpu: bool = False) -> None
429
429
  "data": {
430
430
  "metadataSecretName": 'airflow-metadata-secret'
431
431
  },
432
+ "webserverSecretKey": secrets.token_hex(16),
432
433
  **workers,
433
434
  **scheduler,
434
435
  }
@@ -444,112 +445,90 @@ def create_platform(install_airflow: bool = True, use_gpu: bool = False) -> None
444
445
 
445
446
  # External database for the Airflow metastore (due to [changes](https://github.com/bitnami/containers/issues/83267) related to bitnami images since [v1.12.0](https://airflow.apache.org/docs/helm-chart/1.12.0/release_notes.html#the-helm-chart-is-now-using-a-newer-version-of-bitnami-postgresql-dependency-34817))
446
447
  if not airflow_values_override_config['postgresql']['enabled']:
447
- console.print('Installing external database for the Apache Airflow metastore...')
448
+ console.print('Using external database for the Apache Airflow metastore.')
448
449
 
449
450
  # create secret for the Airflow metastore
450
- airflow_db_host = platform_config['airflow_db'].get('AIRFLOW_DB_HOST', 'airflow-postgres')
451
+ airflow_db_host = platform_config['airflow_db'].get('AIRFLOW_DB_HOST', 'airflow-postgres-rw')
451
452
  airflow_db_port = platform_config['airflow_db'].get('AIRFLOW_DB_PORT', 5432)
452
453
  airflow_db_user = platform_config['airflow_db'].get('AIRFLOW_DB_USER', 'airflow')
453
454
  airflow_db_password = platform_config['airflow_db'].get('AIRFLOW_DB_PASSWORD', 'airflow')
454
455
  airflow_db_name = platform_config['airflow_db'].get('AIRFLOW_DB_NAME', 'postgres')
455
- result = subprocess.run(["kubectl", "create", "secret", "generic",
456
- f"{airflow_values_override_config['data']['metadataSecretName']}",
457
- f"--from-literal=connection=postgresql://{airflow_db_user}:{airflow_db_password}@{airflow_db_host}:{airflow_db_port}/{airflow_db_name}"])
458
- if result.returncode != 0:
459
- error_message = result.stderr.strip() if result.stderr else result.stdout.strip()
460
-
461
- # deploy Airflow metastore database
462
- airflow_db_image = platform_config['airflow_db'].get('AIRFLOW_DB_IMAGE',
463
- 'ghcr.io/cloudnative-pg/postgresql')
464
- airflow_db_image_tag = platform_config['airflow_db'].get('AIRFLOW_DB_IMAGE_TAG', '13')
465
- cnpg_operator_add_repo_command = [
466
- "helm", "repo", "add", "cnpg", "https://cloudnative-pg.github.io/charts"
467
- ]
468
- console.print("Adding CloudNativePG repository...")
469
- subprocess.run(cnpg_operator_add_repo_command)
470
- helm_update_command = ["helm", "repo", "update", "cnpg"]
471
- console.print("Updating helm repositories...")
472
- subprocess.run(helm_update_command)
473
- cnpg_operator_install_command = [
474
- "helm", "install", "cnpg",
475
- "--namespace", "cnpg-system",
476
- "--create-namespace",
477
- "--set", "config.clusterWide=false",
478
- "cnpg/cloudnative-pg",
479
- "--hide-notes"
480
- ]
481
- console.print("Installing CloudNativePG operator...")
482
- subprocess.run(cnpg_operator_install_command)
483
-
484
- airflow_db_manifest = [
485
- {
486
- "apiVersion": "postgresql.cnpg.io/v1",
487
- "kind": "Cluster",
488
- "metadata": {
489
- "name": "airflow-postgres",
490
- "namespace": "default"
491
- },
492
- "spec": {
493
- "instances": 1,
494
- "imageName": f"{airflow_db_image}:{airflow_db_image_tag}",
495
- "storage": {
496
- "size": "1Gi"
456
+
457
+ if not platform_config['airflow_db'].get('AIRFLOW_DB_HOST', False):
458
+ console.print('Installing external database for the Apache Airflow metastore...')
459
+ result = subprocess.run(
460
+ [
461
+ "kubectl",
462
+ "create",
463
+ "secret",
464
+ "generic",
465
+ f"{airflow_values_override_config['data']['metadataSecretName']}",
466
+ f"--from-literal=connection=postgresql://{airflow_db_user}:{airflow_db_password}@{airflow_db_host}:{airflow_db_port}/{airflow_db_name}",
467
+ f"--from-literal=username={airflow_db_user}",
468
+ f"--from-literal=password={airflow_db_password}",
469
+ ]
470
+ )
471
+ if result.returncode != 0:
472
+ error_message = result.stderr.strip() if result.stderr else result.stdout.strip()
473
+
474
+ console.print("Adding CloudNativePG repository...")
475
+ subprocess.run(["helm", "repo", "add", "cnpg", "https://cloudnative-pg.github.io/charts"])
476
+
477
+ console.print("Updating helm repositories...")
478
+ subprocess.run(["helm", "repo", "update", "cnpg"])
479
+
480
+ console.print("Installing CloudNativePG operator...")
481
+ subprocess.run(["helm", "install", "cnpg", "--namespace", "default", "--set", "config.clusterWide=false", "cnpg/cloudnative-pg", "--hide-notes"])
482
+
483
+ console.print("Waiting fot the CloudNativePG operator to be ready...")
484
+ subprocess.run(["kubectl", "wait", "--namespace", "default", "--for", "condition=Available", "deployment/cnpg-cloudnative-pg", "--timeout=60s"])
485
+
486
+ # deploy Airflow metastore database
487
+ airflow_db_image = platform_config['airflow_db'].get('AIRFLOW_DB_IMAGE', 'ghcr.io/cloudnative-pg/postgresql')
488
+ airflow_db_image_tag = platform_config['airflow_db'].get('AIRFLOW_DB_IMAGE_TAG', '13')
489
+ airflow_db_manifest = [
490
+ {
491
+ "apiVersion": "postgresql.cnpg.io/v1",
492
+ "kind": "Cluster",
493
+ "metadata": {
494
+ "name": "airflow-postgres",
495
+ "namespace": "default"
497
496
  },
498
- "bootstrap": {
499
- "initdb": {
500
- "database": f"{airflow_db_name}",
501
- "owner": f"{airflow_db_user}",
502
- "secret": {
503
- "name": f"{airflow_values_override_config['data']['metadataSecretName']}"
497
+ "spec": {
498
+ "instances": 1,
499
+ "imageName": f"{airflow_db_image}:{airflow_db_image_tag}",
500
+ "storage": {
501
+ "size": "1Gi"
502
+ },
503
+ "bootstrap": {
504
+ "initdb": {
505
+ "database": f"{airflow_db_name}",
506
+ "owner": f"{airflow_db_user}",
507
+ "secret": {
508
+ "name": f"{airflow_values_override_config['data']['metadataSecretName']}"
509
+ },
510
+ "encoding": "UTF-8"
504
511
  }
505
512
  }
506
513
  }
507
514
  }
508
- },
509
- {
510
- "apiVersion": "v1",
511
- "kind": "Service",
512
- "metadata": {
513
- "name": "airflow-postgres-service",
514
- "namespace": "default"
515
- },
516
- "spec": {
517
- "type": "ClusterIP",
518
- "selector": {
519
- "app": "airflow-postgres"
520
- },
521
- "ports": [
522
- {
523
- "protocol": "TCP",
524
- "port": 5432,
525
- "targetPort": 5432
526
- }
527
- ]
528
- }
529
- }
530
- ]
531
-
532
- with NamedTemporaryFile(suffix='.yaml', mode="w", delete_on_close=False) as fp:
533
- # Dump as separate YAML documents
534
- yaml_output = "\n---\n".join(
535
- yaml.safe_dump(doc, sort_keys=False) for doc in airflow_db_manifest
536
- )
537
- fp.write(yaml_output)
538
- fp.close()
539
- commands = [
540
- "kubectl", "apply", "-f", str(fp.name), "--validate=false"
541
- ]
542
- subprocess.run(commands, stdout=subprocess.DEVNULL)
543
- commands = [
544
- "kubectl", "wait", "--namespace", "default", "--for", "condition=Ready", "cluster/airflow-postgres", "--timeout=60s"
545
515
  ]
546
- result = subprocess.run(commands)
547
- if result.returncode != 0:
548
- error_message = result.stderr.strip() if result.stderr else result.stdout.strip() if result.stdout else 'no details given'
549
- raise Exception(f"An error occurred while installing database for Apache Airflow metastore: {error_message}")
550
-
551
- console.print("database for the Apache Airflow metastore installed successfully!", style=f"bold {COLOR_PALETTE.get('success')}")
552
- console.print("")
516
+
517
+ with NamedTemporaryFile(suffix='.yaml', mode="w", delete_on_close=False) as fp:
518
+ # Dump as separate YAML documents
519
+ yaml_output = "\n---\n".join(
520
+ yaml.safe_dump(doc, sort_keys=False) for doc in airflow_db_manifest
521
+ )
522
+ fp.write(yaml_output)
523
+ fp.close()
524
+ subprocess.run(["kubectl", "apply", "-f", str(fp.name)], stdout=subprocess.DEVNULL)
525
+ result = subprocess.run(["kubectl", "wait", "--namespace", "default", "--for", "condition=Ready", "cluster/airflow-postgres", "--timeout=60s"])
526
+ if result.returncode != 0:
527
+ error_message = result.stderr.strip() if result.stderr else result.stdout.strip() if result.stdout else 'no details given'
528
+ raise Exception(f"An error occurred while installing database for Apache Airflow metastore: {error_message}")
529
+
530
+ console.print("database for the Apache Airflow metastore installed successfully!", style=f"bold {COLOR_PALETTE.get('success')}")
531
+ console.print("")
553
532
 
554
533
  # Create temporary file with airflow values
555
534
  with NamedTemporaryFile(suffix='.yaml', mode="w") as fp:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: domino-py-iisas
3
- Version: 1.0.9
3
+ Version: 1.0.11
4
4
  Summary: Fork of the original Python package for Domino.
5
5
  Author-email: Stefan Dlugolinsky <stefan.dlugolinsky@savba.sk>, Luiz Tauffer <luiz@taufferconsulting.com>, Vinicius Vaz <vinicius@taufferconsulting.com>
6
6
  License:
@@ -1 +0,0 @@
1
- 1.0.9