paasta-tools 1.12.1__tar.gz → 1.13.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {paasta-tools-1.12.1/paasta_tools.egg-info → paasta-tools-1.13.1}/PKG-INFO +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/__init__.py +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/api.py +20 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/client.py +8 -1
- paasta-tools-1.13.1/paasta_tools/api/tweens/__init__.py +6 -0
- paasta-tools-1.13.1/paasta_tools/api/tweens/auth.py +125 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/validate.py +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/autosuggest.py +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/check_orphans.py +2 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/render_template.py +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/timeouts_metrics_prom.py +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/envoy_tools.py +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_authenticating_services.py +1 -2
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_istio_mesh.py +2 -2
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_kubernetes_cr.py +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/tron/client.py +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/tron_tools.py +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/utils.py +1 -1
- paasta-tools-1.13.1/paasta_tools/yaml_tools.py +44 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1/paasta_tools.egg-info}/PKG-INFO +1 -1
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools.egg-info/SOURCES.txt +2 -0
- paasta-tools-1.12.1/paasta_tools/tron/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/MANIFEST.in +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/README.md +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/k8s_itests/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/k8s_itests/test_autoscaling.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/k8s_itests/utils.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/adhoc_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/api_docs/swagger.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/settings.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/tweens/profiling.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/tweens/request_logger.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/autoscaler.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/exception.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/flink.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/instance.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/pause_autoscaler.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/resources.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/service.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/version.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/apply_external_resources.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/async_utils.py +0 -0
- {paasta-tools-1.12.1/paasta_tools/api/tweens → paasta-tools-1.13.1/paasta_tools/autoscaling}/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/forecasting.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/utils.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/bounce_lib.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/broadcast_log_to_services.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cassandracluster_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_autoscaler_max_instances.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_flink_services_health.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_kubernetes_api.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_kubernetes_services_replication.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_oom_events.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_services_replication_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_spark_jobs.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cleanup_tron_namespaces.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cli.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/autoscale.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/check.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/cook_image.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/get_image_version.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/info.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/itest.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/list.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/list_clusters.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/list_namespaces.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/local_run.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/logs.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/mesh_status.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/remote_run.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/rollback.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/secret.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/security_check.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/spark_run.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/status.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/README.md +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm_cmd.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/eks_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/service_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/tron_schema.json +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/utils.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/clusterman.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/config_utils.py +0 -0
- {paasta-tools-1.12.1/paasta_tools/autoscaling → paasta-tools-1.13.1/paasta_tools/contrib}/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/create_paasta_playground.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/habitat_fixer.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/ide_helper.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/kill_bad_containers.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/mock_patch_checker.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/service_shard_remove.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/service_shard_update.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/shared_ip_check.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/delete_kubernetes_deployments.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/deployment_utils.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/docker_wrapper.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/docker_wrapper_imports.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/drain_lib.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/dump_locally_running_services.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/eks_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/firewall.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/firewall_logging.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/firewall_update.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/flink_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/flinkeks_tools.py +0 -0
- {paasta-tools-1.12.1/paasta_tools/contrib → paasta-tools-1.13.1/paasta_tools/frameworks}/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/frameworks/constraints.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/frameworks/native_scheduler.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/frameworks/native_service_config.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/frameworks/task_store.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_all_deployments +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_deployments_for_service.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_services_file.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_services_yaml.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/hacheck.py +0 -0
- {paasta-tools-1.12.1/paasta_tools/frameworks → paasta-tools-1.13.1/paasta_tools/instance}/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/instance/kubernetes.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/iptables.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kafkacluster_tools.py +0 -0
- {paasta-tools-1.12.1/paasta_tools/instance → paasta-tools-1.13.1/paasta_tools/kubernetes}/__init__.py +0 -0
- {paasta-tools-1.12.1/paasta_tools/kubernetes → paasta-tools-1.13.1/paasta_tools/kubernetes/application}/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes/application/tools.py +0 -0
- {paasta-tools-1.12.1/paasta_tools/kubernetes/application → paasta-tools-1.13.1/paasta_tools/kubernetes/bin}/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/list_kubernetes_service_instances.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/list_tron_namespaces.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/log_task_lifecycle_events.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/long_running_service_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mac_address.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/marathon_dashboard.py +0 -0
- {paasta-tools-1.12.1/paasta_tools/kubernetes/bin → paasta-tools-1.13.1/paasta_tools/mesos}/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/cfg.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/cluster.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/exceptions.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/framework.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/log.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/master.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/mesos_file.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/parallel.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/slave.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/task.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/util.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/zookeeper.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos_maintenance.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos_tools.py +0 -0
- {paasta-tools-1.12.1/paasta_tools/mesos → paasta-tools-1.13.1/paasta_tools/metrics}/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/metrics/metastatus_lib.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/metrics/metrics_lib.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/monitoring/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/monitoring_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/monkrelaycluster_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/nrtsearchservice_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/oom_logger.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paasta_deploy_tron_jobs +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paasta_execute_docker_command.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paasta_native_serviceinit.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paasta_remote_run.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paasta_service_config_loader.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api/default_api.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api/resources_api.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api/service_api.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api_client.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/apis/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/configuration.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/exceptions.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/flink_config.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/flink_job.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/inline_object.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/resource.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/resource_item.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/resource_value.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model_utils.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/models/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/rest.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/prune_completed_pods.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/puppet_service_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/py.typed +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/remote_git.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/run-paasta-api-playground.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/secret_providers/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/secret_providers/vault.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/secret_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_kubernetes_crd.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_kubernetes_job.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_tron_namespace.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/slack.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/smartstack_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/spark_tools.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
- {paasta-tools-1.12.1/paasta_tools/metrics → paasta-tools-1.13.1/paasta_tools/tron}/__init__.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/tron/tron_command_context.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/tron/tron_timeutils.py +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools.egg-info/dependency_links.txt +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools.egg-info/entry_points.txt +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools.egg-info/requires.txt +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools.egg-info/top_level.txt +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/pyproject.toml +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/requirements-minimal.txt +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/setup.cfg +0 -0
- {paasta-tools-1.12.1 → paasta-tools-1.13.1}/setup.py +0 -0
|
@@ -24,13 +24,14 @@ import sys
|
|
|
24
24
|
import manhole
|
|
25
25
|
import requests_cache
|
|
26
26
|
import service_configuration_lib
|
|
27
|
-
import yaml
|
|
28
27
|
from pyramid.config import Configurator
|
|
29
28
|
from wsgicors import CORS
|
|
30
29
|
|
|
31
30
|
import paasta_tools.api
|
|
32
31
|
from paasta_tools import kubernetes_tools
|
|
32
|
+
from paasta_tools import yaml_tools as yaml
|
|
33
33
|
from paasta_tools.api import settings
|
|
34
|
+
from paasta_tools.api.tweens import auth
|
|
34
35
|
from paasta_tools.api.tweens import profiling
|
|
35
36
|
from paasta_tools.api.tweens import request_logger
|
|
36
37
|
from paasta_tools.utils import load_system_paasta_config
|
|
@@ -79,6 +80,18 @@ def parse_paasta_api_args():
|
|
|
79
80
|
default=4,
|
|
80
81
|
help="Number of gunicorn workers to run",
|
|
81
82
|
)
|
|
83
|
+
parser.add_argument(
|
|
84
|
+
"--auth-endpoint",
|
|
85
|
+
type=str,
|
|
86
|
+
default="",
|
|
87
|
+
help="External API authorization endpoint",
|
|
88
|
+
)
|
|
89
|
+
parser.add_argument(
|
|
90
|
+
"--auth-enforce",
|
|
91
|
+
action="store_true",
|
|
92
|
+
default=False,
|
|
93
|
+
help="Enforce API authorization",
|
|
94
|
+
)
|
|
82
95
|
args = parser.parse_args()
|
|
83
96
|
return args
|
|
84
97
|
|
|
@@ -105,6 +118,7 @@ def make_app(global_config=None):
|
|
|
105
118
|
|
|
106
119
|
config.include("pyramid_swagger")
|
|
107
120
|
config.include(request_logger)
|
|
121
|
+
config.include(auth)
|
|
108
122
|
|
|
109
123
|
config.add_route(
|
|
110
124
|
"flink.service.instance.jobs", "/v1/flink/{service}/{instance}/jobs"
|
|
@@ -257,6 +271,11 @@ def main(argv=None):
|
|
|
257
271
|
if args.cluster:
|
|
258
272
|
os.environ["PAASTA_API_CLUSTER"] = args.cluster
|
|
259
273
|
|
|
274
|
+
if args.auth_endpoint:
|
|
275
|
+
os.environ["PAASTA_API_AUTH_ENDPOINT"] = args.auth_endpoint
|
|
276
|
+
if args.auth_enforce:
|
|
277
|
+
os.environ["PAASTA_API_AUTH_ENFORCE"] = "1"
|
|
278
|
+
|
|
260
279
|
gunicorn_args = [
|
|
261
280
|
"gunicorn",
|
|
262
281
|
"-w",
|
|
@@ -48,6 +48,7 @@ def get_paasta_oapi_client_by_url(
|
|
|
48
48
|
cert_file: Optional[str] = None,
|
|
49
49
|
key_file: Optional[str] = None,
|
|
50
50
|
ssl_ca_cert: Optional[str] = None,
|
|
51
|
+
auth_token: str = "",
|
|
51
52
|
) -> PaastaOApiClient:
|
|
52
53
|
server_variables = dict(scheme=parsed_url.scheme, host=parsed_url.netloc)
|
|
53
54
|
config = paastaapi.Configuration(
|
|
@@ -63,6 +64,9 @@ def get_paasta_oapi_client_by_url(
|
|
|
63
64
|
client.rest_client.pool_manager.connection_pool_kw[
|
|
64
65
|
"timeout"
|
|
65
66
|
] = load_system_paasta_config().get_api_client_timeout()
|
|
67
|
+
# SEC-19555: support auth in PaaSTA APIs
|
|
68
|
+
if auth_token:
|
|
69
|
+
client.set_default_header("Authorization", f"Bearer {auth_token}")
|
|
66
70
|
return PaastaOApiClient(
|
|
67
71
|
autoscaler=paastaapis.AutoscalerApi(client),
|
|
68
72
|
default=paastaapis.DefaultApi(client),
|
|
@@ -79,6 +83,7 @@ def get_paasta_oapi_client(
|
|
|
79
83
|
cluster: str = None,
|
|
80
84
|
system_paasta_config: SystemPaastaConfig = None,
|
|
81
85
|
http_res: bool = False,
|
|
86
|
+
auth_token: str = "",
|
|
82
87
|
) -> Optional[PaastaOApiClient]:
|
|
83
88
|
if not system_paasta_config:
|
|
84
89
|
system_paasta_config = load_system_paasta_config()
|
|
@@ -94,4 +99,6 @@ def get_paasta_oapi_client(
|
|
|
94
99
|
parsed = urlparse(api_endpoints[cluster])
|
|
95
100
|
cert_file = key_file = ssl_ca_cert = None
|
|
96
101
|
|
|
97
|
-
return get_paasta_oapi_client_by_url(
|
|
102
|
+
return get_paasta_oapi_client_by_url(
|
|
103
|
+
parsed, cert_file, key_file, ssl_ca_cert, auth_token
|
|
104
|
+
)
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# Copyright 2015-2016 Yelp Inc.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
import json
|
|
16
|
+
import logging
|
|
17
|
+
import os
|
|
18
|
+
from typing import NamedTuple
|
|
19
|
+
from typing import Optional
|
|
20
|
+
|
|
21
|
+
import cachetools.func
|
|
22
|
+
import pyramid
|
|
23
|
+
import requests
|
|
24
|
+
from pyramid.config import Configurator
|
|
25
|
+
from pyramid.httpexceptions import HTTPForbidden
|
|
26
|
+
from pyramid.registry import Registry
|
|
27
|
+
from pyramid.request import Request
|
|
28
|
+
from pyramid.response import Response
|
|
29
|
+
|
|
30
|
+
from paasta_tools.api.tweens import Handler
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
logger = logging.getLogger(__name__)
|
|
34
|
+
AUTH_CACHE_SIZE = 50000
|
|
35
|
+
AUTH_CACHE_TTL = 30 * 60
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class AuthorizationOutcome(NamedTuple):
|
|
39
|
+
authorized: bool
|
|
40
|
+
reason: str
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class AuthTweenFactory:
|
|
44
|
+
def __init__(self, handler: Handler, registry: Registry) -> None:
|
|
45
|
+
self.handler = handler
|
|
46
|
+
self.registry = registry
|
|
47
|
+
self.enforce = bool(os.getenv("PAASTA_API_AUTH_ENFORCE", ""))
|
|
48
|
+
self.endpoint = os.getenv("PAASTA_API_AUTH_ENDPOINT")
|
|
49
|
+
self.session = requests.Session()
|
|
50
|
+
|
|
51
|
+
def __call__(self, request: Request) -> Response:
|
|
52
|
+
"""
|
|
53
|
+
Extracts relevant metadata from request, and checks if it is authorized
|
|
54
|
+
"""
|
|
55
|
+
token = request.headers.get("Authorization", "").strip()
|
|
56
|
+
token = token.split()[-1] if token else "" # removes "Bearer" prefix
|
|
57
|
+
auth_outcome = self.is_request_authorized(
|
|
58
|
+
request.path,
|
|
59
|
+
token,
|
|
60
|
+
request.method,
|
|
61
|
+
request.swagger_data.get("service", None),
|
|
62
|
+
)
|
|
63
|
+
if self.enforce and not auth_outcome.authorized:
|
|
64
|
+
return HTTPForbidden(
|
|
65
|
+
body=json.dumps({"reason": auth_outcome.reason}),
|
|
66
|
+
headers={"X-Auth-Failure-Reason": auth_outcome.reason},
|
|
67
|
+
content_type="application/json",
|
|
68
|
+
charset="utf-8",
|
|
69
|
+
)
|
|
70
|
+
return self.handler(request)
|
|
71
|
+
|
|
72
|
+
@cachetools.func.ttl_cache(maxsize=AUTH_CACHE_SIZE, ttl=AUTH_CACHE_TTL)
|
|
73
|
+
def is_request_authorized(
|
|
74
|
+
self,
|
|
75
|
+
path: str,
|
|
76
|
+
token: str,
|
|
77
|
+
method: str,
|
|
78
|
+
service: Optional[str],
|
|
79
|
+
) -> AuthorizationOutcome:
|
|
80
|
+
"""Check if API request is authorized
|
|
81
|
+
|
|
82
|
+
:param str path: API path
|
|
83
|
+
:param str token: authentication token
|
|
84
|
+
:param str method: http method
|
|
85
|
+
:return: auth outcome
|
|
86
|
+
"""
|
|
87
|
+
try:
|
|
88
|
+
response = self.session.post(
|
|
89
|
+
url=self.endpoint,
|
|
90
|
+
json={
|
|
91
|
+
"input": {
|
|
92
|
+
"path": path,
|
|
93
|
+
"backend": "paasta",
|
|
94
|
+
"token": token,
|
|
95
|
+
"method": method,
|
|
96
|
+
"service": service,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
timeout=2,
|
|
100
|
+
).json()
|
|
101
|
+
except Exception as e:
|
|
102
|
+
logger.exception(f"Issue communicating with auth endpoint: {e}")
|
|
103
|
+
return AuthorizationOutcome(False, "Auth backend error")
|
|
104
|
+
|
|
105
|
+
auth_result_allowed = response.get("result", {}).get("allowed")
|
|
106
|
+
if auth_result_allowed is None:
|
|
107
|
+
return AuthorizationOutcome(False, "Malformed auth response")
|
|
108
|
+
|
|
109
|
+
if not auth_result_allowed:
|
|
110
|
+
reason = response["result"].get("reason", "Denied")
|
|
111
|
+
return AuthorizationOutcome(False, reason)
|
|
112
|
+
|
|
113
|
+
reason = response["result"].get("reason", "Ok")
|
|
114
|
+
return AuthorizationOutcome(True, reason)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def includeme(config: Configurator):
|
|
118
|
+
if os.getenv("PAASTA_API_AUTH_ENDPOINT"):
|
|
119
|
+
config.add_tween(
|
|
120
|
+
"paasta_tools.api.tweens.auth.AuthTweenFactory",
|
|
121
|
+
under=(
|
|
122
|
+
pyramid.tweens.INGRESS,
|
|
123
|
+
"paasta_tools.api.tweens.request_logger.request_logger_tween_factory",
|
|
124
|
+
),
|
|
125
|
+
)
|
|
@@ -33,7 +33,6 @@ from typing import Tuple
|
|
|
33
33
|
from typing import Union
|
|
34
34
|
|
|
35
35
|
import pytz
|
|
36
|
-
import yaml
|
|
37
36
|
from croniter import croniter
|
|
38
37
|
from jsonschema import Draft4Validator
|
|
39
38
|
from jsonschema import exceptions
|
|
@@ -45,6 +44,7 @@ from ruamel.yaml import SafeConstructor
|
|
|
45
44
|
from ruamel.yaml import YAML
|
|
46
45
|
from ruamel.yaml.comments import CommentedMap
|
|
47
46
|
|
|
47
|
+
from paasta_tools import yaml_tools as yaml
|
|
48
48
|
from paasta_tools.autoscaling.utils import MetricsProviderDict
|
|
49
49
|
from paasta_tools.cli.utils import failure
|
|
50
50
|
from paasta_tools.cli.utils import get_file_contents
|
|
@@ -19,10 +19,11 @@ from typing import Optional
|
|
|
19
19
|
from typing import Set
|
|
20
20
|
from typing import Tuple
|
|
21
21
|
|
|
22
|
-
import yaml
|
|
23
22
|
from kazoo.client import KazooClient
|
|
24
23
|
from kazoo.exceptions import NoNodeError
|
|
25
24
|
|
|
25
|
+
from paasta_tools import yaml_tools as yaml
|
|
26
|
+
|
|
26
27
|
logger = logging.getLogger("check_orphans")
|
|
27
28
|
|
|
28
29
|
PREFIX = "/smartstack/global/"
|
|
@@ -16,12 +16,12 @@ yelpsoaconfig_endpoint_timeouts_ms{path="/",upstream="mysql_read_security.main.e
|
|
|
16
16
|
"""
|
|
17
17
|
import os
|
|
18
18
|
|
|
19
|
-
import yaml
|
|
20
19
|
from prometheus_client import CollectorRegistry
|
|
21
20
|
from prometheus_client import Gauge
|
|
22
21
|
from prometheus_client import write_to_textfile
|
|
23
22
|
from prometheus_client.metrics import MetricWrapperBase
|
|
24
23
|
|
|
24
|
+
from paasta_tools import yaml_tools as yaml
|
|
25
25
|
from paasta_tools.utils import DEFAULT_SOA_DIR
|
|
26
26
|
|
|
27
27
|
PROM_OUTPUT_FILE = f"{DEFAULT_SOA_DIR}/.autotune_timeouts.prom"
|
|
@@ -30,10 +30,10 @@ from typing import Set
|
|
|
30
30
|
from typing import Tuple
|
|
31
31
|
|
|
32
32
|
import requests
|
|
33
|
-
import yaml
|
|
34
33
|
from kubernetes.client import V1Pod
|
|
35
34
|
from mypy_extensions import TypedDict
|
|
36
35
|
|
|
36
|
+
from paasta_tools import yaml_tools as yaml
|
|
37
37
|
from paasta_tools.utils import get_user_agent
|
|
38
38
|
|
|
39
39
|
|
{paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_authenticating_services.py
RENAMED
|
@@ -24,8 +24,7 @@ from typing import Dict
|
|
|
24
24
|
from typing import List
|
|
25
25
|
from typing import Set
|
|
26
26
|
|
|
27
|
-
import yaml
|
|
28
|
-
|
|
27
|
+
from paasta_tools import yaml_tools as yaml
|
|
29
28
|
from paasta_tools.utils import DEFAULT_SOA_DIR
|
|
30
29
|
from paasta_tools.utils import load_system_paasta_config
|
|
31
30
|
from paasta_tools.utils import write_json_configuration_file
|
|
@@ -32,8 +32,8 @@ from typing import Mapping
|
|
|
32
32
|
from typing import Set
|
|
33
33
|
|
|
34
34
|
import kubernetes.client as k8s
|
|
35
|
-
import yaml
|
|
36
35
|
|
|
36
|
+
from paasta_tools import yaml_tools as yaml
|
|
37
37
|
from paasta_tools.kubernetes_tools import ensure_namespace
|
|
38
38
|
from paasta_tools.kubernetes_tools import KubeClient
|
|
39
39
|
from paasta_tools.kubernetes_tools import limit_size_with_hash
|
|
@@ -99,7 +99,7 @@ def load_smartstack_namespaces(soa_dir: str = DEFAULT_SOA_DIR) -> Mapping:
|
|
|
99
99
|
continue
|
|
100
100
|
try:
|
|
101
101
|
with open(file_path) as f:
|
|
102
|
-
svc_namespaces = yaml.
|
|
102
|
+
svc_namespaces = yaml.safe_load(f)
|
|
103
103
|
for (ns, details) in svc_namespaces.items():
|
|
104
104
|
namespaces[f"{dir}.{ns}"] = details
|
|
105
105
|
except Exception as err:
|
|
@@ -28,9 +28,9 @@ from typing import Mapping
|
|
|
28
28
|
from typing import Optional
|
|
29
29
|
from typing import Sequence
|
|
30
30
|
|
|
31
|
-
import yaml
|
|
32
31
|
from kubernetes.client.exceptions import ApiException
|
|
33
32
|
|
|
33
|
+
from paasta_tools import yaml_tools as yaml
|
|
34
34
|
from paasta_tools.cli.utils import LONG_RUNNING_INSTANCE_TYPE_HANDLERS
|
|
35
35
|
from paasta_tools.flink_tools import get_flink_ingress_url_root
|
|
36
36
|
from paasta_tools.kubernetes_tools import create_custom_resource
|
|
@@ -25,13 +25,13 @@ from typing import Mapping
|
|
|
25
25
|
from typing import Tuple
|
|
26
26
|
from typing import Union
|
|
27
27
|
|
|
28
|
-
import yaml
|
|
29
28
|
from mypy_extensions import TypedDict
|
|
30
29
|
from service_configuration_lib import read_extra_service_information
|
|
31
30
|
from service_configuration_lib import read_yaml_file
|
|
32
31
|
from service_configuration_lib.spark_config import get_total_driver_memory_mb
|
|
33
32
|
from service_configuration_lib.spark_config import SparkConfBuilder
|
|
34
33
|
|
|
34
|
+
from paasta_tools import yaml_tools as yaml
|
|
35
35
|
from paasta_tools.mesos_tools import mesos_services_running_here
|
|
36
36
|
|
|
37
37
|
try:
|
|
@@ -74,7 +74,6 @@ import dateutil.tz
|
|
|
74
74
|
import ldap3
|
|
75
75
|
import requests_cache
|
|
76
76
|
import service_configuration_lib
|
|
77
|
-
import yaml
|
|
78
77
|
from docker import APIClient
|
|
79
78
|
from docker.utils import kwargs_from_env
|
|
80
79
|
from kazoo.client import KazooClient
|
|
@@ -83,6 +82,7 @@ from service_configuration_lib import read_extra_service_information
|
|
|
83
82
|
from service_configuration_lib import read_service_configuration
|
|
84
83
|
|
|
85
84
|
import paasta_tools.cli.fsm
|
|
85
|
+
from paasta_tools import yaml_tools as yaml
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
# DO NOT CHANGE SPACER, UNLESS YOU'RE PREPARED TO CHANGE ALL INSTANCES
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
|
|
3
|
+
import yaml
|
|
4
|
+
|
|
5
|
+
# try and catch both /opt/venvs/paasta-tools and ~/pg/paasta/.tox/py38-linux as if we're being run as an application,
|
|
6
|
+
# we likely want to fail on a potential slowdown rather than experience a performance regression
|
|
7
|
+
if "paasta" in sys.prefix:
|
|
8
|
+
from yaml import CSafeLoader as Loader
|
|
9
|
+
from yaml import CSafeDumper as Dumper
|
|
10
|
+
# but for the vanishingly few instances where folks add us as as dependency, we don't enforce that they use the
|
|
11
|
+
# C-accelerated Loader/Dumper
|
|
12
|
+
else:
|
|
13
|
+
try:
|
|
14
|
+
from yaml import CSafeLoader as Loader
|
|
15
|
+
from yaml import CSafeDumper as Dumper
|
|
16
|
+
except ImportError: # pragma: no cover
|
|
17
|
+
from yaml import SafeLoader as Loader # type: ignore
|
|
18
|
+
from yaml import SafeDumper as Dumper # type: ignore
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def dump(*args, **kwargs):
|
|
22
|
+
kwargs["Dumper"] = Dumper
|
|
23
|
+
return yaml.dump(*args, **kwargs)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def dump_all(*args, **kwargs):
|
|
27
|
+
kwargs["Dumper"] = Dumper
|
|
28
|
+
return yaml.dump_all(*args, **kwargs)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def load(*args, **kwargs):
|
|
32
|
+
kwargs["Loader"] = Loader
|
|
33
|
+
return yaml.load(*args, **kwargs)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def load_all(*args, **kwargs):
|
|
37
|
+
kwargs["Loader"] = Loader
|
|
38
|
+
return yaml.load_all(*args, **kwargs)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
safe_dump = dump
|
|
42
|
+
safe_dump_all = dump_all
|
|
43
|
+
safe_load = load
|
|
44
|
+
safe_load_all = load_all
|
|
@@ -87,6 +87,7 @@ paasta_tools/spark_tools.py
|
|
|
87
87
|
paasta_tools/synapse_srv_namespaces_fact.py
|
|
88
88
|
paasta_tools/tron_tools.py
|
|
89
89
|
paasta_tools/utils.py
|
|
90
|
+
paasta_tools/yaml_tools.py
|
|
90
91
|
paasta_tools.egg-info/PKG-INFO
|
|
91
92
|
paasta_tools.egg-info/SOURCES.txt
|
|
92
93
|
paasta_tools.egg-info/dependency_links.txt
|
|
@@ -99,6 +100,7 @@ paasta_tools/api/client.py
|
|
|
99
100
|
paasta_tools/api/settings.py
|
|
100
101
|
paasta_tools/api/api_docs/swagger.json
|
|
101
102
|
paasta_tools/api/tweens/__init__.py
|
|
103
|
+
paasta_tools/api/tweens/auth.py
|
|
102
104
|
paasta_tools/api/tweens/profiling.py
|
|
103
105
|
paasta_tools/api/tweens/request_logger.py
|
|
104
106
|
paasta_tools/api/views/__init__.py
|
|
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.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/autoscaling_service_lib.py
RENAMED
|
File without changes
|
|
File without changes
|
{paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/max_all_k8s_services.py
RENAMED
|
File without changes
|
{paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/pause_service_autoscaler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_kubernetes_services_replication.py
RENAMED
|
File without changes
|
|
File without changes
|
{paasta-tools-1.12.1 → paasta-tools-1.13.1}/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
|
{paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/pause_service_autoscaler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|