paasta-tools 1.2.0__tar.gz → 1.4.1__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.
- {paasta-tools-1.2.0/paasta_tools.egg-info → paasta-tools-1.4.1}/PKG-INFO +1 -1
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/__init__.py +1 -1
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/generate_authenticating_services.py +3 -1
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes_tools.py +40 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/spark_tools.py +21 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/tron_tools.py +69 -7
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/utils.py +12 -4
- {paasta-tools-1.2.0 → paasta-tools-1.4.1/paasta_tools.egg-info}/PKG-INFO +1 -1
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools.egg-info/requires.txt +1 -1
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/requirements-minimal.txt +1 -3
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/MANIFEST.in +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/README.md +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/k8s_itests/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/k8s_itests/test_autoscaling.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/k8s_itests/utils.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/adhoc_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/api.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/api_docs/swagger.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/client.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/settings.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/tweens/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/tweens/profiling.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/tweens/request_logger.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/autoscaler.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/exception.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/flink.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/instance.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/pause_autoscaler.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/resources.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/service.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/version.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/apply_external_resources.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/async_utils.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/forecasting.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/utils.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/bounce_lib.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/broadcast_log_to_services.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cassandracluster_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_autoscaler_max_instances.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_flink_services_health.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_kubernetes_api.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_kubernetes_services_replication.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_oom_events.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_services_replication_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_spark_jobs.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cleanup_tron_namespaces.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cli.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/autoscale.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/check.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/cook_image.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/get_image_version.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/info.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/itest.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/list.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/list_clusters.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/local_run.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/logs.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/mesh_status.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/remote_run.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/rollback.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/secret.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/security_check.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/spark_run.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/status.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/validate.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/autosuggest.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/README.md +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm_cmd.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/eks_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/service_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/tron_schema.json +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/utils.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/clusterman.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/config_utils.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/check_orphans.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/create_paasta_playground.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/habitat_fixer.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/ide_helper.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/kill_bad_containers.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/mock_patch_checker.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/render_template.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/service_shard_remove.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/service_shard_update.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/shared_ip_check.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/delete_kubernetes_deployments.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/deployment_utils.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/docker_wrapper.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/docker_wrapper_imports.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/drain_lib.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/dump_locally_running_services.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/eks_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/envoy_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/firewall.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/firewall_logging.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/firewall_update.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/flink_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/flinkeks_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/constraints.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/native_scheduler.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/native_service_config.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/task_store.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/generate_all_deployments +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/generate_deployments_for_service.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/generate_services_file.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/generate_services_yaml.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/hacheck.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/instance/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/instance/kubernetes.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/iptables.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kafkacluster_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/application/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/application/tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/bin/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/list_kubernetes_service_instances.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/list_tron_namespaces.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/log_task_lifecycle_events.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/long_running_service_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mac_address.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/marathon_dashboard.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/cfg.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/cluster.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/exceptions.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/framework.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/log.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/master.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/mesos_file.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/parallel.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/slave.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/task.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/util.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/zookeeper.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos_maintenance.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/metrics/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/metrics/metastatus_lib.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/metrics/metrics_lib.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/monitoring/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/monitoring/kill_orphaned_docker_containers.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/monitoring_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/monkrelaycluster_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/nrtsearchservice_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/oom_logger.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paasta_deploy_tron_jobs +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paasta_execute_docker_command.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paasta_native_serviceinit.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paasta_remote_run.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paasta_service_config_loader.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api/default_api.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api/resources_api.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api/service_api.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api_client.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/apis/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/configuration.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/exceptions.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/flink_config.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/flink_job.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/inline_object.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/resource.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/resource_item.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/resource_value.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model_utils.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/models/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/rest.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/prune_completed_pods.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/puppet_service_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/py.typed +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/remote_git.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/run-paasta-api-playground.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/secret_providers/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/secret_providers/vault.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/secret_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_istio_mesh.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_kubernetes_cr.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_kubernetes_crd.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_kubernetes_job.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_tron_namespace.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/slack.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/smartstack_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/tron/__init__.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/tron/client.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/tron/tron_command_context.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/tron/tron_timeutils.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/vitesscluster_tools.py +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools.egg-info/SOURCES.txt +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools.egg-info/dependency_links.txt +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools.egg-info/entry_points.txt +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools.egg-info/top_level.txt +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/pyproject.toml +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/setup.cfg +0 -0
- {paasta-tools-1.2.0 → paasta-tools-1.4.1}/setup.py +0 -0
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
"""
|
|
16
|
-
A simple script to enumerate all services
|
|
16
|
+
A simple script to enumerate all services participating in authenticated
|
|
17
17
|
communications, and list them in a YAML/JSON file.
|
|
18
18
|
"""
|
|
19
19
|
import argparse
|
|
@@ -27,6 +27,7 @@ from typing import Set
|
|
|
27
27
|
import yaml
|
|
28
28
|
|
|
29
29
|
from paasta_tools.utils import DEFAULT_SOA_DIR
|
|
30
|
+
from paasta_tools.utils import load_system_paasta_config
|
|
30
31
|
from paasta_tools.utils import write_json_configuration_file
|
|
31
32
|
from paasta_tools.utils import write_yaml_configuration_file
|
|
32
33
|
|
|
@@ -53,6 +54,7 @@ def enumerate_authenticating_services() -> Dict[str, List[str]]:
|
|
|
53
54
|
config_path_pattern = os.path.join(DEFAULT_SOA_DIR, "*", AUTHORIZATION_CONFIG_FILE)
|
|
54
55
|
for authz_config in glob.glob(config_path_pattern):
|
|
55
56
|
result.update(list_services_in_authz_config(authz_config))
|
|
57
|
+
result.update(load_system_paasta_config().get_always_authenticating_services())
|
|
56
58
|
return {"services": sorted(result)}
|
|
57
59
|
|
|
58
60
|
|
|
@@ -21,6 +21,7 @@ import os
|
|
|
21
21
|
import re
|
|
22
22
|
from datetime import datetime
|
|
23
23
|
from enum import Enum
|
|
24
|
+
from functools import lru_cache
|
|
24
25
|
from inspect import currentframe
|
|
25
26
|
from pathlib import Path
|
|
26
27
|
from typing import Any
|
|
@@ -2552,6 +2553,13 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
2552
2553
|
"topology_spread_constraints", default_pod_topology_spread_constraints
|
|
2553
2554
|
)
|
|
2554
2555
|
|
|
2556
|
+
def get_projected_sa_volumes(self) -> List[ProjectedSAVolume]:
|
|
2557
|
+
return add_volumes_for_authenticating_services(
|
|
2558
|
+
service_name=self.service,
|
|
2559
|
+
config_volumes=super().get_projected_sa_volumes(),
|
|
2560
|
+
soa_dir=self.soa_dir,
|
|
2561
|
+
)
|
|
2562
|
+
|
|
2555
2563
|
|
|
2556
2564
|
def get_kubernetes_secret_hashes(
|
|
2557
2565
|
environment_variables: Mapping[str, str], service: str, namespace: str
|
|
@@ -4406,3 +4414,35 @@ def get_kubernetes_secret_volumes(
|
|
|
4406
4414
|
] = secret_contents
|
|
4407
4415
|
|
|
4408
4416
|
return secret_volumes
|
|
4417
|
+
|
|
4418
|
+
|
|
4419
|
+
@lru_cache()
|
|
4420
|
+
def get_authenticating_services(soa_dir: str = DEFAULT_SOA_DIR) -> Set[str]:
|
|
4421
|
+
"""Load list of services participating in authenticated traffic"""
|
|
4422
|
+
authenticating_services_conf_path = os.path.join(soa_dir, "authenticating.yaml")
|
|
4423
|
+
config = service_configuration_lib.read_yaml_file(authenticating_services_conf_path)
|
|
4424
|
+
return set(config.get("services", []))
|
|
4425
|
+
|
|
4426
|
+
|
|
4427
|
+
def add_volumes_for_authenticating_services(
|
|
4428
|
+
service_name: str,
|
|
4429
|
+
config_volumes: List[ProjectedSAVolume],
|
|
4430
|
+
soa_dir: str = DEFAULT_SOA_DIR,
|
|
4431
|
+
) -> List[ProjectedSAVolume]:
|
|
4432
|
+
"""Add projected service account volume to the list of volumes if service
|
|
4433
|
+
participates in authenticated traffic. In case of changes, a new list is returned,
|
|
4434
|
+
no updates in-place.
|
|
4435
|
+
|
|
4436
|
+
:param str service_name: name of the service
|
|
4437
|
+
:param List[ProjectedSAVolume] config_volumes: existing projected volumes from service config
|
|
4438
|
+
:param str soa_dir: path to SOA configurations directory
|
|
4439
|
+
:return: updated list of projected service account volumes
|
|
4440
|
+
"""
|
|
4441
|
+
token_config = load_system_paasta_config().get_service_auth_token_volume_config()
|
|
4442
|
+
if (
|
|
4443
|
+
token_config
|
|
4444
|
+
and service_name in get_authenticating_services(soa_dir)
|
|
4445
|
+
and not any(volume == token_config for volume in config_volumes)
|
|
4446
|
+
):
|
|
4447
|
+
config_volumes = [token_config, *config_volumes]
|
|
4448
|
+
return config_volumes
|
|
@@ -6,6 +6,7 @@ from typing import Any
|
|
|
6
6
|
from typing import cast
|
|
7
7
|
from typing import Dict
|
|
8
8
|
from typing import List
|
|
9
|
+
from typing import Literal
|
|
9
10
|
from typing import Mapping
|
|
10
11
|
from typing import Set
|
|
11
12
|
|
|
@@ -23,6 +24,7 @@ SPARK_DRIVER_POOL = "stable"
|
|
|
23
24
|
SPARK_JOB_USER = "TRON"
|
|
24
25
|
SPARK_PROMETHEUS_SHARD = "ml-compute"
|
|
25
26
|
SPARK_DNS_POD_TEMPLATE = "/nail/srv/configs/spark_dns_pod_template.yaml"
|
|
27
|
+
MEM_MULTIPLIER = {"k": 1024, "m": 1024**2, "g": 1024**3, "t": 1024**4}
|
|
26
28
|
|
|
27
29
|
log = logging.getLogger(__name__)
|
|
28
30
|
|
|
@@ -247,3 +249,22 @@ def get_spark_driver_monitoring_labels(
|
|
|
247
249
|
"spark.yelp.com/driver_ui_port": ui_port_str,
|
|
248
250
|
}
|
|
249
251
|
return labels
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
def get_spark_memory_in_unit(mem: str, unit: Literal["k", "m", "g", "t"]) -> float:
|
|
255
|
+
"""
|
|
256
|
+
Converts Spark memory to the desired unit.
|
|
257
|
+
mem is the same format as JVM memory strings: just number or number followed by 'k', 'm', 'g' or 't'.
|
|
258
|
+
unit can be 'k', 'm', 'g' or 't'.
|
|
259
|
+
Returns memory as a float converted to the desired unit.
|
|
260
|
+
"""
|
|
261
|
+
try:
|
|
262
|
+
memory_bytes = float(mem)
|
|
263
|
+
except ValueError:
|
|
264
|
+
try:
|
|
265
|
+
memory_bytes = float(mem[:-1]) * MEM_MULTIPLIER[mem[-1]]
|
|
266
|
+
except (ValueError, IndexError):
|
|
267
|
+
print(f"Unable to parse memory value {mem}. Defaulting to 2 GB.")
|
|
268
|
+
memory_bytes = 2147483648 # default to 2 GB
|
|
269
|
+
memory_unit = memory_bytes / MEM_MULTIPLIER[unit]
|
|
270
|
+
return memory_unit
|
|
@@ -56,6 +56,7 @@ from paasta_tools.utils import get_k8s_url_for_cluster
|
|
|
56
56
|
from paasta_tools.utils import validate_pool
|
|
57
57
|
from paasta_tools.utils import PoolsNotConfiguredError
|
|
58
58
|
from paasta_tools.utils import DockerVolume
|
|
59
|
+
from paasta_tools.utils import ProjectedSAVolume
|
|
59
60
|
|
|
60
61
|
from paasta_tools import spark_tools
|
|
61
62
|
|
|
@@ -71,6 +72,7 @@ from paasta_tools.secret_tools import is_shared_secret
|
|
|
71
72
|
from paasta_tools.secret_tools import is_shared_secret_from_secret_name
|
|
72
73
|
from paasta_tools.secret_tools import get_secret_name_from_ref
|
|
73
74
|
from paasta_tools.kubernetes_tools import get_paasta_secret_name
|
|
75
|
+
from paasta_tools.kubernetes_tools import add_volumes_for_authenticating_services
|
|
74
76
|
from paasta_tools.secret_tools import SHARED_SECRET_SERVICE
|
|
75
77
|
|
|
76
78
|
from paasta_tools import monitoring_tools
|
|
@@ -280,6 +282,35 @@ class TronActionConfig(InstanceConfig):
|
|
|
280
282
|
self.job, self.action = decompose_instance(instance)
|
|
281
283
|
# Indicate whether this config object is created for validation
|
|
282
284
|
self.for_validation = for_validation
|
|
285
|
+
self.action_spark_config = None
|
|
286
|
+
if self.get_executor() == "spark":
|
|
287
|
+
# build the complete Spark configuration
|
|
288
|
+
# TODO: add conditional check for Spark specific commands spark-submit, pyspark etc ?
|
|
289
|
+
self.action_spark_config = self.build_spark_config()
|
|
290
|
+
|
|
291
|
+
def get_cpus(self) -> float:
|
|
292
|
+
# set Spark driver pod CPU if it is specified by Spark arguments
|
|
293
|
+
if (
|
|
294
|
+
self.action_spark_config
|
|
295
|
+
and "spark.driver.cores" in self.action_spark_config
|
|
296
|
+
):
|
|
297
|
+
return float(self.action_spark_config["spark.driver.cores"])
|
|
298
|
+
# we fall back to this default if there's no spark.driver.cores config
|
|
299
|
+
return super().get_cpus()
|
|
300
|
+
|
|
301
|
+
def get_mem(self) -> float:
|
|
302
|
+
# set Spark driver pod memory if it is specified by Spark arguments
|
|
303
|
+
if (
|
|
304
|
+
self.action_spark_config
|
|
305
|
+
and "spark.driver.memory" in self.action_spark_config
|
|
306
|
+
):
|
|
307
|
+
return int(
|
|
308
|
+
spark_tools.get_spark_memory_in_unit(
|
|
309
|
+
self.action_spark_config["spark.driver.memory"], "m"
|
|
310
|
+
)
|
|
311
|
+
)
|
|
312
|
+
# we fall back to this default if there's no spark.driver.memory config
|
|
313
|
+
return super().get_mem()
|
|
283
314
|
|
|
284
315
|
def build_spark_config(self) -> Dict[str, str]:
|
|
285
316
|
system_paasta_config = load_system_paasta_config()
|
|
@@ -438,7 +469,6 @@ class TronActionConfig(InstanceConfig):
|
|
|
438
469
|
system_paasta_config: Optional["SystemPaastaConfig"] = None,
|
|
439
470
|
) -> Dict[str, str]:
|
|
440
471
|
env = super().get_env(system_paasta_config=system_paasta_config)
|
|
441
|
-
|
|
442
472
|
if self.get_executor() == "spark":
|
|
443
473
|
# Required by some sdks like boto3 client. Throws NoRegionError otherwise.
|
|
444
474
|
# AWS_REGION takes precedence if set.
|
|
@@ -603,6 +633,20 @@ class TronActionConfig(InstanceConfig):
|
|
|
603
633
|
error_msgs.append(
|
|
604
634
|
f"{self.get_job_name()}.{self.get_action_name()} must have a deploy_group set"
|
|
605
635
|
)
|
|
636
|
+
# We are not allowing users to specify `cpus` and `mem` configuration if the action is a Spark job
|
|
637
|
+
# with driver running on k8s (executor: spark), because we derive these values from `spark.driver.cores`
|
|
638
|
+
# and `spark.driver.memory` in order to avoid confusion.
|
|
639
|
+
if self.get_executor() == "spark":
|
|
640
|
+
if "cpus" in self.config_dict:
|
|
641
|
+
error_msgs.append(
|
|
642
|
+
f"{self.get_job_name()}.{self.get_action_name()} is a Spark job. `cpus` config is not allowed. "
|
|
643
|
+
f"Please specify the driver cores using `spark.driver.cores`."
|
|
644
|
+
)
|
|
645
|
+
if "mem" in self.config_dict:
|
|
646
|
+
error_msgs.append(
|
|
647
|
+
f"{self.get_job_name()}.{self.get_action_name()} is a Spark job. `mem` config is not allowed. "
|
|
648
|
+
f"Please specify the driver memory using `spark.driver.memory`."
|
|
649
|
+
)
|
|
606
650
|
return error_msgs
|
|
607
651
|
|
|
608
652
|
def get_pool(self) -> str:
|
|
@@ -627,6 +671,14 @@ class TronActionConfig(InstanceConfig):
|
|
|
627
671
|
def get_service_account_name(self) -> Optional[str]:
|
|
628
672
|
return self.config_dict.get("service_account_name")
|
|
629
673
|
|
|
674
|
+
def get_projected_sa_volumes(self) -> Optional[List[ProjectedSAVolume]]:
|
|
675
|
+
projected_volumes = add_volumes_for_authenticating_services(
|
|
676
|
+
service_name=self.service,
|
|
677
|
+
config_volumes=super().get_projected_sa_volumes(),
|
|
678
|
+
soa_dir=self.soa_dir,
|
|
679
|
+
)
|
|
680
|
+
return projected_volumes if projected_volumes else None
|
|
681
|
+
|
|
630
682
|
|
|
631
683
|
class TronJobConfig:
|
|
632
684
|
"""Represents a job in Tron, consisting of action(s) and job-level configuration values."""
|
|
@@ -958,25 +1010,33 @@ def format_tron_action_dict(action_config: TronActionConfig):
|
|
|
958
1010
|
dry_run=action_config.for_validation,
|
|
959
1011
|
)
|
|
960
1012
|
|
|
1013
|
+
# service account token volumes for service authentication
|
|
1014
|
+
result["projected_sa_volumes"] = action_config.get_projected_sa_volumes()
|
|
1015
|
+
|
|
961
1016
|
extra_volumes = action_config.get_extra_volumes()
|
|
962
1017
|
if executor == "spark":
|
|
963
1018
|
is_mrjob = action_config.config_dict.get("mrjob", False)
|
|
964
1019
|
system_paasta_config = load_system_paasta_config()
|
|
965
|
-
# inject
|
|
966
|
-
spark_config = action_config.build_spark_config()
|
|
1020
|
+
# inject additional Spark configs in case of Spark commands
|
|
967
1021
|
result["command"] = spark_tools.build_spark_command(
|
|
968
1022
|
result["command"],
|
|
969
|
-
|
|
1023
|
+
action_config.action_spark_config,
|
|
970
1024
|
is_mrjob,
|
|
971
1025
|
action_config.config_dict.get(
|
|
972
1026
|
"max_runtime", spark_tools.DEFAULT_SPARK_RUNTIME_TIMEOUT
|
|
973
1027
|
),
|
|
974
1028
|
)
|
|
1029
|
+
# point to the KUBECONFIG needed by Spark driver
|
|
975
1030
|
result["env"]["KUBECONFIG"] = system_paasta_config.get_spark_kubeconfig()
|
|
1031
|
+
|
|
976
1032
|
# spark, unlike normal batches, needs to expose several ports for things like the spark
|
|
977
1033
|
# ui and for executor->driver communication
|
|
978
1034
|
result["ports"] = list(
|
|
979
|
-
set(
|
|
1035
|
+
set(
|
|
1036
|
+
spark_tools.get_spark_ports_from_config(
|
|
1037
|
+
action_config.action_spark_config
|
|
1038
|
+
)
|
|
1039
|
+
)
|
|
980
1040
|
)
|
|
981
1041
|
# mount KUBECONFIG file for Spark drivers to communicate with EKS cluster
|
|
982
1042
|
extra_volumes.append(
|
|
@@ -990,10 +1050,12 @@ def format_tron_action_dict(action_config: TronActionConfig):
|
|
|
990
1050
|
)
|
|
991
1051
|
# Add pod annotations and labels for Spark monitoring metrics
|
|
992
1052
|
monitoring_annotations = (
|
|
993
|
-
spark_tools.get_spark_driver_monitoring_annotations(
|
|
1053
|
+
spark_tools.get_spark_driver_monitoring_annotations(
|
|
1054
|
+
action_config.action_spark_config
|
|
1055
|
+
)
|
|
994
1056
|
)
|
|
995
1057
|
monitoring_labels = spark_tools.get_spark_driver_monitoring_labels(
|
|
996
|
-
|
|
1058
|
+
action_config.action_spark_config
|
|
997
1059
|
)
|
|
998
1060
|
result["annotations"].update(monitoring_annotations)
|
|
999
1061
|
result["labels"].update(monitoring_labels)
|
|
@@ -75,7 +75,7 @@ import ldap3
|
|
|
75
75
|
import requests_cache
|
|
76
76
|
import service_configuration_lib
|
|
77
77
|
import yaml
|
|
78
|
-
from docker import
|
|
78
|
+
from docker import APIClient
|
|
79
79
|
from docker.utils import kwargs_from_env
|
|
80
80
|
from kazoo.client import KazooClient
|
|
81
81
|
from mypy_extensions import TypedDict
|
|
@@ -2020,6 +2020,8 @@ class SystemPaastaConfigDict(TypedDict, total=False):
|
|
|
2020
2020
|
eks_cluster_aliases: Dict[str, str]
|
|
2021
2021
|
secret_sync_delay_seconds: float
|
|
2022
2022
|
use_multiple_log_readers: Optional[List[str]]
|
|
2023
|
+
service_auth_token_settings: ProjectedSAVolume
|
|
2024
|
+
always_authenticating_services: List[str]
|
|
2023
2025
|
|
|
2024
2026
|
|
|
2025
2027
|
def load_system_paasta_config(
|
|
@@ -2725,6 +2727,12 @@ class SystemPaastaConfig:
|
|
|
2725
2727
|
def get_kube_clusters(self) -> Dict:
|
|
2726
2728
|
return self.config_dict.get("kube_clusters", {})
|
|
2727
2729
|
|
|
2730
|
+
def get_service_auth_token_volume_config(self) -> ProjectedSAVolume:
|
|
2731
|
+
return self.config_dict.get("service_auth_token_settings", {})
|
|
2732
|
+
|
|
2733
|
+
def get_always_authenticating_services(self) -> List[str]:
|
|
2734
|
+
return self.config_dict.get("always_authenticating_services", [])
|
|
2735
|
+
|
|
2728
2736
|
|
|
2729
2737
|
def _run(
|
|
2730
2738
|
command: Union[str, List[str]],
|
|
@@ -3337,12 +3345,12 @@ def get_docker_host() -> str:
|
|
|
3337
3345
|
return os.environ.get("DOCKER_HOST", "unix://var/run/docker.sock")
|
|
3338
3346
|
|
|
3339
3347
|
|
|
3340
|
-
def get_docker_client() ->
|
|
3348
|
+
def get_docker_client() -> APIClient:
|
|
3341
3349
|
client_opts = kwargs_from_env(assert_hostname=False)
|
|
3342
3350
|
if "base_url" in client_opts:
|
|
3343
|
-
return
|
|
3351
|
+
return APIClient(**client_opts)
|
|
3344
3352
|
else:
|
|
3345
|
-
return
|
|
3353
|
+
return APIClient(base_url=get_docker_host(), **client_opts)
|
|
3346
3354
|
|
|
3347
3355
|
|
|
3348
3356
|
def get_running_mesos_docker_containers() -> List[Dict]:
|
|
@@ -10,9 +10,7 @@ certifi
|
|
|
10
10
|
choice >= 0.1
|
|
11
11
|
cookiecutter >= 1.4.0
|
|
12
12
|
croniter
|
|
13
|
-
|
|
14
|
-
# the Docker version deployed on PaaSTA servers
|
|
15
|
-
docker-py >= 1.2.3
|
|
13
|
+
docker
|
|
16
14
|
dulwich >= 0.17.3
|
|
17
15
|
ephemeral-port-reserve >= 1.0.1
|
|
18
16
|
graphviz
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/autoscaling_service_lib.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/pause_service_autoscaler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_kubernetes_services_replication.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|