paasta-tools 1.30.7__tar.gz → 1.35.4__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.30.7/paasta_tools.egg-info → paasta_tools-1.35.4}/PKG-INFO +3 -3
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/__init__.py +1 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/api_docs/swagger.json +5 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/views/instance.py +9 -2
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/async_utils.py +4 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/bounce_lib.py +8 -5
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/check_services_replication_tools.py +10 -4
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/check_spark_jobs.py +1 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cli.py +4 -4
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/local_run.py +111 -23
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/logs.py +29 -7
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/mark_for_deployment.py +11 -3
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/mesh_status.py +1 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/remote_run.py +10 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/rollback.py +1 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/secret.py +2 -2
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/spark_run.py +5 -3
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/status.py +53 -27
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/validate.py +225 -4
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/autoscaling_schema.json +3 -2
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/eks_schema.json +23 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/smartstack_schema.json +12 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/utils.py +32 -19
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/check_orphans.py +1 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/get_running_task_allocation.py +1 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/instance/hpa_metrics_parser.py +3 -5
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/instance/kubernetes.py +60 -26
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes/application/controller_wrappers.py +23 -2
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes/remote_run.py +2 -2
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes_tools.py +42 -67
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/long_running_service_tools.py +8 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/metrics/metastatus_lib.py +0 -24
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/metrics/metrics_lib.py +12 -3
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/kubernetes_version.py +3 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/setup_kubernetes_job.py +43 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/setup_prometheus_adapter_config.py +82 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/setup_tron_namespace.py +2 -2
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/tron_tools.py +4 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/utils.py +27 -9
- {paasta_tools-1.30.7 → paasta_tools-1.35.4/paasta_tools.egg-info}/PKG-INFO +3 -3
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools.egg-info/SOURCES.txt +0 -5
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools.egg-info/requires.txt +1 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/requirements-minimal.txt +2 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/setup.py +1 -1
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_kubernetes_tools.py +546 -28
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_setup_kubernetes_job.py +106 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_setup_prometheus_adapter_config.py +65 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_tron_tools.py +1 -0
- paasta_tools-1.30.7/paasta_tools/frameworks/adhoc_scheduler.py +0 -71
- paasta_tools-1.30.7/paasta_tools/frameworks/native_scheduler.py +0 -652
- paasta_tools-1.30.7/paasta_tools/frameworks/task_store.py +0 -245
- paasta_tools-1.30.7/paasta_tools/mesos_maintenance.py +0 -848
- paasta_tools-1.30.7/paasta_tools/paasta_native_serviceinit.py +0 -21
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/LICENSE +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/MANIFEST.in +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/README.md +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/k8s_itests/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/k8s_itests/test_autoscaling.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/k8s_itests/utils.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/adhoc_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/api.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/client.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/settings.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/tweens/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/tweens/auth.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/tweens/profiling.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/tweens/request_logger.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/views/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/views/autoscaler.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/views/exception.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/views/flink.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/views/pause_autoscaler.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/views/remote_run.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/views/resources.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/views/service.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/api/views/version.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/apply_external_resources.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/autoscaling/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/autoscaling/forecasting.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/autoscaling/utils.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/broadcast_log_to_services.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cassandracluster_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/check_autoscaler_max_instances.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/check_flink_services_health.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/check_kubernetes_api.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/check_kubernetes_services_replication.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/check_oom_events.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cleanup_expired_autoscaling_overrides.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cleanup_tron_namespaces.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/authentication.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/autoscale.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/check.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/cook_image.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/get_image_version.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/info.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/itest.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/list.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/list_clusters.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/list_namespaces.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/security_check.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/fsm/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/fsm/autosuggest.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/fsm/template/README.md +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/fsm_cmd.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/service_schema.json +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/cli/schemas/tron_schema.json +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/clusterman.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/config_utils.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/create_paasta_playground.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/habitat_fixer.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/ide_helper.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/kill_bad_containers.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/mock_patch_checker.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/render_template.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/service_shard_remove.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/service_shard_update.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/shared_ip_check.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/delete_kubernetes_deployments.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/deployment_utils.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/docker_wrapper.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/docker_wrapper_imports.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/drain_lib.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/dump_locally_running_services.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/eks_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/envoy_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/firewall.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/firewall_logging.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/firewall_update.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/flink_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/flinkeks_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/frameworks/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/frameworks/constraints.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/frameworks/native_service_config.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/generate_all_deployments +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/generate_authenticating_services.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/generate_deployments_for_service.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/generate_services_file.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/generate_services_yaml.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/hacheck.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/instance/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/iptables.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kafkacluster_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes/application/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes/application/tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes/bin/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/list_kubernetes_service_instances.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/list_tron_namespaces.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mac_address.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/marathon_dashboard.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/cfg.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/cluster.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/exceptions.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/framework.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/log.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/master.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/mesos_file.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/parallel.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/slave.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/task.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/util.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos/zookeeper.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/mesos_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/metrics/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/monitoring/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/monitoring_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/monkrelaycluster_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/nrtsearchservice_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/oom_logger.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paasta_deploy_tron_jobs +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paasta_execute_docker_command.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paasta_service_config_loader.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/api/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/api/default_api.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/api/remote_run_api.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/api/resources_api.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/api/service_api.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/api_client.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/apis/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/configuration.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/exceptions.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/autoscaling_override.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/flink_config.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/flink_job.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/inline_object.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/inline_response202.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/inline_response403.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_status.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/remote_run_outcome.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/remote_run_start.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/remote_run_stop.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/remote_run_token.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/resource.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/resource_item.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/resource_value.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/model_utils.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/models/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/paastaapi/rest.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/prune_completed_pods.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/puppet_service_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/py.typed +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/remote_git.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/run-paasta-api-playground.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/secret_providers/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/secret_providers/vault.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/secret_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/setup_istio_mesh.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/setup_kubernetes_cr.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/setup_kubernetes_crd.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/slack.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/smartstack_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/spark_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/tron/__init__.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/tron/client.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/tron/tron_command_context.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/tron/tron_timeutils.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/yaml_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools.egg-info/dependency_links.txt +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools.egg-info/entry_points.txt +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools.egg-info/top_level.txt +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/pyproject.toml +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/setup.cfg +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_adhoc_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_apply_external_resources.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_async_utils.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_bounce_lib.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_check_flink_services_health.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_check_kubernetes_services_replication.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_check_oom_events.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_check_service_replication_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_check_spark_jobs.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_cleanup_kubernetes_jobs.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_config_utils.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_delete_kubernetes_deployments.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_deployment_utils.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_docker_wrapper.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_drain_lib.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_eks_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_envoy_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_firewall.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_firewall_logging.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_firewall_update.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_flink_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_flinkeks_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_generate_authenticating_services.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_generate_deployments_for_service.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_generate_services_file.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_generate_services_yaml.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_hacheck.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_iptables.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_list_kubernetes_service_instances.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_long_running_service_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_mac_address.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_mesos_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_monitoring_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_nrtsearchserviceseks_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_oom_logger.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_paasta_execute_docker_command.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_paasta_service_config_loader.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_puppet_service_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_remote_git.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_secret_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_setup_istio_mesh.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_setup_kubernetes_cr.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_slack.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_smartstack_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_spark_tools.py +0 -0
- {paasta_tools-1.30.7 → paasta_tools-1.35.4}/tests/test_utils.py +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: paasta-tools
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.35.4
|
|
4
4
|
Summary: Tools for Yelps SOA infrastructure
|
|
5
5
|
Author: Compute Infrastructure @ Yelp
|
|
6
6
|
Author-email: compute-infra@yelp.com
|
|
7
7
|
Provides: paasta_tools
|
|
8
|
-
Requires-Python: >=3.
|
|
8
|
+
Requires-Python: >=3.9.0
|
|
9
9
|
License-File: LICENSE
|
|
10
10
|
Requires-Dist: a-sync>=0.5.0
|
|
11
11
|
Requires-Dist: aiohttp>=3.5.4
|
|
@@ -34,7 +34,7 @@ Requires-Dist: ipaddress>=1.0.22
|
|
|
34
34
|
Requires-Dist: isodate>=0.7.2
|
|
35
35
|
Requires-Dist: jsonschema[format]
|
|
36
36
|
Requires-Dist: kazoo>=2.0.0
|
|
37
|
-
Requires-Dist: kubernetes<
|
|
37
|
+
Requires-Dist: kubernetes<35.0.0,>=29.0.0
|
|
38
38
|
Requires-Dist: ldap3
|
|
39
39
|
Requires-Dist: manhole
|
|
40
40
|
Requires-Dist: mypy-extensions>=0.3.0
|
|
@@ -1788,6 +1788,11 @@
|
|
|
1788
1788
|
"KubernetesVersion": {
|
|
1789
1789
|
"type": "object",
|
|
1790
1790
|
"properties": {
|
|
1791
|
+
"container_port": {
|
|
1792
|
+
"description": "Port the container is expecting to receive traffic on",
|
|
1793
|
+
"type": "integer",
|
|
1794
|
+
"format": "int32"
|
|
1795
|
+
},
|
|
1791
1796
|
"type": {
|
|
1792
1797
|
"description": "Type of version (ReplicaSet or ControllerRevision)",
|
|
1793
1798
|
"type": "string"
|
|
@@ -26,6 +26,7 @@ from typing import Mapping
|
|
|
26
26
|
from typing import Optional
|
|
27
27
|
|
|
28
28
|
import a_sync
|
|
29
|
+
from pyramid.request import Request
|
|
29
30
|
from pyramid.response import Response
|
|
30
31
|
from pyramid.view import view_config
|
|
31
32
|
|
|
@@ -139,7 +140,10 @@ def no_configuration_for_service_message(cluster, service, instance):
|
|
|
139
140
|
@view_config(
|
|
140
141
|
route_name="service.instance.status", request_method="GET", renderer="json"
|
|
141
142
|
)
|
|
142
|
-
def instance_status(
|
|
143
|
+
def instance_status(
|
|
144
|
+
request: Request,
|
|
145
|
+
) -> dict[str, Any]: # godspeed to anyone typing the retval here
|
|
146
|
+
# NOTE: swagger_data is populated by pyramid_swagger
|
|
143
147
|
service = request.swagger_data.get("service")
|
|
144
148
|
instance = request.swagger_data.get("instance")
|
|
145
149
|
verbose = request.swagger_data.get("verbose") or 0
|
|
@@ -353,7 +357,10 @@ def get_deployment_version(
|
|
|
353
357
|
request_method="GET",
|
|
354
358
|
renderer="json",
|
|
355
359
|
)
|
|
356
|
-
def instance_mesh_status(
|
|
360
|
+
def instance_mesh_status(
|
|
361
|
+
request: Request,
|
|
362
|
+
) -> dict[str, Any]: # godspeed to anyone typing the retval here
|
|
363
|
+
# NOTE: swagger_data is populated by pyramid_swagger
|
|
357
364
|
service = request.swagger_data.get("service")
|
|
358
365
|
instance = request.swagger_data.get("instance")
|
|
359
366
|
include_envoy = request.swagger_data.get("include_envoy")
|
|
@@ -3,9 +3,11 @@ import functools
|
|
|
3
3
|
import time
|
|
4
4
|
import weakref
|
|
5
5
|
from collections import defaultdict
|
|
6
|
+
from typing import Any
|
|
6
7
|
from typing import AsyncIterable
|
|
7
8
|
from typing import Awaitable
|
|
8
9
|
from typing import Callable
|
|
10
|
+
from typing import Coroutine
|
|
9
11
|
from typing import Dict
|
|
10
12
|
from typing import List
|
|
11
13
|
from typing import Optional
|
|
@@ -97,7 +99,8 @@ async def aiter_to_list(
|
|
|
97
99
|
def async_timeout(
|
|
98
100
|
seconds: int = 10,
|
|
99
101
|
) -> Callable[
|
|
100
|
-
[Callable[...,
|
|
102
|
+
[Callable[..., Coroutine[Any, Any, T]]],
|
|
103
|
+
Callable[..., Coroutine[Any, Any, T]], # wrapped # inner
|
|
101
104
|
]:
|
|
102
105
|
def outer(wrapped):
|
|
103
106
|
@functools.wraps(wrapped)
|
|
@@ -42,11 +42,14 @@ BounceMethodResult = TypedDict(
|
|
|
42
42
|
|
|
43
43
|
BounceMethod = Callable[
|
|
44
44
|
[
|
|
45
|
-
Arg(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
Arg(
|
|
46
|
+
BounceMethodConfigDict,
|
|
47
|
+
"new_config", # noqa: F821 # flake8 false-positive, these are not var references
|
|
48
|
+
),
|
|
49
|
+
Arg(bool, "new_app_running"), # noqa: F821 # flake8 false-positive
|
|
50
|
+
Arg(Collection, "happy_new_tasks"), # noqa: F821 # flake8 false-positive
|
|
51
|
+
Arg(Sequence, "old_non_draining_tasks"), # noqa: F821 # flake8 false-positive
|
|
52
|
+
DefaultArg(float, "margin_factor"), # noqa: F821 # flake8 false-positive
|
|
50
53
|
],
|
|
51
54
|
BounceMethodResult,
|
|
52
55
|
]
|
{paasta_tools-1.30.7 → paasta_tools-1.35.4}/paasta_tools/check_services_replication_tools.py
RENAMED
|
@@ -56,10 +56,16 @@ log = logging.getLogger(__name__)
|
|
|
56
56
|
|
|
57
57
|
CheckServiceReplication = Callable[
|
|
58
58
|
[
|
|
59
|
-
Arg(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
Arg(
|
|
60
|
+
InstanceConfig_T,
|
|
61
|
+
"instance_config", # noqa: F821 # flake8 false-positive, these are not var references
|
|
62
|
+
),
|
|
63
|
+
Arg(
|
|
64
|
+
Dict[str, Dict[str, List[V1Pod]]],
|
|
65
|
+
"pods_by_service_instance", # noqa: F821 # flake8 false-positive
|
|
66
|
+
),
|
|
67
|
+
Arg(Any, "replication_checker"), # noqa: F821 # flake8 false-positive
|
|
68
|
+
NamedArg(bool, "dry_run"), # noqa: F821 # flake8 false-positive
|
|
63
69
|
],
|
|
64
70
|
Optional[bool],
|
|
65
71
|
]
|
|
@@ -124,7 +124,7 @@ def format_framework(info):
|
|
|
124
124
|
def format_message_for_service(service, frameworks):
|
|
125
125
|
output = f"Found the following long-running Spark frameworks associated with service {service}.\n"
|
|
126
126
|
output += (
|
|
127
|
-
|
|
127
|
+
"Please check why they are still running and terminate if appropriate.\n\n"
|
|
128
128
|
)
|
|
129
129
|
output += "\n".join(format_framework(f) for f in frameworks)
|
|
130
130
|
return output
|
|
@@ -68,7 +68,7 @@ class PrintsHelpOnErrorArgumentParser(argparse.ArgumentParser):
|
|
|
68
68
|
def list_external_commands():
|
|
69
69
|
p = subprocess.check_output(["/bin/bash", "-p", "-c", "compgen -A command paasta-"])
|
|
70
70
|
lines = p.decode("utf-8").strip().split("\n")
|
|
71
|
-
return {
|
|
71
|
+
return {line.replace("paasta-", "", 1) for line in lines}
|
|
72
72
|
|
|
73
73
|
|
|
74
74
|
def calling_external_command():
|
|
@@ -132,10 +132,10 @@ PAASTA_SUBCOMMANDS = {
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
|
|
135
|
-
def get_argparser(commands=None):
|
|
135
|
+
def get_argparser(commands: list[str] | None = None) -> argparse.ArgumentParser:
|
|
136
136
|
"""Create and return argument parser for a set of subcommands.
|
|
137
137
|
|
|
138
|
-
:param commands:
|
|
138
|
+
:param commands: list[str] | None: If `commands` argument is `None`,
|
|
139
139
|
add full parsers for all subcommands, if `commands` is empty list -
|
|
140
140
|
add thin parsers for all subcommands, otherwise - add full parsers for
|
|
141
141
|
subcommands in the argument.
|
|
@@ -170,7 +170,7 @@ def get_argparser(commands=None):
|
|
|
170
170
|
|
|
171
171
|
# Adding a separate help subparser allows us to respond to "help" without --help
|
|
172
172
|
help_parser = subparsers.add_parser(
|
|
173
|
-
"help", help=
|
|
173
|
+
"help", help="run `paasta <subcommand> -h` for help"
|
|
174
174
|
)
|
|
175
175
|
help_parser.set_defaults(command=None)
|
|
176
176
|
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
|
+
import base64
|
|
15
16
|
import datetime
|
|
16
17
|
import json
|
|
17
18
|
import os
|
|
@@ -31,7 +32,9 @@ from urllib.parse import urlparse
|
|
|
31
32
|
import boto3
|
|
32
33
|
import requests
|
|
33
34
|
from docker import errors
|
|
35
|
+
from docker.api.client import APIClient
|
|
34
36
|
from mypy_extensions import TypedDict
|
|
37
|
+
from service_configuration_lib import read_service_configuration
|
|
35
38
|
|
|
36
39
|
from paasta_tools.adhoc_tools import get_default_interactive_config
|
|
37
40
|
from paasta_tools.cli.authentication import get_service_auth_token
|
|
@@ -612,26 +615,83 @@ class LostContainerException(Exception):
|
|
|
612
615
|
pass
|
|
613
616
|
|
|
614
617
|
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
618
|
+
class DockerAuthConfig(TypedDict):
|
|
619
|
+
username: str
|
|
620
|
+
password: str
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
def get_readonly_docker_registry_auth_config(
|
|
624
|
+
docker_url: str,
|
|
625
|
+
) -> DockerAuthConfig | None:
|
|
626
|
+
system_paasta_config = load_system_paasta_config()
|
|
627
|
+
config_path = system_paasta_config.get_readonly_docker_registry_auth_file()
|
|
628
|
+
|
|
629
|
+
try:
|
|
630
|
+
with open(config_path) as f:
|
|
631
|
+
docker_config = json.load(f)
|
|
632
|
+
except Exception:
|
|
633
|
+
print(
|
|
634
|
+
PaastaColors.yellow(
|
|
635
|
+
"Warning: unable to load read-only docker registry credentials."
|
|
636
|
+
),
|
|
637
|
+
file=sys.stderr,
|
|
638
|
+
)
|
|
639
|
+
# the best we can do is try to pull with whatever auth the user has configured locally
|
|
640
|
+
# i.e., root-owned docker config in /root/.docker/config.json
|
|
641
|
+
return None
|
|
642
|
+
registry = docker_url.split("/")[0]
|
|
643
|
+
|
|
644
|
+
# find matching auth config - our usual ro config will have at least two entries
|
|
645
|
+
# at the time this comment was written
|
|
646
|
+
auths = docker_config
|
|
647
|
+
for auth_url, auth_data in auths.items():
|
|
648
|
+
if registry in auth_url:
|
|
649
|
+
# Decode the base64 auth string if present
|
|
650
|
+
if "auth" in auth_data:
|
|
651
|
+
auth_string = base64.b64decode(auth_data["auth"]).decode("utf-8")
|
|
652
|
+
username, password = auth_string.split(":", 1)
|
|
653
|
+
return {"username": username, "password": password}
|
|
654
|
+
|
|
655
|
+
# we'll hit this for registries like docker-dev or extra-private internal registries
|
|
656
|
+
return None
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
def docker_pull_image(docker_client: APIClient, docker_url: str) -> None:
|
|
660
|
+
"""Pull an image using the docker-py library with read-only registry credentials"""
|
|
620
661
|
print(
|
|
621
|
-
"Please wait while the image (
|
|
622
|
-
% docker_url,
|
|
662
|
+
f"Please wait while the image ({docker_url}) is pulled (times out after 30m)...",
|
|
623
663
|
file=sys.stderr,
|
|
624
664
|
)
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
665
|
+
|
|
666
|
+
auth_config = get_readonly_docker_registry_auth_config(docker_url)
|
|
667
|
+
if not auth_config:
|
|
668
|
+
print(
|
|
669
|
+
PaastaColors.yellow(
|
|
670
|
+
"Warning: No read-only docker registry credentials found, attempting to pull without them."
|
|
671
|
+
),
|
|
672
|
+
file=sys.stderr,
|
|
673
|
+
)
|
|
674
|
+
|
|
675
|
+
try:
|
|
676
|
+
with Timeout(
|
|
677
|
+
seconds=1800,
|
|
678
|
+
error_message=f"Timed out pulling docker image from {docker_url}",
|
|
679
|
+
):
|
|
680
|
+
# this is slightly funky since pull() returns the output line-by-line, but as a dict
|
|
681
|
+
# ...that we then need to format back to the usual `docker pull` output
|
|
682
|
+
# :p
|
|
683
|
+
for line in docker_client.pull(
|
|
684
|
+
docker_url, auth_config=auth_config, stream=True, decode=True
|
|
685
|
+
):
|
|
686
|
+
# not all lines have an 'id' key :(
|
|
687
|
+
id_prefix = f"{line['id']}: " if "id" in line else ""
|
|
688
|
+
print(f"{id_prefix}{line['status']}", file=sys.stderr)
|
|
689
|
+
except Exception as e:
|
|
690
|
+
print(
|
|
691
|
+
f"\nPull failed. Error: {e}",
|
|
692
|
+
file=sys.stderr,
|
|
693
|
+
)
|
|
694
|
+
sys.exit(1)
|
|
635
695
|
|
|
636
696
|
|
|
637
697
|
def get_container_id(docker_client, container_name):
|
|
@@ -1226,7 +1286,7 @@ def configure_and_run_docker_container(
|
|
|
1226
1286
|
return 1
|
|
1227
1287
|
|
|
1228
1288
|
if pull_image:
|
|
1229
|
-
docker_pull_image(docker_url)
|
|
1289
|
+
docker_pull_image(docker_client, docker_url)
|
|
1230
1290
|
|
|
1231
1291
|
for volume in instance_config.get_volumes(
|
|
1232
1292
|
system_paasta_config.get_volumes(),
|
|
@@ -1302,10 +1362,40 @@ def docker_config_available():
|
|
|
1302
1362
|
)
|
|
1303
1363
|
|
|
1304
1364
|
|
|
1365
|
+
def should_reexec_as_root(
|
|
1366
|
+
service: str, skip_secrets: bool, action: str, soa_dir: str = DEFAULT_SOA_DIR
|
|
1367
|
+
) -> bool:
|
|
1368
|
+
# local-run can't pull secrets from Vault in prod without a root-owned token
|
|
1369
|
+
need_vault_token = not skip_secrets and action == "pull"
|
|
1370
|
+
|
|
1371
|
+
# there are some special teams with their own private docker registries and no ro creds
|
|
1372
|
+
# however, we don't know what registry is to be used without loading the service config
|
|
1373
|
+
service_info = read_service_configuration(service, soa_dir)
|
|
1374
|
+
# technically folks can set the standard registry as a value here, but atm no one is doing that :p
|
|
1375
|
+
registry_override = service_info.get("docker_registry")
|
|
1376
|
+
# note: we could also have a list of registries that have ro creds, but this seems fine for now
|
|
1377
|
+
uses_private_registry = (
|
|
1378
|
+
registry_override
|
|
1379
|
+
and registry_override
|
|
1380
|
+
in load_system_paasta_config().get_private_docker_registries()
|
|
1381
|
+
)
|
|
1382
|
+
need_docker_config = uses_private_registry and action == "pull"
|
|
1383
|
+
|
|
1384
|
+
return (need_vault_token or need_docker_config) and os.geteuid() != 0
|
|
1385
|
+
|
|
1386
|
+
|
|
1305
1387
|
def paasta_local_run(args):
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1388
|
+
service = figure_out_service_name(args, soa_dir=args.yelpsoa_config_root)
|
|
1389
|
+
if should_reexec_as_root(
|
|
1390
|
+
service, args.skip_secrets, args.action, args.yelpsoa_config_root
|
|
1391
|
+
):
|
|
1392
|
+
# XXX: we should re-architect this to not need sudo, but for now,
|
|
1393
|
+
# re-exec ourselves with sudo to get access to the paasta vault token
|
|
1394
|
+
# NOTE: once we do that, we can also remove the venv check above :)
|
|
1395
|
+
print(
|
|
1396
|
+
"Re-executing paasta local-run --pull with sudo for Vault/Docker registry access..."
|
|
1397
|
+
)
|
|
1398
|
+
os.execvp("sudo", ["sudo", "-H", "/usr/bin/paasta"] + sys.argv[1:])
|
|
1309
1399
|
if args.action == "build" and not makefile_responds_to("cook-image"):
|
|
1310
1400
|
print(
|
|
1311
1401
|
"A local Makefile with a 'cook-image' target is required for --build",
|
|
@@ -1332,8 +1422,6 @@ def paasta_local_run(args):
|
|
|
1332
1422
|
|
|
1333
1423
|
local_run_config = system_paasta_config.get_local_run_config()
|
|
1334
1424
|
|
|
1335
|
-
service = figure_out_service_name(args, soa_dir=args.yelpsoa_config_root)
|
|
1336
|
-
|
|
1337
1425
|
if args.cluster:
|
|
1338
1426
|
cluster = args.cluster
|
|
1339
1427
|
else:
|
|
@@ -30,6 +30,7 @@ from typing import Callable
|
|
|
30
30
|
from typing import ContextManager
|
|
31
31
|
from typing import Dict
|
|
32
32
|
from typing import Iterable
|
|
33
|
+
from typing import Iterator
|
|
33
34
|
from typing import List
|
|
34
35
|
from typing import Mapping
|
|
35
36
|
from typing import MutableSequence
|
|
@@ -52,10 +53,31 @@ try:
|
|
|
52
53
|
except ImportError:
|
|
53
54
|
scribereader = None
|
|
54
55
|
|
|
56
|
+
# NOTE: this is an internal-only package, so we won't be able to typecheck against it with mypy
|
|
57
|
+
# without these hacky inlined stubs
|
|
55
58
|
try:
|
|
56
59
|
from logreader.readers import S3LogsReader
|
|
60
|
+
|
|
61
|
+
s3reader_available = True
|
|
57
62
|
except ImportError:
|
|
58
|
-
|
|
63
|
+
s3reader_available = False
|
|
64
|
+
|
|
65
|
+
class S3LogsReader: # type: ignore[no-redef] # stub class for internal-only package
|
|
66
|
+
def __init__(self, superregion: str) -> None:
|
|
67
|
+
raise ImportError(
|
|
68
|
+
"logreader (internal Yelp package) is not available - unable to display logs."
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
def get_log_reader(
|
|
72
|
+
self,
|
|
73
|
+
log_name: str,
|
|
74
|
+
start_datetime: datetime.datetime,
|
|
75
|
+
end_datetime: datetime.datetime,
|
|
76
|
+
) -> Iterator[str]:
|
|
77
|
+
raise NotImplementedError(
|
|
78
|
+
"logreader (internal Yelp package) is not available - unable to display logs."
|
|
79
|
+
)
|
|
80
|
+
|
|
59
81
|
|
|
60
82
|
from pytimeparse.timeparse import timeparse
|
|
61
83
|
|
|
@@ -156,7 +178,7 @@ def add_subparser(subparsers) -> None:
|
|
|
156
178
|
dest="soa_dir",
|
|
157
179
|
metavar="SOA_DIR",
|
|
158
180
|
default=DEFAULT_SOA_DIR,
|
|
159
|
-
help=
|
|
181
|
+
help="Define a different soa config directory. Defaults to %(default)s.",
|
|
160
182
|
)
|
|
161
183
|
|
|
162
184
|
status_parser.add_argument(
|
|
@@ -1174,7 +1196,7 @@ class VectorLogsReader(LogReader):
|
|
|
1174
1196
|
) -> None:
|
|
1175
1197
|
super().__init__()
|
|
1176
1198
|
|
|
1177
|
-
if
|
|
1199
|
+
if not s3reader_available:
|
|
1178
1200
|
raise Exception("yelp_clog package must be available to use S3LogsReader")
|
|
1179
1201
|
|
|
1180
1202
|
self.cluster_map = cluster_map
|
|
@@ -1226,16 +1248,16 @@ class VectorLogsReader(LogReader):
|
|
|
1226
1248
|
except ValueError:
|
|
1227
1249
|
timestamp = pytz.utc.localize(datetime.datetime.min)
|
|
1228
1250
|
|
|
1229
|
-
|
|
1230
|
-
aggregated_logs.append(
|
|
1251
|
+
formatted_line = {"raw_line": line, "sort_key": timestamp}
|
|
1252
|
+
aggregated_logs.append(formatted_line)
|
|
1231
1253
|
|
|
1232
1254
|
aggregated_logs = list(
|
|
1233
1255
|
{line["raw_line"]: line for line in aggregated_logs}.values()
|
|
1234
1256
|
)
|
|
1235
1257
|
aggregated_logs.sort(key=lambda log_line: log_line["sort_key"])
|
|
1236
1258
|
|
|
1237
|
-
for
|
|
1238
|
-
print_log(
|
|
1259
|
+
for formatted_line in aggregated_logs:
|
|
1260
|
+
print_log(formatted_line["raw_line"], levels, raw_mode, strip_headers)
|
|
1239
1261
|
|
|
1240
1262
|
def tail_logs(
|
|
1241
1263
|
self,
|
|
@@ -1157,7 +1157,7 @@ class MarkForDeploymentProcess(RollbackSlackDeploymentProcess):
|
|
|
1157
1157
|
|
|
1158
1158
|
def on_enter_deploy_errored(self) -> None:
|
|
1159
1159
|
report_waiting_aborted(self.service, self.deploy_group)
|
|
1160
|
-
self.update_slack_status(
|
|
1160
|
+
self.update_slack_status("Deploy aborted, but it will still try to converge.")
|
|
1161
1161
|
self.send_manual_rollback_instructions()
|
|
1162
1162
|
if self.deploy_group_is_set_to_notify("notify_after_abort"):
|
|
1163
1163
|
self.ping_authors("Deploy errored")
|
|
@@ -1264,7 +1264,15 @@ class MarkForDeploymentProcess(RollbackSlackDeploymentProcess):
|
|
|
1264
1264
|
self.ping_authors()
|
|
1265
1265
|
|
|
1266
1266
|
def send_manual_rollback_instructions(self) -> None:
|
|
1267
|
-
|
|
1267
|
+
# NOTE: new deploy groups are not exactly a particularly frequent occurrence, but
|
|
1268
|
+
# we want to prevent sending messages that look like
|
|
1269
|
+
# `If you need to roll back manually, run: paasta rollback --service $S --deploy-group $G --commit None`
|
|
1270
|
+
# since that's not actually valid/actionable.
|
|
1271
|
+
# thus the seemingly out-of-nowhere old_git_sha check: new deploy groups won't have value set there.
|
|
1272
|
+
if (
|
|
1273
|
+
self.deployment_version != self.old_deployment_version
|
|
1274
|
+
and self.old_git_sha is not None
|
|
1275
|
+
):
|
|
1268
1276
|
extra_rollback_args = ""
|
|
1269
1277
|
if self.old_deployment_version.image_version:
|
|
1270
1278
|
extra_rollback_args = (
|
|
@@ -1317,7 +1325,7 @@ class MarkForDeploymentProcess(RollbackSlackDeploymentProcess):
|
|
|
1317
1325
|
inactive_button_texts = {
|
|
1318
1326
|
"forward": f"Continue Forward to {version_short_str} :arrow_forward:",
|
|
1319
1327
|
"complete": f"Complete deploy to {version_short_str} :white_check_mark:",
|
|
1320
|
-
"snooze":
|
|
1328
|
+
"snooze": "Reset countdown",
|
|
1321
1329
|
"enable_auto_rollbacks": "Enable auto rollbacks :eyes:",
|
|
1322
1330
|
"disable_auto_rollbacks": "Disable auto rollbacks :close_eyes_monkey:",
|
|
1323
1331
|
}
|
|
@@ -124,7 +124,7 @@ def paasta_mesh_status_on_api_endpoint(
|
|
|
124
124
|
[PaastaColors.red(f"Could not connect to API: {exc.__class__.__name__}")],
|
|
125
125
|
)
|
|
126
126
|
except Exception as e:
|
|
127
|
-
output = [PaastaColors.red(
|
|
127
|
+
output = [PaastaColors.red("Exception when talking to the API:")]
|
|
128
128
|
output.extend(str(e).split("\n"))
|
|
129
129
|
return 1, output
|
|
130
130
|
|
|
@@ -116,7 +116,7 @@ def paasta_remote_run_copy(
|
|
|
116
116
|
)
|
|
117
117
|
if poll_response.status != 200:
|
|
118
118
|
print(
|
|
119
|
-
|
|
119
|
+
"Unable to find running remote-run pod: have you started one with `paasta remote-run start`?"
|
|
120
120
|
)
|
|
121
121
|
return 1
|
|
122
122
|
|
|
@@ -295,11 +295,19 @@ def paasta_remote_run_stop(
|
|
|
295
295
|
|
|
296
296
|
|
|
297
297
|
def add_common_args_to_parser(parser: argparse.ArgumentParser):
|
|
298
|
+
def _validate_service_name(name: str) -> str:
|
|
299
|
+
if name not in _list_services_and_toolboxes():
|
|
300
|
+
raise ValueError(f"{name} is not a known service name")
|
|
301
|
+
return name
|
|
302
|
+
|
|
298
303
|
service_arg = parser.add_argument(
|
|
299
304
|
"-s",
|
|
300
305
|
"--service",
|
|
301
306
|
help="The name of the service you wish to inspect. Required.",
|
|
302
307
|
required=True,
|
|
308
|
+
# not using `choices` for validation to avoid the help text
|
|
309
|
+
# for the command being incredibly large
|
|
310
|
+
type=_validate_service_name,
|
|
303
311
|
)
|
|
304
312
|
service_arg.completer = lazy_choices_completer(_list_services_and_toolboxes) # type: ignore
|
|
305
313
|
instance_or_toolbox = parser.add_mutually_exclusive_group()
|
|
@@ -323,6 +331,7 @@ def add_common_args_to_parser(parser: argparse.ArgumentParser):
|
|
|
323
331
|
"--cluster",
|
|
324
332
|
help="The name of the cluster you wish to run your task on. Required.",
|
|
325
333
|
required=True,
|
|
334
|
+
choices=list_clusters(),
|
|
326
335
|
)
|
|
327
336
|
cluster_arg.completer = lazy_choices_completer(list_clusters) # type: ignore
|
|
328
337
|
|
|
@@ -340,7 +340,7 @@ def paasta_rollback(args: argparse.Namespace) -> int:
|
|
|
340
340
|
)
|
|
341
341
|
print(
|
|
342
342
|
PaastaColors.yellow(
|
|
343
|
-
|
|
343
|
+
"WARNING: Failing to do so means that Jenkins will redeploy the latest code on the next scheduled build!"
|
|
344
344
|
)
|
|
345
345
|
)
|
|
346
346
|
|
|
@@ -212,7 +212,7 @@ def _add_vault_auth_args(parser: argparse.ArgumentParser):
|
|
|
212
212
|
dest="vault_auth_method",
|
|
213
213
|
required=False,
|
|
214
214
|
default="token",
|
|
215
|
-
choices=["token", "
|
|
215
|
+
choices=["token", "okta"],
|
|
216
216
|
)
|
|
217
217
|
parser.add_argument(
|
|
218
218
|
"--vault-token-file",
|
|
@@ -456,7 +456,7 @@ def paasta_secret(args):
|
|
|
456
456
|
"vault_token_file": args.vault_token_file,
|
|
457
457
|
# best solution so far is to change the below string to "token",
|
|
458
458
|
# so that token file is picked up from argparse
|
|
459
|
-
"vault_auth_method": "
|
|
459
|
+
"vault_auth_method": "okta", # must use Okta to get 2FA push
|
|
460
460
|
},
|
|
461
461
|
)
|
|
462
462
|
secret_provider.write_secret(
|
|
@@ -897,20 +897,22 @@ def configure_and_run_docker_container(
|
|
|
897
897
|
)
|
|
898
898
|
) # type:ignore
|
|
899
899
|
environment.update(extra_driver_envs)
|
|
900
|
+
if "jupyter-lab" == args.cmd:
|
|
901
|
+
environment["SPARK_DRIVER_TYPE"] = "jupyter"
|
|
900
902
|
|
|
901
903
|
if args.use_service_auth_token:
|
|
902
904
|
environment["YELP_SVC_AUTHZ_TOKEN"] = get_service_auth_token()
|
|
903
905
|
|
|
904
906
|
webui_url = get_webui_url(spark_conf["spark.ui.port"])
|
|
905
|
-
webui_url_msg = PaastaColors.green(
|
|
907
|
+
webui_url_msg = PaastaColors.green("\nSpark monitoring URL: ") + f"{webui_url}\n"
|
|
906
908
|
|
|
907
909
|
docker_cmd = get_docker_cmd(args, instance_config, spark_conf_str)
|
|
908
910
|
if "history-server" in docker_cmd:
|
|
909
|
-
print(PaastaColors.green(
|
|
911
|
+
print(PaastaColors.green("\nSpark history server URL: ") + f"{webui_url}\n")
|
|
910
912
|
elif any(c in docker_cmd for c in ["pyspark", "spark-shell", "spark-submit"]):
|
|
911
913
|
grafana_url = get_grafana_url(spark_conf)
|
|
912
914
|
dashboard_url_msg = (
|
|
913
|
-
PaastaColors.green(
|
|
915
|
+
PaastaColors.green("\nGrafana dashboard: ") + f"{grafana_url}\n"
|
|
914
916
|
)
|
|
915
917
|
print(webui_url_msg)
|
|
916
918
|
print(dashboard_url_msg)
|