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.
Files changed (297) hide show
  1. {paasta-tools-1.12.1/paasta_tools.egg-info → paasta-tools-1.13.1}/PKG-INFO +1 -1
  2. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/__init__.py +1 -1
  3. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/api.py +20 -1
  4. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/client.py +8 -1
  5. paasta-tools-1.13.1/paasta_tools/api/tweens/__init__.py +6 -0
  6. paasta-tools-1.13.1/paasta_tools/api/tweens/auth.py +125 -0
  7. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/validate.py +1 -1
  8. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/autosuggest.py +1 -1
  9. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/check_orphans.py +2 -1
  10. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/render_template.py +1 -1
  11. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/timeouts_metrics_prom.py +1 -1
  12. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/envoy_tools.py +1 -1
  13. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_authenticating_services.py +1 -2
  14. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_istio_mesh.py +2 -2
  15. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_kubernetes_cr.py +1 -1
  16. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/tron/client.py +1 -1
  17. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/tron_tools.py +1 -1
  18. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/utils.py +1 -1
  19. paasta-tools-1.13.1/paasta_tools/yaml_tools.py +44 -0
  20. {paasta-tools-1.12.1 → paasta-tools-1.13.1/paasta_tools.egg-info}/PKG-INFO +1 -1
  21. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools.egg-info/SOURCES.txt +2 -0
  22. paasta-tools-1.12.1/paasta_tools/tron/__init__.py +0 -0
  23. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/MANIFEST.in +0 -0
  24. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/README.md +0 -0
  25. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/k8s_itests/__init__.py +0 -0
  26. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/k8s_itests/test_autoscaling.py +0 -0
  27. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/k8s_itests/utils.py +0 -0
  28. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/adhoc_tools.py +0 -0
  29. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/__init__.py +0 -0
  30. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/api_docs/swagger.json +0 -0
  31. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/settings.py +0 -0
  32. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/tweens/profiling.py +0 -0
  33. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/tweens/request_logger.py +0 -0
  34. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/__init__.py +0 -0
  35. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/autoscaler.py +0 -0
  36. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/exception.py +0 -0
  37. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/flink.py +0 -0
  38. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/instance.py +0 -0
  39. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/pause_autoscaler.py +0 -0
  40. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/resources.py +0 -0
  41. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/service.py +0 -0
  42. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/api/views/version.py +0 -0
  43. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/apply_external_resources.py +0 -0
  44. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/async_utils.py +0 -0
  45. {paasta-tools-1.12.1/paasta_tools/api/tweens → paasta-tools-1.13.1/paasta_tools/autoscaling}/__init__.py +0 -0
  46. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
  47. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/forecasting.py +0 -0
  48. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
  49. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
  50. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/autoscaling/utils.py +0 -0
  51. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/bounce_lib.py +0 -0
  52. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/broadcast_log_to_services.py +0 -0
  53. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cassandracluster_tools.py +0 -0
  54. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_autoscaler_max_instances.py +0 -0
  55. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
  56. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_flink_services_health.py +0 -0
  57. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_kubernetes_api.py +0 -0
  58. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_kubernetes_services_replication.py +0 -0
  59. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_oom_events.py +0 -0
  60. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_services_replication_tools.py +0 -0
  61. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/check_spark_jobs.py +0 -0
  62. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
  63. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
  64. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
  65. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cleanup_tron_namespaces.py +0 -0
  66. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/__init__.py +0 -0
  67. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cli.py +0 -0
  68. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/__init__.py +0 -0
  69. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/autoscale.py +0 -0
  70. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/check.py +0 -0
  71. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/cook_image.py +0 -0
  72. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
  73. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/get_image_version.py +0 -0
  74. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
  75. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/info.py +0 -0
  76. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/itest.py +0 -0
  77. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/list.py +0 -0
  78. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/list_clusters.py +0 -0
  79. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
  80. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/list_namespaces.py +0 -0
  81. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/local_run.py +0 -0
  82. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/logs.py +0 -0
  83. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
  84. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/mesh_status.py +0 -0
  85. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
  86. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
  87. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/remote_run.py +0 -0
  88. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/rollback.py +0 -0
  89. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/secret.py +0 -0
  90. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/security_check.py +0 -0
  91. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/spark_run.py +0 -0
  92. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
  93. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/status.py +0 -0
  94. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
  95. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/__init__.py +0 -0
  96. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/README.md +0 -0
  97. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
  98. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
  99. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
  100. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
  101. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
  102. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/fsm_cmd.py +0 -0
  103. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
  104. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
  105. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
  106. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
  107. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
  108. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
  109. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/eks_schema.json +0 -0
  110. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
  111. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
  112. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/service_schema.json +0 -0
  113. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
  114. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/schemas/tron_schema.json +0 -0
  115. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/cli/utils.py +0 -0
  116. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/clusterman.py +0 -0
  117. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/config_utils.py +0 -0
  118. {paasta-tools-1.12.1/paasta_tools/autoscaling → paasta-tools-1.13.1/paasta_tools/contrib}/__init__.py +0 -0
  119. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
  120. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
  121. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
  122. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/create_paasta_playground.py +0 -0
  123. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
  124. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
  125. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/habitat_fixer.py +0 -0
  126. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/ide_helper.py +0 -0
  127. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
  128. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
  129. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/kill_bad_containers.py +0 -0
  130. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
  131. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/mock_patch_checker.py +0 -0
  132. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
  133. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
  134. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/service_shard_remove.py +0 -0
  135. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/service_shard_update.py +0 -0
  136. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/contrib/shared_ip_check.py +0 -0
  137. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/delete_kubernetes_deployments.py +0 -0
  138. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/deployment_utils.py +0 -0
  139. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/docker_wrapper.py +0 -0
  140. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/docker_wrapper_imports.py +0 -0
  141. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/drain_lib.py +0 -0
  142. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/dump_locally_running_services.py +0 -0
  143. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/eks_tools.py +0 -0
  144. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/firewall.py +0 -0
  145. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/firewall_logging.py +0 -0
  146. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/firewall_update.py +0 -0
  147. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/flink_tools.py +0 -0
  148. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/flinkeks_tools.py +0 -0
  149. {paasta-tools-1.12.1/paasta_tools/contrib → paasta-tools-1.13.1/paasta_tools/frameworks}/__init__.py +0 -0
  150. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
  151. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/frameworks/constraints.py +0 -0
  152. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/frameworks/native_scheduler.py +0 -0
  153. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/frameworks/native_service_config.py +0 -0
  154. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/frameworks/task_store.py +0 -0
  155. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_all_deployments +0 -0
  156. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_deployments_for_service.py +0 -0
  157. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_services_file.py +0 -0
  158. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/generate_services_yaml.py +0 -0
  159. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/hacheck.py +0 -0
  160. {paasta-tools-1.12.1/paasta_tools/frameworks → paasta-tools-1.13.1/paasta_tools/instance}/__init__.py +0 -0
  161. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
  162. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/instance/kubernetes.py +0 -0
  163. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/iptables.py +0 -0
  164. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kafkacluster_tools.py +0 -0
  165. {paasta-tools-1.12.1/paasta_tools/instance → paasta-tools-1.13.1/paasta_tools/kubernetes}/__init__.py +0 -0
  166. {paasta-tools-1.12.1/paasta_tools/kubernetes → paasta-tools-1.13.1/paasta_tools/kubernetes/application}/__init__.py +0 -0
  167. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
  168. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes/application/tools.py +0 -0
  169. {paasta-tools-1.12.1/paasta_tools/kubernetes/application → paasta-tools-1.13.1/paasta_tools/kubernetes/bin}/__init__.py +0 -0
  170. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
  171. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
  172. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
  173. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/kubernetes_tools.py +0 -0
  174. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/list_kubernetes_service_instances.py +0 -0
  175. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/list_tron_namespaces.py +0 -0
  176. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/log_task_lifecycle_events.py +0 -0
  177. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/long_running_service_tools.py +0 -0
  178. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mac_address.py +0 -0
  179. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/marathon_dashboard.py +0 -0
  180. {paasta-tools-1.12.1/paasta_tools/kubernetes/bin → paasta-tools-1.13.1/paasta_tools/mesos}/__init__.py +0 -0
  181. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/cfg.py +0 -0
  182. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/cluster.py +0 -0
  183. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/exceptions.py +0 -0
  184. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/framework.py +0 -0
  185. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/log.py +0 -0
  186. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/master.py +0 -0
  187. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/mesos_file.py +0 -0
  188. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/parallel.py +0 -0
  189. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/slave.py +0 -0
  190. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/task.py +0 -0
  191. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/util.py +0 -0
  192. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos/zookeeper.py +0 -0
  193. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos_maintenance.py +0 -0
  194. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/mesos_tools.py +0 -0
  195. {paasta-tools-1.12.1/paasta_tools/mesos → paasta-tools-1.13.1/paasta_tools/metrics}/__init__.py +0 -0
  196. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/metrics/metastatus_lib.py +0 -0
  197. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/metrics/metrics_lib.py +0 -0
  198. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/monitoring/__init__.py +0 -0
  199. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
  200. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/monitoring_tools.py +0 -0
  201. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/monkrelaycluster_tools.py +0 -0
  202. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/nrtsearchservice_tools.py +0 -0
  203. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
  204. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/oom_logger.py +0 -0
  205. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paasta_deploy_tron_jobs +0 -0
  206. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paasta_execute_docker_command.py +0 -0
  207. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paasta_native_serviceinit.py +0 -0
  208. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paasta_remote_run.py +0 -0
  209. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paasta_service_config_loader.py +0 -0
  210. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/__init__.py +0 -0
  211. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api/__init__.py +0 -0
  212. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
  213. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api/default_api.py +0 -0
  214. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api/resources_api.py +0 -0
  215. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api/service_api.py +0 -0
  216. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/api_client.py +0 -0
  217. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/apis/__init__.py +0 -0
  218. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/configuration.py +0 -0
  219. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/exceptions.py +0 -0
  220. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/__init__.py +0 -0
  221. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
  222. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
  223. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
  224. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
  225. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
  226. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
  227. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
  228. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
  229. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/flink_config.py +0 -0
  230. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/flink_job.py +0 -0
  231. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
  232. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
  233. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
  234. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
  235. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/inline_object.py +0 -0
  236. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
  237. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
  238. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
  239. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
  240. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status.py +0 -0
  241. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
  242. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
  243. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
  244. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
  245. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
  246. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
  247. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
  248. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
  249. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
  250. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
  251. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
  252. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
  253. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
  254. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
  255. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
  256. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
  257. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
  258. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
  259. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/resource.py +0 -0
  260. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/resource_item.py +0 -0
  261. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/resource_value.py +0 -0
  262. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
  263. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
  264. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
  265. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
  266. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/model_utils.py +0 -0
  267. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/models/__init__.py +0 -0
  268. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/paastaapi/rest.py +0 -0
  269. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/prune_completed_pods.py +0 -0
  270. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/puppet_service_tools.py +0 -0
  271. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/py.typed +0 -0
  272. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/remote_git.py +0 -0
  273. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
  274. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/run-paasta-api-playground.py +0 -0
  275. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/secret_providers/__init__.py +0 -0
  276. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/secret_providers/vault.py +0 -0
  277. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/secret_tools.py +0 -0
  278. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_kubernetes_crd.py +0 -0
  279. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
  280. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_kubernetes_job.py +0 -0
  281. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
  282. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/setup_tron_namespace.py +0 -0
  283. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/slack.py +0 -0
  284. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/smartstack_tools.py +0 -0
  285. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/spark_tools.py +0 -0
  286. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
  287. {paasta-tools-1.12.1/paasta_tools/metrics → paasta-tools-1.13.1/paasta_tools/tron}/__init__.py +0 -0
  288. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/tron/tron_command_context.py +0 -0
  289. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools/tron/tron_timeutils.py +0 -0
  290. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools.egg-info/dependency_links.txt +0 -0
  291. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools.egg-info/entry_points.txt +0 -0
  292. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools.egg-info/requires.txt +0 -0
  293. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/paasta_tools.egg-info/top_level.txt +0 -0
  294. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/pyproject.toml +0 -0
  295. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/requirements-minimal.txt +0 -0
  296. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/setup.cfg +0 -0
  297. {paasta-tools-1.12.1 → paasta-tools-1.13.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: paasta-tools
3
- Version: 1.12.1
3
+ Version: 1.13.1
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Home-page: UNKNOWN
6
6
  Author: Compute Infrastructure @ Yelp
@@ -17,4 +17,4 @@
17
17
  # setup phase, the dependencies may not exist on disk yet.
18
18
  #
19
19
  # Don't bump version manually. See `make release` docs in ./Makefile
20
- __version__ = "1.12.1"
20
+ __version__ = "1.13.1"
@@ -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(parsed, cert_file, key_file, ssl_ca_cert)
102
+ return get_paasta_oapi_client_by_url(
103
+ parsed, cert_file, key_file, ssl_ca_cert, auth_token
104
+ )
@@ -0,0 +1,6 @@
1
+ from typing import Callable
2
+
3
+ from pyramid.request import Request
4
+ from pyramid.response import Response
5
+
6
+ Handler = Callable[[Request], Response]
@@ -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
@@ -14,7 +14,7 @@
14
14
  import os
15
15
  import random
16
16
 
17
- import yaml
17
+ from paasta_tools import yaml_tools as yaml
18
18
 
19
19
 
20
20
  def _get_smartstack_proxy_ports_from_file(root, file):
@@ -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/"
@@ -3,7 +3,7 @@ import argparse
3
3
  import os
4
4
  import re
5
5
 
6
- import yaml
6
+ from paasta_tools import yaml_tools as yaml
7
7
 
8
8
 
9
9
  def replace(s, values):
@@ -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
 
@@ -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.load(f, Loader=yaml.CSafeLoader)
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
@@ -15,8 +15,8 @@ from typing import Dict
15
15
  from urllib.parse import urljoin
16
16
 
17
17
  import requests
18
- import yaml
19
18
 
19
+ from paasta_tools import yaml_tools as yaml
20
20
  from paasta_tools.utils import get_user_agent
21
21
 
22
22
 
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: paasta-tools
3
- Version: 1.12.1
3
+ Version: 1.13.1
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Home-page: UNKNOWN
6
6
  Author: Compute Infrastructure @ Yelp
@@ -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