paasta-tools 1.24.1__tar.gz → 1.26.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.24.1/paasta_tools.egg-info → paasta_tools-1.26.0}/PKG-INFO +2 -2
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/__init__.py +1 -1
- paasta_tools-1.26.0/paasta_tools/cleanup_expired_autoscaling_overrides.py +155 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/tron_schema.json +5 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes_tools.py +43 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/tron_tools.py +8 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0/paasta_tools.egg-info}/PKG-INFO +2 -2
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools.egg-info/SOURCES.txt +1 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools.egg-info/entry_points.txt +1 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools.egg-info/requires.txt +1 -1
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/requirements-minimal.txt +1 -1
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/setup.py +1 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_tron_tools.py +13 -1
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/LICENSE +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/MANIFEST.in +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/README.md +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/k8s_itests/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/k8s_itests/test_autoscaling.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/k8s_itests/utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/adhoc_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/api.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/api_docs/swagger.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/client.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/settings.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/tweens/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/tweens/auth.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/tweens/profiling.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/tweens/request_logger.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/views/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/views/autoscaler.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/views/exception.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/views/flink.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/views/instance.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/views/pause_autoscaler.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/views/remote_run.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/views/resources.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/views/service.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/api/views/version.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/apply_external_resources.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/async_utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/autoscaling/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/autoscaling/forecasting.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/autoscaling/utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/bounce_lib.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/broadcast_log_to_services.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cassandracluster_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/check_autoscaler_max_instances.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/check_flink_services_health.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/check_kubernetes_api.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/check_kubernetes_services_replication.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/check_oom_events.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/check_services_replication_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/check_spark_jobs.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cleanup_tron_namespaces.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/authentication.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cli.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/autoscale.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/check.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/cook_image.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/get_image_version.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/info.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/itest.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/list.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/list_clusters.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/list_namespaces.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/local_run.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/logs.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/mesh_status.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/remote_run.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/rollback.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/secret.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/security_check.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/spark_run.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/status.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/validate.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/fsm/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/fsm/autosuggest.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/fsm/template/README.md +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/fsm_cmd.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/eks_schema.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/service_schema.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/cli/utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/clusterman.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/config_utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/check_orphans.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/create_paasta_playground.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/habitat_fixer.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/ide_helper.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/kill_bad_containers.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/mock_patch_checker.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/render_template.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/service_shard_remove.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/service_shard_update.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/shared_ip_check.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/delete_kubernetes_deployments.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/deployment_utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/docker_wrapper.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/docker_wrapper_imports.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/drain_lib.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/dump_locally_running_services.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/eks_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/envoy_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/firewall.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/firewall_logging.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/firewall_update.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/flink_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/flinkeks_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/frameworks/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/frameworks/constraints.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/frameworks/native_scheduler.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/frameworks/native_service_config.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/frameworks/task_store.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/generate_all_deployments +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/generate_authenticating_services.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/generate_deployments_for_service.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/generate_services_file.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/generate_services_yaml.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/hacheck.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/instance/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/instance/kubernetes.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/iptables.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kafkacluster_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes/application/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes/application/tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes/bin/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/kubernetes/remote_run.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/list_kubernetes_service_instances.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/list_tron_namespaces.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/long_running_service_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mac_address.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/marathon_dashboard.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/cfg.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/cluster.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/exceptions.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/framework.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/log.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/master.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/mesos_file.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/parallel.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/slave.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/task.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/util.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos/zookeeper.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos_maintenance.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/mesos_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/metrics/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/metrics/metastatus_lib.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/metrics/metrics_lib.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/monitoring/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/monitoring_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/monkrelaycluster_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/nrtsearchservice_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/oom_logger.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paasta_deploy_tron_jobs +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paasta_execute_docker_command.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paasta_native_serviceinit.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paasta_service_config_loader.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/api/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/api/default_api.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/api/remote_run_api.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/api/resources_api.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/api/service_api.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/api_client.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/apis/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/configuration.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/exceptions.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/autoscaling_override.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/flink_config.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/flink_job.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/inline_object.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/inline_response202.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/inline_response403.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_status.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/remote_run_outcome.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/remote_run_start.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/remote_run_stop.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/remote_run_token.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/resource.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/resource_item.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/resource_value.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/model_utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/models/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/paastaapi/rest.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/prune_completed_pods.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/puppet_service_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/py.typed +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/remote_git.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/run-paasta-api-playground.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/secret_providers/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/secret_providers/vault.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/secret_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/setup_istio_mesh.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/setup_kubernetes_cr.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/setup_kubernetes_crd.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/setup_kubernetes_job.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/setup_tron_namespace.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/slack.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/smartstack_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/spark_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/tron/__init__.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/tron/client.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/tron/tron_command_context.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/tron/tron_timeutils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/yaml_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools.egg-info/dependency_links.txt +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools.egg-info/top_level.txt +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/pyproject.toml +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/setup.cfg +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_adhoc_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_apply_external_resources.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_async_utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_bounce_lib.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_check_flink_services_health.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_check_kubernetes_services_replication.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_check_oom_events.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_check_service_replication_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_check_spark_jobs.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_cleanup_kubernetes_jobs.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_config_utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_delete_kubernetes_deployments.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_deployment_utils.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_docker_wrapper.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_drain_lib.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_eks_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_envoy_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_firewall.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_firewall_logging.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_firewall_update.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_flink_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_flinkeks_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_generate_authenticating_services.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_generate_deployments_for_service.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_generate_services_file.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_generate_services_yaml.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_hacheck.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_iptables.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_kubernetes_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_list_kubernetes_service_instances.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_long_running_service_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_mac_address.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_mesos_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_monitoring_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_nrtsearchserviceseks_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_oom_logger.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_paasta_execute_docker_command.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_paasta_service_config_loader.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_puppet_service_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_remote_git.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_secret_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_setup_istio_mesh.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_setup_kubernetes_cr.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_setup_kubernetes_job.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_setup_prometheus_adapter_config.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_slack.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_smartstack_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_spark_tools.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_task_processing.py +0 -0
- {paasta_tools-1.24.1 → paasta_tools-1.26.0}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: paasta-tools
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.26.0
|
|
4
4
|
Summary: Tools for Yelps SOA infrastructure
|
|
5
5
|
Author: Compute Infrastructure @ Yelp
|
|
6
6
|
Author-email: compute-infra@yelp.com
|
|
@@ -59,7 +59,7 @@ Requires-Dist: requests-cache>=0.4.10
|
|
|
59
59
|
Requires-Dist: retry
|
|
60
60
|
Requires-Dist: ruamel.yaml
|
|
61
61
|
Requires-Dist: sensu-plugin
|
|
62
|
-
Requires-Dist: service-configuration-lib>=3.3.
|
|
62
|
+
Requires-Dist: service-configuration-lib>=3.3.5
|
|
63
63
|
Requires-Dist: signalfx
|
|
64
64
|
Requires-Dist: slackclient>=1.2.1
|
|
65
65
|
Requires-Dist: sticht>=1.1.0
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import json
|
|
3
|
+
import logging
|
|
4
|
+
import sys
|
|
5
|
+
import time
|
|
6
|
+
from datetime import datetime
|
|
7
|
+
from datetime import timezone
|
|
8
|
+
|
|
9
|
+
from kubernetes.client.rest import ApiException
|
|
10
|
+
|
|
11
|
+
from paasta_tools.kubernetes_tools import AUTOSCALING_OVERRIDES_CONFIGMAP_NAME
|
|
12
|
+
from paasta_tools.kubernetes_tools import AUTOSCALING_OVERRIDES_CONFIGMAP_NAMESPACE
|
|
13
|
+
from paasta_tools.kubernetes_tools import get_namespaced_configmap
|
|
14
|
+
from paasta_tools.kubernetes_tools import KubeClient
|
|
15
|
+
from paasta_tools.kubernetes_tools import replace_namespaced_configmap
|
|
16
|
+
|
|
17
|
+
log = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def parse_args():
|
|
21
|
+
parser = argparse.ArgumentParser(
|
|
22
|
+
description=f"Clean up expired entries from the {AUTOSCALING_OVERRIDES_CONFIGMAP_NAME} configmap"
|
|
23
|
+
)
|
|
24
|
+
parser.add_argument(
|
|
25
|
+
"--dry-run",
|
|
26
|
+
dest="dry_run",
|
|
27
|
+
action="store_true",
|
|
28
|
+
help="Print entries to be removed instead of removing them",
|
|
29
|
+
)
|
|
30
|
+
parser.add_argument(
|
|
31
|
+
"-v", "--verbose", dest="verbose", action="store_true", default=False
|
|
32
|
+
)
|
|
33
|
+
args = parser.parse_args()
|
|
34
|
+
return args
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def setup_logging(verbose):
|
|
38
|
+
level = logging.DEBUG if verbose else logging.INFO
|
|
39
|
+
logging.basicConfig(level=level)
|
|
40
|
+
# silence kubernetes client metadata logs since debug ones are pretty noisy
|
|
41
|
+
logging.getLogger("kubernetes.client.rest").setLevel(logging.ERROR)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def main():
|
|
45
|
+
args = parse_args()
|
|
46
|
+
setup_logging(args.verbose)
|
|
47
|
+
|
|
48
|
+
kube_client = KubeClient()
|
|
49
|
+
|
|
50
|
+
try:
|
|
51
|
+
configmap = get_namespaced_configmap(
|
|
52
|
+
name=AUTOSCALING_OVERRIDES_CONFIGMAP_NAME,
|
|
53
|
+
namespace=AUTOSCALING_OVERRIDES_CONFIGMAP_NAMESPACE,
|
|
54
|
+
kube_client=kube_client,
|
|
55
|
+
)
|
|
56
|
+
except ApiException as e:
|
|
57
|
+
if e.status == 404:
|
|
58
|
+
log.debug(
|
|
59
|
+
f"ConfigMap {AUTOSCALING_OVERRIDES_CONFIGMAP_NAME} not found, nothing to clean up"
|
|
60
|
+
)
|
|
61
|
+
sys.exit(0)
|
|
62
|
+
else:
|
|
63
|
+
log.error(f"Error retrieving ConfigMap: {e}")
|
|
64
|
+
sys.exit(1)
|
|
65
|
+
|
|
66
|
+
if configmap is None:
|
|
67
|
+
log.debug(
|
|
68
|
+
f"ConfigMap {AUTOSCALING_OVERRIDES_CONFIGMAP_NAME} not found, nothing to clean up"
|
|
69
|
+
)
|
|
70
|
+
sys.exit(0)
|
|
71
|
+
|
|
72
|
+
if not configmap.data:
|
|
73
|
+
log.debug("ConfigMap has no data, nothing to clean up")
|
|
74
|
+
sys.exit(0)
|
|
75
|
+
|
|
76
|
+
current_timestamp = (
|
|
77
|
+
time.time()
|
|
78
|
+
) # we'll fix the comparison time to the start of the script execution
|
|
79
|
+
expired_entries = [] # used just for logging
|
|
80
|
+
unexpired_data = {} # used to replace the existing configmap data
|
|
81
|
+
|
|
82
|
+
log.debug(f"Current timestamp: {current_timestamp}")
|
|
83
|
+
for service_instance, override_json in configmap.data.items():
|
|
84
|
+
log.debug(f"Processing entry for {service_instance}")
|
|
85
|
+
|
|
86
|
+
try:
|
|
87
|
+
override_data = json.loads(override_json)
|
|
88
|
+
except json.JSONDecodeError:
|
|
89
|
+
log.exception(
|
|
90
|
+
f"Failed to parse JSON for {service_instance}, removing entry"
|
|
91
|
+
)
|
|
92
|
+
expired_entries.append(service_instance)
|
|
93
|
+
continue
|
|
94
|
+
|
|
95
|
+
if "expire_after" not in override_data:
|
|
96
|
+
log.warning(
|
|
97
|
+
f"Entry for {service_instance} missing expire_after field, removing entry"
|
|
98
|
+
)
|
|
99
|
+
expired_entries.append(service_instance)
|
|
100
|
+
continue
|
|
101
|
+
|
|
102
|
+
try:
|
|
103
|
+
expire_after = float(override_data["expire_after"])
|
|
104
|
+
except (ValueError, TypeError):
|
|
105
|
+
log.exception(
|
|
106
|
+
f"Failed to parse expire_after for {service_instance}, removing entry"
|
|
107
|
+
)
|
|
108
|
+
expired_entries.append(service_instance)
|
|
109
|
+
continue
|
|
110
|
+
|
|
111
|
+
if current_timestamp > expire_after:
|
|
112
|
+
expire_datetime = datetime.fromtimestamp(expire_after, tz=timezone.utc)
|
|
113
|
+
log.debug(
|
|
114
|
+
f"Entry for {service_instance} expired at {expire_after} ({expire_datetime})"
|
|
115
|
+
)
|
|
116
|
+
expired_entries.append(service_instance)
|
|
117
|
+
else:
|
|
118
|
+
expire_datetime = datetime.fromtimestamp(expire_after, tz=timezone.utc)
|
|
119
|
+
log.debug(
|
|
120
|
+
f"Entry for {service_instance} expires at {expire_after} ({expire_datetime}), keeping"
|
|
121
|
+
)
|
|
122
|
+
unexpired_data[service_instance] = override_json
|
|
123
|
+
|
|
124
|
+
if not expired_entries:
|
|
125
|
+
log.info("No expired entries found")
|
|
126
|
+
sys.exit(0)
|
|
127
|
+
|
|
128
|
+
if args.dry_run:
|
|
129
|
+
log.info(
|
|
130
|
+
"Would have removed the following expired entries:\n "
|
|
131
|
+
+ "\n ".join(expired_entries)
|
|
132
|
+
)
|
|
133
|
+
sys.exit(0)
|
|
134
|
+
|
|
135
|
+
try:
|
|
136
|
+
configmap.data = (
|
|
137
|
+
unexpired_data # naughtily re-use the existing configmap object
|
|
138
|
+
)
|
|
139
|
+
replace_namespaced_configmap( # NOTE: this is not a patch since you cannot currently remove entries in a patch
|
|
140
|
+
name=AUTOSCALING_OVERRIDES_CONFIGMAP_NAME,
|
|
141
|
+
namespace=AUTOSCALING_OVERRIDES_CONFIGMAP_NAMESPACE,
|
|
142
|
+
body=configmap,
|
|
143
|
+
kube_client=kube_client,
|
|
144
|
+
)
|
|
145
|
+
log.info(
|
|
146
|
+
f"Successfully removed {len(expired_entries)} expired entries:\n "
|
|
147
|
+
+ "\n ".join(expired_entries)
|
|
148
|
+
)
|
|
149
|
+
except ApiException as e:
|
|
150
|
+
log.error(f"Failed to update ConfigMap: {e}")
|
|
151
|
+
sys.exit(1)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
if __name__ == "__main__":
|
|
155
|
+
main()
|
|
@@ -91,6 +91,11 @@
|
|
|
91
91
|
},
|
|
92
92
|
"uniqueItems": true
|
|
93
93
|
},
|
|
94
|
+
"idempotent": {
|
|
95
|
+
"type": "boolean",
|
|
96
|
+
"default": false,
|
|
97
|
+
"$comment": "This will be used to determine whether the action can be retried without side effects."
|
|
98
|
+
},
|
|
94
99
|
"extra_constraints": {
|
|
95
100
|
"type": "array",
|
|
96
101
|
"items": {
|
|
@@ -4709,6 +4709,49 @@ def patch_namespaced_configmap(
|
|
|
4709
4709
|
raise
|
|
4710
4710
|
|
|
4711
4711
|
|
|
4712
|
+
def replace_namespaced_configmap(
|
|
4713
|
+
name: str,
|
|
4714
|
+
body: V1ConfigMap,
|
|
4715
|
+
*,
|
|
4716
|
+
namespace: str,
|
|
4717
|
+
kube_client: KubeClient,
|
|
4718
|
+
) -> V1ConfigMap:
|
|
4719
|
+
"""
|
|
4720
|
+
Replaces an existing configmap with the given configmap.
|
|
4721
|
+
"""
|
|
4722
|
+
try:
|
|
4723
|
+
return kube_client.core.replace_namespaced_config_map(
|
|
4724
|
+
name=name, namespace=namespace, body=body
|
|
4725
|
+
)
|
|
4726
|
+
except ApiException as e:
|
|
4727
|
+
if e.status == 404:
|
|
4728
|
+
raise ValueError(f"ConfigMap {name} not found in namespace {namespace}")
|
|
4729
|
+
else:
|
|
4730
|
+
raise
|
|
4731
|
+
|
|
4732
|
+
|
|
4733
|
+
def delete_namespaced_configmap(
|
|
4734
|
+
name: str,
|
|
4735
|
+
body: V1ConfigMap,
|
|
4736
|
+
*,
|
|
4737
|
+
namespace: str,
|
|
4738
|
+
kube_client: KubeClient,
|
|
4739
|
+
) -> V1ConfigMap:
|
|
4740
|
+
"""
|
|
4741
|
+
Delete a configmap with the given name in the given namespace.
|
|
4742
|
+
"""
|
|
4743
|
+
try:
|
|
4744
|
+
return kube_client.core.delete_namespaced_config_map(
|
|
4745
|
+
name=name,
|
|
4746
|
+
namespace=namespace,
|
|
4747
|
+
)
|
|
4748
|
+
except ApiException as e:
|
|
4749
|
+
if e.status == 404:
|
|
4750
|
+
raise ValueError(f"ConfigMap {name} not found in namespace {namespace}")
|
|
4751
|
+
else:
|
|
4752
|
+
raise
|
|
4753
|
+
|
|
4754
|
+
|
|
4712
4755
|
def get_or_create_namespaced_configmap(
|
|
4713
4756
|
configmap: str,
|
|
4714
4757
|
*,
|
|
@@ -260,6 +260,7 @@ class TronActionConfigDict(InstanceConfigDict, total=False):
|
|
|
260
260
|
# TODO: TRON-2145: use this to implement timeout for non-spark actions in tron
|
|
261
261
|
max_runtime: str
|
|
262
262
|
mrjob: bool
|
|
263
|
+
idempotent: bool
|
|
263
264
|
|
|
264
265
|
|
|
265
266
|
class TronActionConfig(InstanceConfig):
|
|
@@ -422,6 +423,9 @@ class TronActionConfig(InstanceConfig):
|
|
|
422
423
|
def get_job_name(self):
|
|
423
424
|
return self.job
|
|
424
425
|
|
|
426
|
+
def get_idempotent(self) -> bool:
|
|
427
|
+
return self.config_dict.get("idempotent", False)
|
|
428
|
+
|
|
425
429
|
def get_action_name(self):
|
|
426
430
|
return self.action
|
|
427
431
|
|
|
@@ -977,6 +981,7 @@ def format_tron_action_dict(action_config: TronActionConfig):
|
|
|
977
981
|
"secret_volumes": action_config.get_secret_volumes(),
|
|
978
982
|
"expected_runtime": action_config.get_expected_runtime(),
|
|
979
983
|
"trigger_downstreams": action_config.get_trigger_downstreams(),
|
|
984
|
+
"idempotent": action_config.get_idempotent(),
|
|
980
985
|
"triggered_by": action_config.get_triggered_by(),
|
|
981
986
|
"on_upstream_rerun": action_config.get_on_upstream_rerun(),
|
|
982
987
|
"trigger_timeout": action_config.get_trigger_timeout(),
|
|
@@ -1046,6 +1051,9 @@ def format_tron_action_dict(action_config: TronActionConfig):
|
|
|
1046
1051
|
limit=63,
|
|
1047
1052
|
suffix=4,
|
|
1048
1053
|
),
|
|
1054
|
+
"tron.yelp.com/idempotent-action": str(
|
|
1055
|
+
action_config.get_idempotent()
|
|
1056
|
+
).lower(),
|
|
1049
1057
|
# XXX: should this be different for Spark drivers launched by Tron?
|
|
1050
1058
|
"app.kubernetes.io/managed-by": "tron",
|
|
1051
1059
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: paasta-tools
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.26.0
|
|
4
4
|
Summary: Tools for Yelps SOA infrastructure
|
|
5
5
|
Author: Compute Infrastructure @ Yelp
|
|
6
6
|
Author-email: compute-infra@yelp.com
|
|
@@ -59,7 +59,7 @@ Requires-Dist: requests-cache>=0.4.10
|
|
|
59
59
|
Requires-Dist: retry
|
|
60
60
|
Requires-Dist: ruamel.yaml
|
|
61
61
|
Requires-Dist: sensu-plugin
|
|
62
|
-
Requires-Dist: service-configuration-lib>=3.3.
|
|
62
|
+
Requires-Dist: service-configuration-lib>=3.3.5
|
|
63
63
|
Requires-Dist: signalfx
|
|
64
64
|
Requires-Dist: slackclient>=1.2.1
|
|
65
65
|
Requires-Dist: sticht>=1.1.0
|
|
@@ -22,6 +22,7 @@ paasta_tools/check_kubernetes_services_replication.py
|
|
|
22
22
|
paasta_tools/check_oom_events.py
|
|
23
23
|
paasta_tools/check_services_replication_tools.py
|
|
24
24
|
paasta_tools/check_spark_jobs.py
|
|
25
|
+
paasta_tools/cleanup_expired_autoscaling_overrides.py
|
|
25
26
|
paasta_tools/cleanup_kubernetes_cr.py
|
|
26
27
|
paasta_tools/cleanup_kubernetes_crd.py
|
|
27
28
|
paasta_tools/cleanup_kubernetes_jobs.py
|
|
@@ -4,6 +4,7 @@ paasta-api = paasta_tools.api.api:main
|
|
|
4
4
|
paasta-deployd = paasta_tools.deployd.master:main
|
|
5
5
|
paasta-fsm = paasta_tools.cli.fsm_cmd:main
|
|
6
6
|
paasta_broadcast_log = paasta_tools.broadcast_log_to_services:main
|
|
7
|
+
paasta_cleanup_expired_autoscaling_overrides = paasta_tools.cleanup_expired_autoscaling_overrides:main
|
|
7
8
|
paasta_cleanup_tron_namespaces = paasta_tools.cleanup_tron_namespaces:main
|
|
8
9
|
paasta_docker_wrapper = paasta_tools.docker_wrapper:main
|
|
9
10
|
paasta_dump_locally_running_services = paasta_tools.dump_locally_running_services:main
|
|
@@ -82,6 +82,7 @@ setup(
|
|
|
82
82
|
"paasta-fsm=paasta_tools.cli.fsm_cmd:main",
|
|
83
83
|
"paasta_prune_completed_pods=paasta_tools.prune_completed_pods:main",
|
|
84
84
|
"paasta_cleanup_tron_namespaces=paasta_tools.cleanup_tron_namespaces:main",
|
|
85
|
+
"paasta_cleanup_expired_autoscaling_overrides=paasta_tools.cleanup_expired_autoscaling_overrides:main",
|
|
85
86
|
"paasta_list_kubernetes_service_instances=paasta_tools.list_kubernetes_service_instances:main",
|
|
86
87
|
"paasta_list_tron_namespaces=paasta_tools.list_tron_namespaces:main",
|
|
87
88
|
"paasta_setup_tron_namespace=paasta_tools.setup_tron_namespace:main",
|
|
@@ -1043,6 +1043,7 @@ class TestTronTools:
|
|
|
1043
1043
|
"mem": 1200,
|
|
1044
1044
|
"disk": 42,
|
|
1045
1045
|
"env": mock.ANY,
|
|
1046
|
+
"idempotent": False,
|
|
1046
1047
|
"topology_spread_constraints": [
|
|
1047
1048
|
{
|
|
1048
1049
|
"label_selector": {
|
|
@@ -1083,6 +1084,7 @@ class TestTronTools:
|
|
|
1083
1084
|
"paasta.yelp.com/service": "my_service",
|
|
1084
1085
|
"yelp.com/owner": "compute_infra_platform_experience",
|
|
1085
1086
|
"app.kubernetes.io/managed-by": "tron",
|
|
1087
|
+
"tron.yelp.com/idempotent-action": "false",
|
|
1086
1088
|
},
|
|
1087
1089
|
"annotations": {
|
|
1088
1090
|
"paasta.yelp.com/routable_ip": "false",
|
|
@@ -1150,6 +1152,7 @@ class TestTronTools:
|
|
|
1150
1152
|
"deploy_group": "prod",
|
|
1151
1153
|
"executor": "spark",
|
|
1152
1154
|
"disk": 42,
|
|
1155
|
+
"idempotent": True,
|
|
1153
1156
|
"pool": "special_pool",
|
|
1154
1157
|
"env": {"SHELL": "/bin/bash"},
|
|
1155
1158
|
"secret_volumes": [
|
|
@@ -1449,7 +1452,9 @@ class TestTronTools:
|
|
|
1449
1452
|
"paasta.yelp.com/prometheus_shard": "ml-compute",
|
|
1450
1453
|
"spark.yelp.com/user": "TRON",
|
|
1451
1454
|
"spark.yelp.com/driver_ui_port": "39091",
|
|
1455
|
+
"tron.yelp.com/idempotent-action": "true",
|
|
1452
1456
|
},
|
|
1457
|
+
"idempotent": True,
|
|
1453
1458
|
"annotations": {
|
|
1454
1459
|
"paasta.yelp.com/routable_ip": "true",
|
|
1455
1460
|
"paasta.yelp.com/service": "my_service",
|
|
@@ -1493,6 +1498,7 @@ class TestTronTools:
|
|
|
1493
1498
|
"deploy_group": "prod",
|
|
1494
1499
|
"pool": "default",
|
|
1495
1500
|
"executor": "paasta",
|
|
1501
|
+
"idempotent": True,
|
|
1496
1502
|
}
|
|
1497
1503
|
branch_dict = {
|
|
1498
1504
|
"docker_image": "my_service:paasta-123abcde",
|
|
@@ -1534,6 +1540,7 @@ class TestTronTools:
|
|
|
1534
1540
|
"disk": 1024,
|
|
1535
1541
|
"cap_add": [],
|
|
1536
1542
|
"cap_drop": CAPS_DROP,
|
|
1543
|
+
"idempotent": True,
|
|
1537
1544
|
"labels": {
|
|
1538
1545
|
"paasta.yelp.com/cluster": "test-cluster",
|
|
1539
1546
|
"paasta.yelp.com/instance": "job_name.instance_name",
|
|
@@ -1541,6 +1548,7 @@ class TestTronTools:
|
|
|
1541
1548
|
"paasta.yelp.com/service": "my_service",
|
|
1542
1549
|
"yelp.com/owner": "compute_infra_platform_experience",
|
|
1543
1550
|
"app.kubernetes.io/managed-by": "tron",
|
|
1551
|
+
"tron.yelp.com/idempotent-action": "true",
|
|
1544
1552
|
},
|
|
1545
1553
|
"annotations": {
|
|
1546
1554
|
"paasta.yelp.com/routable_ip": "false",
|
|
@@ -1678,6 +1686,7 @@ class TestTronTools:
|
|
|
1678
1686
|
"cpus": 2,
|
|
1679
1687
|
"mem": 1200,
|
|
1680
1688
|
"disk": 42,
|
|
1689
|
+
"idempotent": False,
|
|
1681
1690
|
"cap_add": [],
|
|
1682
1691
|
"cap_drop": CAPS_DROP,
|
|
1683
1692
|
"labels": {
|
|
@@ -1687,6 +1696,7 @@ class TestTronTools:
|
|
|
1687
1696
|
"paasta.yelp.com/service": "my_service",
|
|
1688
1697
|
"yelp.com/owner": "compute_infra_platform_experience",
|
|
1689
1698
|
"app.kubernetes.io/managed-by": "tron",
|
|
1699
|
+
"tron.yelp.com/idempotent-action": "false",
|
|
1690
1700
|
},
|
|
1691
1701
|
"annotations": {
|
|
1692
1702
|
"paasta.yelp.com/routable_ip": "false",
|
|
@@ -1811,6 +1821,7 @@ class TestTronTools:
|
|
|
1811
1821
|
"cpus": 2,
|
|
1812
1822
|
"mem": 1200,
|
|
1813
1823
|
"disk": 42,
|
|
1824
|
+
"idempotent": False,
|
|
1814
1825
|
"env": mock.ANY,
|
|
1815
1826
|
"topology_spread_constraints": [
|
|
1816
1827
|
{
|
|
@@ -1849,6 +1860,7 @@ class TestTronTools:
|
|
|
1849
1860
|
"paasta.yelp.com/service": "my_service",
|
|
1850
1861
|
"yelp.com/owner": "compute_infra_platform_experience",
|
|
1851
1862
|
"app.kubernetes.io/managed-by": "tron",
|
|
1863
|
+
"tron.yelp.com/idempotent-action": "false",
|
|
1852
1864
|
},
|
|
1853
1865
|
"annotations": {
|
|
1854
1866
|
"paasta.yelp.com/routable_ip": "false",
|
|
@@ -2004,7 +2016,7 @@ fake_job:
|
|
|
2004
2016
|
# that are not static, this will cause continuous reconfiguration, which
|
|
2005
2017
|
# will add significant load to the Tron API, which happened in DAR-1461.
|
|
2006
2018
|
# but if this is intended, just change the hash.
|
|
2007
|
-
assert hasher.hexdigest() == "
|
|
2019
|
+
assert hasher.hexdigest() == "5cf9985b6227ce18dc87376b687046f7"
|
|
2008
2020
|
|
|
2009
2021
|
def test_override_default_pool_override(self, tmpdir):
|
|
2010
2022
|
soa_dir = tmpdir.mkdir("test_create_complete_config_soa")
|
|
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.24.1 → paasta_tools-1.26.0}/paasta_tools/autoscaling/autoscaling_service_lib.py
RENAMED
|
File without changes
|
|
File without changes
|
{paasta_tools-1.24.1 → paasta_tools-1.26.0}/paasta_tools/autoscaling/max_all_k8s_services.py
RENAMED
|
File without changes
|
{paasta_tools-1.24.1 → paasta_tools-1.26.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.24.1 → paasta_tools-1.26.0}/paasta_tools/check_kubernetes_services_replication.py
RENAMED
|
File without changes
|
|
File without changes
|
{paasta_tools-1.24.1 → paasta_tools-1.26.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.24.1 → paasta_tools-1.26.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
|