paasta-tools 1.19.0__tar.gz → 1.20.0__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.19.0/paasta_tools.egg-info → paasta-tools-1.20.0}/PKG-INFO +1 -1
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/__init__.py +1 -1
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/eks_schema.json +7 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/kubernetes_schema.json +7 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes_tools.py +107 -17
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/long_running_service_tools.py +11 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0/paasta_tools.egg-info}/PKG-INFO +1 -1
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/LICENSE +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/MANIFEST.in +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/README.md +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/k8s_itests/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/k8s_itests/test_autoscaling.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/k8s_itests/utils.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/adhoc_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/api.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/api_docs/swagger.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/client.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/settings.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/tweens/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/tweens/auth.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/tweens/profiling.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/tweens/request_logger.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/views/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/views/autoscaler.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/views/exception.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/views/flink.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/views/instance.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/views/pause_autoscaler.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/views/remote_run.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/views/resources.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/views/service.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/api/views/version.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/apply_external_resources.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/async_utils.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/autoscaling/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/autoscaling/forecasting.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/autoscaling/utils.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/bounce_lib.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/broadcast_log_to_services.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cassandracluster_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/check_autoscaler_max_instances.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/check_flink_services_health.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/check_kubernetes_api.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/check_kubernetes_services_replication.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/check_oom_events.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/check_services_replication_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/check_spark_jobs.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cleanup_tron_namespaces.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/authentication.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cli.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/autoscale.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/check.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/cook_image.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/get_image_version.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/info.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/itest.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/list.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/list_clusters.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/list_namespaces.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/local_run.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/logs.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/mesh_status.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/remote_run.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/rollback.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/secret.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/security_check.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/spark_run.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/status.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/validate.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/fsm/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/fsm/autosuggest.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/fsm/template/README.md +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/fsm_cmd.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/service_schema.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/tron_schema.json +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/utils.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/clusterman.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/config_utils.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/check_orphans.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/create_paasta_playground.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/habitat_fixer.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/ide_helper.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/kill_bad_containers.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/mock_patch_checker.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/render_template.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/service_shard_remove.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/service_shard_update.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/shared_ip_check.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/delete_kubernetes_deployments.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/deployment_utils.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/docker_wrapper.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/docker_wrapper_imports.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/drain_lib.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/dump_locally_running_services.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/eks_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/envoy_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/firewall.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/firewall_logging.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/firewall_update.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/flink_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/flinkeks_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/frameworks/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/frameworks/constraints.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/frameworks/native_scheduler.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/frameworks/native_service_config.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/frameworks/task_store.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/generate_all_deployments +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/generate_authenticating_services.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/generate_deployments_for_service.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/generate_services_file.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/generate_services_yaml.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/hacheck.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/instance/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/instance/kubernetes.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/iptables.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kafkacluster_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes/application/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes/application/tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes/bin/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/kubernetes/remote_run.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/list_kubernetes_service_instances.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/list_tron_namespaces.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mac_address.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/marathon_dashboard.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/cfg.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/cluster.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/exceptions.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/framework.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/log.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/master.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/mesos_file.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/parallel.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/slave.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/task.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/util.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos/zookeeper.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos_maintenance.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/mesos_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/metrics/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/metrics/metastatus_lib.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/metrics/metrics_lib.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/monitoring/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/monitoring_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/monkrelaycluster_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/nrtsearchservice_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/oom_logger.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paasta_deploy_tron_jobs +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paasta_execute_docker_command.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paasta_native_serviceinit.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paasta_service_config_loader.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/api/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/api/default_api.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/api/remote_run_api.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/api/resources_api.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/api/service_api.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/api_client.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/apis/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/configuration.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/exceptions.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/flink_config.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/flink_job.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/inline_object.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_status.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/remote_run_outcome.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/remote_run_start.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/remote_run_stop.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/remote_run_token.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/resource.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/resource_item.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/resource_value.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/model_utils.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/models/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/paastaapi/rest.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/prune_completed_pods.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/puppet_service_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/py.typed +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/remote_git.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/run-paasta-api-playground.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/secret_providers/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/secret_providers/vault.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/secret_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/setup_istio_mesh.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/setup_kubernetes_cr.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/setup_kubernetes_crd.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/setup_kubernetes_job.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/setup_tron_namespace.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/slack.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/smartstack_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/spark_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/tron/__init__.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/tron/client.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/tron/tron_command_context.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/tron/tron_timeutils.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/tron_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/utils.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/yaml_tools.py +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools.egg-info/SOURCES.txt +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools.egg-info/dependency_links.txt +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools.egg-info/entry_points.txt +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools.egg-info/requires.txt +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools.egg-info/top_level.txt +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/pyproject.toml +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/requirements-minimal.txt +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/setup.cfg +0 -0
- {paasta-tools-1.19.0 → paasta-tools-1.20.0}/setup.py +0 -0
|
@@ -223,9 +223,6 @@ JOB_TYPE_LABEL_NAME = "job_type"
|
|
|
223
223
|
|
|
224
224
|
GPU_RESOURCE_NAME = "nvidia.com/gpu"
|
|
225
225
|
DEFAULT_STORAGE_CLASS_NAME = "ebs"
|
|
226
|
-
DEFAULT_PRESTOP_SLEEP_SECONDS = 30
|
|
227
|
-
DEFAULT_HADOWN_PRESTOP_SLEEP_SECONDS = DEFAULT_PRESTOP_SLEEP_SECONDS + 1
|
|
228
|
-
|
|
229
226
|
|
|
230
227
|
DEFAULT_SIDECAR_REQUEST: KubeContainerResourceRequest = {
|
|
231
228
|
"cpu": 0.1,
|
|
@@ -306,6 +303,8 @@ class CustomResourceDefinition(NamedTuple):
|
|
|
306
303
|
class KubeLifecycleDict(TypedDict, total=False):
|
|
307
304
|
termination_grace_period_seconds: int
|
|
308
305
|
pre_stop_command: Union[str, List[str]]
|
|
306
|
+
pre_stop_drain_seconds: int
|
|
307
|
+
pre_stop_wait_for_connections_to_complete: bool
|
|
309
308
|
|
|
310
309
|
|
|
311
310
|
class KubeAffinityCondition(TypedDict, total=False):
|
|
@@ -1131,7 +1130,7 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
1131
1130
|
command=[
|
|
1132
1131
|
"/bin/sh",
|
|
1133
1132
|
"-c",
|
|
1134
|
-
f"/usr/bin/hadown {registrations}; sleep {
|
|
1133
|
+
f"/usr/bin/hadown {registrations}; sleep {self.get_hacheck_prestop_sleep_seconds()}",
|
|
1135
1134
|
]
|
|
1136
1135
|
)
|
|
1137
1136
|
)
|
|
@@ -1176,7 +1175,7 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
1176
1175
|
"-c",
|
|
1177
1176
|
# we sleep for the same amount of time as we do after an hadown to ensure that we have accurate
|
|
1178
1177
|
# metrics up until our Pod dies
|
|
1179
|
-
f"sleep {
|
|
1178
|
+
f"sleep {self.get_hacheck_prestop_sleep_seconds()}",
|
|
1180
1179
|
]
|
|
1181
1180
|
)
|
|
1182
1181
|
)
|
|
@@ -1477,7 +1476,9 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
1477
1476
|
env=self.get_container_env(),
|
|
1478
1477
|
resources=self.get_resource_requirements(),
|
|
1479
1478
|
lifecycle=V1Lifecycle(
|
|
1480
|
-
pre_stop=self.get_kubernetes_container_termination_action(
|
|
1479
|
+
pre_stop=self.get_kubernetes_container_termination_action(
|
|
1480
|
+
service_namespace_config
|
|
1481
|
+
)
|
|
1481
1482
|
),
|
|
1482
1483
|
name=self.get_sanitised_instance_name(),
|
|
1483
1484
|
liveness_probe=self.get_liveness_probe(service_namespace_config),
|
|
@@ -1509,17 +1510,77 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
1509
1510
|
else:
|
|
1510
1511
|
return self.get_liveness_probe(service_namespace_config)
|
|
1511
1512
|
|
|
1512
|
-
def
|
|
1513
|
-
|
|
1514
|
-
|
|
1513
|
+
def get_lifecycle_dict(self) -> KubeLifecycleDict:
|
|
1514
|
+
return self.config_dict.get("lifecycle", KubeLifecycleDict({}))
|
|
1515
|
+
|
|
1516
|
+
def get_prestop_sleep_seconds(self, is_in_smartstack: bool) -> int:
|
|
1517
|
+
if is_in_smartstack:
|
|
1518
|
+
default = 30
|
|
1519
|
+
else:
|
|
1520
|
+
default = 0
|
|
1521
|
+
return self.get_lifecycle_dict().get("pre_stop_drain_seconds", default)
|
|
1522
|
+
|
|
1523
|
+
def get_hacheck_prestop_sleep_seconds(self) -> int:
|
|
1524
|
+
"""The number of seconds to sleep between hadown and terminating the hacheck container. We want hacheck to be
|
|
1525
|
+
up for slightly longer than the main container is, so we default to pre_stop_drain_seconds + 1.
|
|
1526
|
+
|
|
1527
|
+
It doesn't super matter if hacheck goes down before the main container -- if it's down, healthchecks will fail
|
|
1528
|
+
and the service will be removed from smartstack, which is the same effect we get after running hadown.
|
|
1529
|
+
"""
|
|
1530
|
+
|
|
1531
|
+
# Everywhere this value is currently used (hacheck sidecar or gunicorn sidecar), we can pretty safely
|
|
1532
|
+
# assume that the service is in smartstack.
|
|
1533
|
+
return self.get_prestop_sleep_seconds(is_in_smartstack=True) + 1
|
|
1534
|
+
|
|
1535
|
+
def get_pre_stop_wait_for_connections_to_complete(
|
|
1536
|
+
self, service_namespace_config: ServiceNamespaceConfig
|
|
1537
|
+
) -> bool:
|
|
1538
|
+
return self.get_lifecycle_dict().get(
|
|
1539
|
+
"pre_stop_wait_for_connections_to_complete",
|
|
1540
|
+
service_namespace_config.is_in_smartstack()
|
|
1541
|
+
and service_namespace_config.get_longest_timeout_ms() >= 20000,
|
|
1515
1542
|
)
|
|
1543
|
+
|
|
1544
|
+
def get_kubernetes_container_termination_action(
|
|
1545
|
+
self,
|
|
1546
|
+
service_namespace_config: ServiceNamespaceConfig,
|
|
1547
|
+
) -> V1LifecycleHandler:
|
|
1548
|
+
command = self.get_lifecycle_dict().get("pre_stop_command", [])
|
|
1516
1549
|
# default pre stop hook for the container
|
|
1517
1550
|
if not command:
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
command=["/bin/sh", "-c", f"sleep {DEFAULT_PRESTOP_SLEEP_SECONDS}"]
|
|
1521
|
-
)
|
|
1551
|
+
pre_stop_sleep_seconds = self.get_prestop_sleep_seconds(
|
|
1552
|
+
service_namespace_config.is_in_smartstack()
|
|
1522
1553
|
)
|
|
1554
|
+
if self.get_pre_stop_wait_for_connections_to_complete(
|
|
1555
|
+
service_namespace_config
|
|
1556
|
+
):
|
|
1557
|
+
# This pre-stop command:
|
|
1558
|
+
# 1. Waits for pre_stop_sleep_seconds seconds (to give hadown time to take effect). This avoids a
|
|
1559
|
+
# potential race condition where step 2 detects no connections in flight and the pod is terminated
|
|
1560
|
+
# immediately, but because the pod is still listed in Envoy somewhere, it receives a new connection
|
|
1561
|
+
# just as the pod is terminated.
|
|
1562
|
+
# 2. Every second, checks if there are any established connections to the pod. It exits when there are no
|
|
1563
|
+
# established connections.
|
|
1564
|
+
# It exits when all connections are closed, which should mean the pod can be safely terminated.
|
|
1565
|
+
# The first four fields of /proc/net/tcp are:
|
|
1566
|
+
# 1. slot number (which is not relevant here, but it's a decimal number left-padded with whitespace)
|
|
1567
|
+
# 2. local address:port (both in hex)
|
|
1568
|
+
# 3. remote address:port (both in hex)
|
|
1569
|
+
# 4. state (in hex)
|
|
1570
|
+
# State 01 means ESTABLISHED.
|
|
1571
|
+
hex_port = hex(self.get_container_port()).upper()[2:]
|
|
1572
|
+
command = [
|
|
1573
|
+
"/bin/sh",
|
|
1574
|
+
"-c",
|
|
1575
|
+
f"sleep {pre_stop_sleep_seconds}; while grep '^ *[0-9]*: ........:{hex_port} ........:.... 01 ' /proc/net/tcp; do sleep 1; echo; done",
|
|
1576
|
+
]
|
|
1577
|
+
else:
|
|
1578
|
+
command = [
|
|
1579
|
+
"/bin/sh",
|
|
1580
|
+
"-c",
|
|
1581
|
+
f"sleep {pre_stop_sleep_seconds}",
|
|
1582
|
+
]
|
|
1583
|
+
|
|
1523
1584
|
if isinstance(command, str):
|
|
1524
1585
|
command = [command]
|
|
1525
1586
|
return V1LifecycleHandler(_exec=V1ExecAction(command=command))
|
|
@@ -2314,7 +2375,9 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
2314
2375
|
constraints += pod_topology_spread_constraints
|
|
2315
2376
|
pod_spec_kwargs["topology_spread_constraints"] = constraints
|
|
2316
2377
|
|
|
2317
|
-
termination_grace_period = self.get_termination_grace_period(
|
|
2378
|
+
termination_grace_period = self.get_termination_grace_period(
|
|
2379
|
+
service_namespace_config
|
|
2380
|
+
)
|
|
2318
2381
|
if termination_grace_period is not None:
|
|
2319
2382
|
pod_spec_kwargs[
|
|
2320
2383
|
"termination_grace_period_seconds"
|
|
@@ -2644,9 +2707,36 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
2644
2707
|
|
|
2645
2708
|
return ahash
|
|
2646
2709
|
|
|
2647
|
-
def get_termination_grace_period(
|
|
2648
|
-
|
|
2649
|
-
|
|
2710
|
+
def get_termination_grace_period(
|
|
2711
|
+
self, service_namespace_config: ServiceNamespaceConfig
|
|
2712
|
+
) -> Optional[int]:
|
|
2713
|
+
"""Return the number of seconds that kubernetes should wait for pre-stop hooks to finish (or for the main
|
|
2714
|
+
process to exit after signaling) before forcefully terminating the pod.
|
|
2715
|
+
|
|
2716
|
+
For smartstack services, defaults to a value long enough to allow the default pre-stop hook to finish.
|
|
2717
|
+
For non-smartstack services, defaults to None (kubernetes default of 30s).
|
|
2718
|
+
"""
|
|
2719
|
+
|
|
2720
|
+
if service_namespace_config.is_in_smartstack():
|
|
2721
|
+
default = self.get_hacheck_prestop_sleep_seconds() + 1
|
|
2722
|
+
if self.get_pre_stop_wait_for_connections_to_complete(
|
|
2723
|
+
service_namespace_config
|
|
2724
|
+
):
|
|
2725
|
+
# If the max timeout is more than 30 minutes, cap it to 30 minutes.
|
|
2726
|
+
# Most services with ultra-long timeouts are probably able to handle SIGTERM gracefully anyway.
|
|
2727
|
+
default += int(
|
|
2728
|
+
math.ceil(
|
|
2729
|
+
min(
|
|
2730
|
+
1800,
|
|
2731
|
+
service_namespace_config.get_longest_timeout_ms() / 1000,
|
|
2732
|
+
)
|
|
2733
|
+
)
|
|
2734
|
+
)
|
|
2735
|
+
else:
|
|
2736
|
+
default = None
|
|
2737
|
+
|
|
2738
|
+
return self.get_lifecycle_dict().get(
|
|
2739
|
+
"termination_grace_period_seconds", default
|
|
2650
2740
|
)
|
|
2651
2741
|
|
|
2652
2742
|
def get_prometheus_shard(self) -> Optional[str]:
|
|
@@ -126,6 +126,16 @@ class ServiceNamespaceConfig(dict):
|
|
|
126
126
|
def is_in_smartstack(self) -> bool:
|
|
127
127
|
return "proxy_port" in self
|
|
128
128
|
|
|
129
|
+
def get_timeout_server_ms(self) -> int:
|
|
130
|
+
return self.get("timeout_server_ms", 1000)
|
|
131
|
+
|
|
132
|
+
def get_longest_timeout_ms(self) -> int:
|
|
133
|
+
"""Calculate the longest amount of time a connection to this service might stay open."""
|
|
134
|
+
return max(
|
|
135
|
+
[self.get_timeout_server_ms()]
|
|
136
|
+
+ list(self.get("endpoint_timeouts", {}).values())
|
|
137
|
+
)
|
|
138
|
+
|
|
129
139
|
|
|
130
140
|
class LongRunningServiceConfig(InstanceConfig):
|
|
131
141
|
config_dict: LongRunningServiceConfigDict
|
|
@@ -503,6 +513,7 @@ def load_service_namespace_config(
|
|
|
503
513
|
"advertise",
|
|
504
514
|
"extra_healthcheck_headers",
|
|
505
515
|
"lb_policy",
|
|
516
|
+
"endpoint_timeouts",
|
|
506
517
|
}
|
|
507
518
|
|
|
508
519
|
for key, value in namespace_config_from_file.items():
|
|
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
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/autoscaling/autoscaling_service_lib.py
RENAMED
|
File without changes
|
|
File without changes
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/autoscaling/max_all_k8s_services.py
RENAMED
|
File without changes
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/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.19.0 → paasta-tools-1.20.0}/paasta_tools/check_kubernetes_services_replication.py
RENAMED
|
File without changes
|
|
File without changes
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/check_services_replication_tools.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
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/cmds/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
|
|
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.19.0 → paasta-tools-1.20.0}/paasta_tools/cli/schemas/autoscaling_schema.json
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
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/bounce_log_latency_parser.py
RENAMED
|
File without changes
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/check_manual_oapi_changes.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/create_paasta_playground.py
RENAMED
|
File without changes
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/emit_allocated_cpu_metrics.py
RENAMED
|
File without changes
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/get_running_task_allocation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/paasta_update_soa_memcpu.py
RENAMED
|
File without changes
|
|
File without changes
|
{paasta-tools-1.19.0 → paasta-tools-1.20.0}/paasta_tools/contrib/rightsizer_soaconfigs_update.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
|