paasta-tools 1.30.13__tar.gz → 1.31.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. {paasta_tools-1.30.13/paasta_tools.egg-info → paasta_tools-1.31.0}/PKG-INFO +1 -1
  2. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/__init__.py +1 -1
  3. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/autoscaling_schema.json +3 -2
  4. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes_tools.py +19 -8
  5. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/long_running_service_tools.py +4 -1
  6. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/setup_prometheus_adapter_config.py +82 -0
  7. {paasta_tools-1.30.13 → paasta_tools-1.31.0/paasta_tools.egg-info}/PKG-INFO +1 -1
  8. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_kubernetes_tools.py +87 -1
  9. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_setup_prometheus_adapter_config.py +65 -0
  10. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/LICENSE +0 -0
  11. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/MANIFEST.in +0 -0
  12. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/README.md +0 -0
  13. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/k8s_itests/__init__.py +0 -0
  14. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/k8s_itests/test_autoscaling.py +0 -0
  15. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/k8s_itests/utils.py +0 -0
  16. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/adhoc_tools.py +0 -0
  17. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/__init__.py +0 -0
  18. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/api.py +0 -0
  19. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/api_docs/swagger.json +0 -0
  20. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/client.py +0 -0
  21. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/settings.py +0 -0
  22. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/tweens/__init__.py +0 -0
  23. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/tweens/auth.py +0 -0
  24. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/tweens/profiling.py +0 -0
  25. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/tweens/request_logger.py +0 -0
  26. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/views/__init__.py +0 -0
  27. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/views/autoscaler.py +0 -0
  28. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/views/exception.py +0 -0
  29. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/views/flink.py +0 -0
  30. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/views/instance.py +0 -0
  31. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/views/pause_autoscaler.py +0 -0
  32. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/views/remote_run.py +0 -0
  33. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/views/resources.py +0 -0
  34. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/views/service.py +0 -0
  35. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/api/views/version.py +0 -0
  36. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/apply_external_resources.py +0 -0
  37. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/async_utils.py +0 -0
  38. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/autoscaling/__init__.py +0 -0
  39. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
  40. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/autoscaling/forecasting.py +0 -0
  41. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
  42. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
  43. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/autoscaling/utils.py +0 -0
  44. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/bounce_lib.py +0 -0
  45. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/broadcast_log_to_services.py +0 -0
  46. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cassandracluster_tools.py +0 -0
  47. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/check_autoscaler_max_instances.py +0 -0
  48. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
  49. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/check_flink_services_health.py +0 -0
  50. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/check_kubernetes_api.py +0 -0
  51. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/check_kubernetes_services_replication.py +0 -0
  52. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/check_oom_events.py +0 -0
  53. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/check_services_replication_tools.py +0 -0
  54. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/check_spark_jobs.py +0 -0
  55. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cleanup_expired_autoscaling_overrides.py +0 -0
  56. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
  57. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
  58. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
  59. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cleanup_tron_namespaces.py +0 -0
  60. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/__init__.py +0 -0
  61. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/authentication.py +0 -0
  62. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cli.py +0 -0
  63. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/__init__.py +0 -0
  64. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/autoscale.py +0 -0
  65. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/check.py +0 -0
  66. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/cook_image.py +0 -0
  67. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
  68. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/get_image_version.py +0 -0
  69. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
  70. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/info.py +0 -0
  71. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/itest.py +0 -0
  72. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/list.py +0 -0
  73. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/list_clusters.py +0 -0
  74. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
  75. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/list_namespaces.py +0 -0
  76. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/local_run.py +0 -0
  77. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/logs.py +0 -0
  78. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
  79. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/mesh_status.py +0 -0
  80. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
  81. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
  82. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/remote_run.py +0 -0
  83. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/rollback.py +0 -0
  84. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/secret.py +0 -0
  85. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/security_check.py +0 -0
  86. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/spark_run.py +0 -0
  87. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
  88. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/status.py +0 -0
  89. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/validate.py +0 -0
  90. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
  91. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/fsm/__init__.py +0 -0
  92. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/fsm/autosuggest.py +0 -0
  93. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/fsm/template/README.md +0 -0
  94. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
  95. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
  96. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
  97. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
  98. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
  99. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/fsm_cmd.py +0 -0
  100. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
  101. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
  102. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
  103. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
  104. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
  105. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/eks_schema.json +0 -0
  106. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
  107. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
  108. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/service_schema.json +0 -0
  109. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
  110. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/schemas/tron_schema.json +0 -0
  111. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/cli/utils.py +0 -0
  112. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/clusterman.py +0 -0
  113. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/config_utils.py +0 -0
  114. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/__init__.py +0 -0
  115. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
  116. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
  117. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/check_orphans.py +0 -0
  118. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
  119. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/create_paasta_playground.py +0 -0
  120. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
  121. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
  122. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/habitat_fixer.py +0 -0
  123. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/ide_helper.py +0 -0
  124. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
  125. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
  126. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/kill_bad_containers.py +0 -0
  127. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
  128. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/mock_patch_checker.py +0 -0
  129. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
  130. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/render_template.py +0 -0
  131. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
  132. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/service_shard_remove.py +0 -0
  133. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/service_shard_update.py +0 -0
  134. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/shared_ip_check.py +0 -0
  135. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
  136. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/delete_kubernetes_deployments.py +0 -0
  137. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/deployment_utils.py +0 -0
  138. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/docker_wrapper.py +0 -0
  139. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/docker_wrapper_imports.py +0 -0
  140. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/drain_lib.py +0 -0
  141. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/dump_locally_running_services.py +0 -0
  142. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/eks_tools.py +0 -0
  143. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/envoy_tools.py +0 -0
  144. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/firewall.py +0 -0
  145. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/firewall_logging.py +0 -0
  146. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/firewall_update.py +0 -0
  147. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/flink_tools.py +0 -0
  148. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/flinkeks_tools.py +0 -0
  149. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/frameworks/__init__.py +0 -0
  150. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/frameworks/constraints.py +0 -0
  151. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/frameworks/native_service_config.py +0 -0
  152. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/generate_all_deployments +0 -0
  153. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/generate_authenticating_services.py +0 -0
  154. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/generate_deployments_for_service.py +0 -0
  155. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/generate_services_file.py +0 -0
  156. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/generate_services_yaml.py +0 -0
  157. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/hacheck.py +0 -0
  158. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/instance/__init__.py +0 -0
  159. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
  160. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/instance/kubernetes.py +0 -0
  161. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/iptables.py +0 -0
  162. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kafkacluster_tools.py +0 -0
  163. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes/__init__.py +0 -0
  164. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes/application/__init__.py +0 -0
  165. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
  166. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes/application/tools.py +0 -0
  167. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes/bin/__init__.py +0 -0
  168. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
  169. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py +0 -0
  170. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
  171. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
  172. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/kubernetes/remote_run.py +0 -0
  173. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/list_kubernetes_service_instances.py +0 -0
  174. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/list_tron_namespaces.py +0 -0
  175. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mac_address.py +0 -0
  176. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/marathon_dashboard.py +0 -0
  177. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/__init__.py +0 -0
  178. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/cfg.py +0 -0
  179. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/cluster.py +0 -0
  180. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/exceptions.py +0 -0
  181. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/framework.py +0 -0
  182. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/log.py +0 -0
  183. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/master.py +0 -0
  184. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/mesos_file.py +0 -0
  185. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/parallel.py +0 -0
  186. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/slave.py +0 -0
  187. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/task.py +0 -0
  188. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/util.py +0 -0
  189. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos/zookeeper.py +0 -0
  190. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/mesos_tools.py +0 -0
  191. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/metrics/__init__.py +0 -0
  192. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/metrics/metastatus_lib.py +0 -0
  193. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/metrics/metrics_lib.py +0 -0
  194. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/monitoring/__init__.py +0 -0
  195. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
  196. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/monitoring_tools.py +0 -0
  197. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/monkrelaycluster_tools.py +0 -0
  198. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/nrtsearchservice_tools.py +0 -0
  199. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
  200. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/oom_logger.py +0 -0
  201. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paasta_deploy_tron_jobs +0 -0
  202. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paasta_execute_docker_command.py +0 -0
  203. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paasta_service_config_loader.py +0 -0
  204. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/__init__.py +0 -0
  205. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/api/__init__.py +0 -0
  206. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
  207. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/api/default_api.py +0 -0
  208. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/api/remote_run_api.py +0 -0
  209. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/api/resources_api.py +0 -0
  210. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/api/service_api.py +0 -0
  211. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/api_client.py +0 -0
  212. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/apis/__init__.py +0 -0
  213. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/configuration.py +0 -0
  214. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/exceptions.py +0 -0
  215. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/__init__.py +0 -0
  216. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
  217. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
  218. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/autoscaling_override.py +0 -0
  219. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
  220. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
  221. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
  222. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
  223. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
  224. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
  225. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/flink_config.py +0 -0
  226. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/flink_job.py +0 -0
  227. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
  228. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
  229. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
  230. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
  231. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/inline_object.py +0 -0
  232. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
  233. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
  234. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/inline_response202.py +0 -0
  235. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/inline_response403.py +0 -0
  236. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
  237. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
  238. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_status.py +0 -0
  239. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
  240. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
  241. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
  242. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
  243. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
  244. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
  245. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
  246. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
  247. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
  248. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
  249. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
  250. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
  251. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
  252. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
  253. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
  254. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
  255. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
  256. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
  257. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/remote_run_outcome.py +0 -0
  258. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/remote_run_start.py +0 -0
  259. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/remote_run_stop.py +0 -0
  260. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/remote_run_token.py +0 -0
  261. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/resource.py +0 -0
  262. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/resource_item.py +0 -0
  263. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/resource_value.py +0 -0
  264. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
  265. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
  266. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
  267. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
  268. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/model_utils.py +0 -0
  269. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/models/__init__.py +0 -0
  270. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/paastaapi/rest.py +0 -0
  271. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/prune_completed_pods.py +0 -0
  272. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/puppet_service_tools.py +0 -0
  273. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/py.typed +0 -0
  274. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/remote_git.py +0 -0
  275. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
  276. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/run-paasta-api-playground.py +0 -0
  277. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/secret_providers/__init__.py +0 -0
  278. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/secret_providers/vault.py +0 -0
  279. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/secret_tools.py +0 -0
  280. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/setup_istio_mesh.py +0 -0
  281. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/setup_kubernetes_cr.py +0 -0
  282. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/setup_kubernetes_crd.py +0 -0
  283. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
  284. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/setup_kubernetes_job.py +0 -0
  285. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/setup_tron_namespace.py +0 -0
  286. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/slack.py +0 -0
  287. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/smartstack_tools.py +0 -0
  288. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/spark_tools.py +0 -0
  289. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
  290. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/tron/__init__.py +0 -0
  291. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/tron/client.py +0 -0
  292. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/tron/tron_command_context.py +0 -0
  293. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/tron/tron_timeutils.py +0 -0
  294. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/tron_tools.py +0 -0
  295. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/utils.py +0 -0
  296. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools/yaml_tools.py +0 -0
  297. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools.egg-info/SOURCES.txt +0 -0
  298. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools.egg-info/dependency_links.txt +0 -0
  299. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools.egg-info/entry_points.txt +0 -0
  300. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools.egg-info/requires.txt +0 -0
  301. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/paasta_tools.egg-info/top_level.txt +0 -0
  302. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/pyproject.toml +0 -0
  303. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/requirements-minimal.txt +0 -0
  304. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/setup.cfg +0 -0
  305. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/setup.py +0 -0
  306. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_adhoc_tools.py +0 -0
  307. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_apply_external_resources.py +0 -0
  308. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_async_utils.py +0 -0
  309. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_bounce_lib.py +0 -0
  310. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_check_flink_services_health.py +0 -0
  311. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_check_kubernetes_services_replication.py +0 -0
  312. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_check_oom_events.py +0 -0
  313. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_check_service_replication_tools.py +0 -0
  314. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_check_spark_jobs.py +0 -0
  315. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_cleanup_kubernetes_jobs.py +0 -0
  316. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_config_utils.py +0 -0
  317. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_delete_kubernetes_deployments.py +0 -0
  318. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_deployment_utils.py +0 -0
  319. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_docker_wrapper.py +0 -0
  320. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_drain_lib.py +0 -0
  321. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_eks_tools.py +0 -0
  322. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_envoy_tools.py +0 -0
  323. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_firewall.py +0 -0
  324. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_firewall_logging.py +0 -0
  325. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_firewall_update.py +0 -0
  326. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_flink_tools.py +0 -0
  327. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_flinkeks_tools.py +0 -0
  328. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_generate_authenticating_services.py +0 -0
  329. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_generate_deployments_for_service.py +0 -0
  330. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_generate_services_file.py +0 -0
  331. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_generate_services_yaml.py +0 -0
  332. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_hacheck.py +0 -0
  333. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_iptables.py +0 -0
  334. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_list_kubernetes_service_instances.py +0 -0
  335. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_long_running_service_tools.py +0 -0
  336. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_mac_address.py +0 -0
  337. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_mesos_tools.py +0 -0
  338. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_monitoring_tools.py +0 -0
  339. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_nrtsearchserviceseks_tools.py +0 -0
  340. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_oom_logger.py +0 -0
  341. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_paasta_execute_docker_command.py +0 -0
  342. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_paasta_service_config_loader.py +0 -0
  343. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_puppet_service_tools.py +0 -0
  344. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_remote_git.py +0 -0
  345. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_secret_tools.py +0 -0
  346. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_setup_istio_mesh.py +0 -0
  347. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_setup_kubernetes_cr.py +0 -0
  348. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_setup_kubernetes_job.py +0 -0
  349. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_slack.py +0 -0
  350. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_smartstack_tools.py +0 -0
  351. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_spark_tools.py +0 -0
  352. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_tron_tools.py +0 -0
  353. {paasta_tools-1.30.13 → paasta_tools-1.31.0}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: paasta-tools
3
- Version: 1.30.13
3
+ Version: 1.31.0
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Author: Compute Infrastructure @ Yelp
6
6
  Author-email: compute-infra@yelp.com
@@ -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.30.13"
20
+ __version__ = "1.31.0"
@@ -10,8 +10,9 @@
10
10
  "cpu",
11
11
  "piscina",
12
12
  "gunicorn",
13
- "arbitrary_promql",
14
- "active-requests"
13
+ "active-requests",
14
+ "arbitrary-promql",
15
+ "worker-load"
15
16
  ]
16
17
  },
17
18
  "decision_policy": {
@@ -151,6 +151,7 @@ from paasta_tools.long_running_service_tools import METRICS_PROVIDER_PISCINA
151
151
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_PROMQL
152
152
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_UWSGI
153
153
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_UWSGI_V2
154
+ from paasta_tools.long_running_service_tools import METRICS_PROVIDER_WORKER_LOAD
154
155
  from paasta_tools.long_running_service_tools import ServiceNamespaceConfig
155
156
  from paasta_tools.secret_tools import get_secret_name_from_ref
156
157
  from paasta_tools.secret_tools import is_secret_ref
@@ -874,7 +875,10 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
874
875
  ),
875
876
  ),
876
877
  )
877
- elif provider["type"] == METRICS_PROVIDER_UWSGI_V2:
878
+ elif provider["type"] in {
879
+ METRICS_PROVIDER_UWSGI_V2,
880
+ METRICS_PROVIDER_WORKER_LOAD,
881
+ }:
878
882
  return V2MetricSpec(
879
883
  type="Object",
880
884
  object=V2ObjectMetricSource(
@@ -2445,22 +2449,29 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
2445
2449
 
2446
2450
  # not all services use autoscaling, so we label those that do in order to have
2447
2451
  # prometheus selectively discover/scrape them
2448
- if self.should_use_metrics_provider(METRICS_PROVIDER_UWSGI):
2449
- # UWSGI no longer needs a label to indicate it needs to be scraped as all pods are checked for the uwsgi stats port by our centralized uwsgi-exporter
2450
- # But we do still need deploy_group for relabeling properly
2451
- # this should probably eventually be made into a default label,
2452
+ metrics_providers_needing_deploy_group = [
2453
+ METRICS_PROVIDER_UWSGI,
2454
+ METRICS_PROVIDER_PISCINA,
2455
+ METRICS_PROVIDER_GUNICORN,
2456
+ METRICS_PROVIDER_WORKER_LOAD,
2457
+ ]
2458
+
2459
+ if any(
2460
+ self.should_use_metrics_provider(provider)
2461
+ for provider in metrics_providers_needing_deploy_group
2462
+ ):
2463
+ # Deploy group is needed for Prometheus relabeling properly
2464
+ # This should probably eventually be made into a default label,
2452
2465
  # but for now we're fine with it being behind these feature toggles.
2453
- # ideally, we'd also have the docker image here for ease-of-use
2466
+ # Ideally, we'd also have the docker image here for ease-of-use
2454
2467
  # in Prometheus relabeling, but that information is over the
2455
2468
  # character limit for k8s labels (63 chars)
2456
2469
  labels["paasta.yelp.com/deploy_group"] = self.get_deploy_group()
2457
2470
 
2458
2471
  if self.should_use_metrics_provider(METRICS_PROVIDER_PISCINA):
2459
- labels["paasta.yelp.com/deploy_group"] = self.get_deploy_group()
2460
2472
  labels["paasta.yelp.com/scrape_piscina_prometheus"] = "true"
2461
2473
 
2462
2474
  if self.should_use_metrics_provider(METRICS_PROVIDER_GUNICORN):
2463
- labels["paasta.yelp.com/deploy_group"] = self.get_deploy_group()
2464
2475
  labels["paasta.yelp.com/scrape_gunicorn_prometheus"] = "true"
2465
2476
 
2466
2477
  # the default AWS LB Controller behavior is to enable this by-namespace
@@ -41,6 +41,7 @@ DEFAULT_ACTIVE_REQUESTS_AUTOSCALING_MOVING_AVERAGE_WINDOW = 1800
41
41
  DEFAULT_UWSGI_AUTOSCALING_MOVING_AVERAGE_WINDOW = 1800
42
42
  DEFAULT_PISCINA_AUTOSCALING_MOVING_AVERAGE_WINDOW = 1800
43
43
  DEFAULT_GUNICORN_AUTOSCALING_MOVING_AVERAGE_WINDOW = 1800
44
+ DEFAULT_WORKER_LOAD_AUTOSCALING_MOVING_AVERAGE_WINDOW = 1800
44
45
 
45
46
  METRICS_PROVIDER_CPU = "cpu"
46
47
  METRICS_PROVIDER_UWSGI = "uwsgi"
@@ -48,7 +49,8 @@ METRICS_PROVIDER_UWSGI_V2 = "uwsgi-v2"
48
49
  METRICS_PROVIDER_GUNICORN = "gunicorn"
49
50
  METRICS_PROVIDER_PISCINA = "piscina"
50
51
  METRICS_PROVIDER_ACTIVE_REQUESTS = "active-requests"
51
- METRICS_PROVIDER_PROMQL = "arbitrary_promql"
52
+ METRICS_PROVIDER_PROMQL = "arbitrary-promql"
53
+ METRICS_PROVIDER_WORKER_LOAD = "worker-load"
52
54
 
53
55
  ALL_METRICS_PROVIDERS = [
54
56
  METRICS_PROVIDER_CPU,
@@ -58,6 +60,7 @@ ALL_METRICS_PROVIDERS = [
58
60
  METRICS_PROVIDER_PISCINA,
59
61
  METRICS_PROVIDER_ACTIVE_REQUESTS,
60
62
  METRICS_PROVIDER_PROMQL,
63
+ METRICS_PROVIDER_WORKER_LOAD,
61
64
  ]
62
65
 
63
66
 
@@ -53,6 +53,9 @@ from paasta_tools.long_running_service_tools import (
53
53
  from paasta_tools.long_running_service_tools import (
54
54
  DEFAULT_UWSGI_AUTOSCALING_MOVING_AVERAGE_WINDOW,
55
55
  )
56
+ from paasta_tools.long_running_service_tools import (
57
+ DEFAULT_WORKER_LOAD_AUTOSCALING_MOVING_AVERAGE_WINDOW,
58
+ )
56
59
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_ACTIVE_REQUESTS
57
60
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_CPU
58
61
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_GUNICORN
@@ -60,6 +63,7 @@ from paasta_tools.long_running_service_tools import METRICS_PROVIDER_PISCINA
60
63
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_PROMQL
61
64
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_UWSGI
62
65
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_UWSGI_V2
66
+ from paasta_tools.long_running_service_tools import METRICS_PROVIDER_WORKER_LOAD
63
67
  from paasta_tools.paasta_service_config_loader import PaastaServiceConfigLoader
64
68
  from paasta_tools.utils import DEFAULT_SOA_DIR
65
69
  from paasta_tools.utils import get_services_for_cluster
@@ -214,6 +218,10 @@ def create_instance_scaling_rule(
214
218
  return create_instance_uwsgi_v2_scaling_rule(
215
219
  service, instance_config, metrics_provider_config, paasta_cluster
216
220
  )
221
+ if metrics_provider_config["type"] == METRICS_PROVIDER_WORKER_LOAD:
222
+ return create_instance_worker_load_scaling_rule(
223
+ service, instance_config, metrics_provider_config, paasta_cluster
224
+ )
217
225
  if metrics_provider_config["type"] == METRICS_PROVIDER_PISCINA:
218
226
  return create_instance_piscina_scaling_rule(
219
227
  service, instance_config, metrics_provider_config, paasta_cluster
@@ -523,6 +531,80 @@ def create_instance_uwsgi_v2_scaling_rule(
523
531
  }
524
532
 
525
533
 
534
+ def create_instance_worker_load_scaling_rule(
535
+ service: str,
536
+ instance_config: KubernetesDeploymentConfig,
537
+ metrics_provider_config: MetricsProviderDict,
538
+ paasta_cluster: str,
539
+ ) -> PrometheusAdapterRule:
540
+ """
541
+ Creates a Prometheus adapter rule config for a given service instance using generic worker_busy metric.
542
+ """
543
+ instance = instance_config.instance
544
+ moving_average_window = metrics_provider_config.get(
545
+ "moving_average_window_seconds",
546
+ DEFAULT_WORKER_LOAD_AUTOSCALING_MOVING_AVERAGE_WINDOW,
547
+ )
548
+ deployment_name = get_kubernetes_app_name(service=service, instance=instance)
549
+
550
+ # In order for autoscaling to work safely while a service migrates from one namespace to another, the HPA needs to
551
+ # make sure that the deployment in the new namespace is scaled up enough to handle _all_ the load.
552
+ # This is because once the new deployment is 100% healthy, cleanup_kubernetes_job will delete the deployment out of
553
+ # the old namespace all at once, suddenly putting all the load onto the deployment in the new namespace.
554
+ # To ensure this, we must NOT filter on namespace in worker_filter_terms (which is used when calculating total_load.
555
+ # This makes sure that desired_instances includes load from all namespaces.
556
+ worker_filter_terms = f"paasta_cluster='{paasta_cluster}',paasta_service='{service}',paasta_instance='{instance}'"
557
+
558
+ # k8s:deployment:pods_status_ready is a metric created by summing kube_pod_status_ready
559
+ # over paasta service/instance/cluster. it counts the number of ready pods in a paasta
560
+ # deployment.
561
+ ready_pods = f"""
562
+ (sum(
563
+ k8s:deployment:pods_status_ready{{{worker_filter_terms}}} >= 0
564
+ or
565
+ max_over_time(
566
+ k8s:deployment:pods_status_ready{{{worker_filter_terms}}}[{DEFAULT_EXTRAPOLATION_TIME}s]
567
+ )
568
+ ) by (kube_deployment))
569
+ """
570
+ load_per_instance = f"""
571
+ avg(
572
+ worker_busy{{{worker_filter_terms}}}
573
+ ) by (kube_pod, kube_deployment)
574
+ """
575
+ missing_instances = f"""
576
+ clamp_min(
577
+ {ready_pods} - count({load_per_instance}) by (kube_deployment),
578
+ 0
579
+ )
580
+ """
581
+ total_load = f"""
582
+ (
583
+ sum(
584
+ {load_per_instance}
585
+ ) by (kube_deployment)
586
+ +
587
+ {missing_instances}
588
+ )
589
+ """
590
+ total_load_smoothed = f"""
591
+ avg_over_time(
592
+ (
593
+ {total_load}
594
+ )[{moving_average_window}s:]
595
+ )
596
+ """
597
+
598
+ metric_name = f"{deployment_name}-worker-load-prom"
599
+
600
+ return {
601
+ "name": {"as": metric_name},
602
+ "seriesQuery": f"worker_busy{{{worker_filter_terms}}}",
603
+ "resources": {"template": "kube_<<.Resource>>"},
604
+ "metricsQuery": _minify_promql(total_load_smoothed),
605
+ }
606
+
607
+
526
608
  def create_instance_piscina_scaling_rule(
527
609
  service: str,
528
610
  instance_config: KubernetesDeploymentConfig,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: paasta-tools
3
- Version: 1.30.13
3
+ Version: 1.31.0
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Author: Compute Infrastructure @ Yelp
6
6
  Author-email: compute-infra@yelp.com
@@ -157,6 +157,7 @@ from paasta_tools.long_running_service_tools import METRICS_PROVIDER_GUNICORN
157
157
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_PISCINA
158
158
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_UWSGI
159
159
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_UWSGI_V2
160
+ from paasta_tools.long_running_service_tools import METRICS_PROVIDER_WORKER_LOAD
160
161
  from paasta_tools.long_running_service_tools import ServiceNamespaceConfig
161
162
  from paasta_tools.secret_tools import SHARED_SECRET_SERVICE
162
163
  from paasta_tools.utils import AwsEbsVolume
@@ -1739,6 +1740,7 @@ class TestKubernetesDeploymentConfig:
1739
1740
  METRICS_PROVIDER_UWSGI,
1740
1741
  METRICS_PROVIDER_PISCINA,
1741
1742
  METRICS_PROVIDER_GUNICORN,
1743
+ METRICS_PROVIDER_WORKER_LOAD,
1742
1744
  ],
1743
1745
  )
1744
1746
  @pytest.mark.parametrize(
@@ -1871,7 +1873,10 @@ class TestKubernetesDeploymentConfig:
1871
1873
 
1872
1874
  if autoscaling_metric_provider:
1873
1875
  expected_labels["paasta.yelp.com/deploy_group"] = "fake_group"
1874
- if autoscaling_metric_provider != METRICS_PROVIDER_UWSGI:
1876
+ if autoscaling_metric_provider in (
1877
+ METRICS_PROVIDER_PISCINA,
1878
+ METRICS_PROVIDER_GUNICORN,
1879
+ ):
1875
1880
  expected_labels[
1876
1881
  f"paasta.yelp.com/scrape_{autoscaling_metric_provider}_prometheus"
1877
1882
  ] = "true"
@@ -2866,6 +2871,87 @@ class TestKubernetesDeploymentConfig:
2866
2871
 
2867
2872
  assert expected_res == return_value
2868
2873
 
2874
+ @mock.patch(
2875
+ "paasta_tools.kubernetes_tools.load_system_paasta_config",
2876
+ autospec=True,
2877
+ )
2878
+ def test_get_autoscaling_metric_spec_worker_load_prometheus(
2879
+ self, fake_system_paasta_config
2880
+ ):
2881
+ config_dict = KubernetesDeploymentConfigDict(
2882
+ {
2883
+ "min_instances": 1,
2884
+ "max_instances": 3,
2885
+ "autoscaling": {
2886
+ "metrics_providers": [
2887
+ {
2888
+ "type": METRICS_PROVIDER_WORKER_LOAD,
2889
+ "setpoint": 0.5,
2890
+ "forecast_policy": "moving_average",
2891
+ "moving_average_window_seconds": 300,
2892
+ }
2893
+ ]
2894
+ },
2895
+ }
2896
+ )
2897
+ mock_config = KubernetesDeploymentConfig( # type: ignore
2898
+ service="service",
2899
+ cluster="cluster",
2900
+ instance="instance",
2901
+ config_dict=config_dict,
2902
+ branch_dict=None,
2903
+ )
2904
+ return_value = KubernetesDeploymentConfig.get_autoscaling_metric_spec(
2905
+ mock_config,
2906
+ "fake_name",
2907
+ "cluster",
2908
+ KubeClient(),
2909
+ "paasta",
2910
+ )
2911
+ expected_res = V2HorizontalPodAutoscaler(
2912
+ kind="HorizontalPodAutoscaler",
2913
+ metadata=V1ObjectMeta(
2914
+ name="fake_name",
2915
+ namespace="paasta",
2916
+ annotations={},
2917
+ labels=mock.ANY,
2918
+ ),
2919
+ spec=V2HorizontalPodAutoscalerSpec(
2920
+ behavior=mock_config.get_autoscaling_scaling_policy(
2921
+ autoscaling_params={},
2922
+ max_replicas=3,
2923
+ ),
2924
+ max_replicas=3,
2925
+ min_replicas=1,
2926
+ metrics=[
2927
+ V2MetricSpec(
2928
+ type="Object",
2929
+ object=V2ObjectMetricSource(
2930
+ metric=V2MetricIdentifier(
2931
+ name="service-instance-worker-load-prom",
2932
+ ),
2933
+ target=V2MetricTarget(
2934
+ type="AverageValue",
2935
+ average_value=0.5,
2936
+ ),
2937
+ described_object=V2CrossVersionObjectReference(
2938
+ api_version="apps/v1",
2939
+ kind="Deployment",
2940
+ name="fake_name",
2941
+ ),
2942
+ ),
2943
+ ),
2944
+ ],
2945
+ scale_target_ref=V2CrossVersionObjectReference(
2946
+ api_version="apps/v1",
2947
+ kind="Deployment",
2948
+ name="fake_name",
2949
+ ),
2950
+ ),
2951
+ )
2952
+
2953
+ assert expected_res == return_value
2954
+
2869
2955
  @mock.patch(
2870
2956
  "paasta_tools.kubernetes_tools.load_system_paasta_config",
2871
2957
  autospec=True,
@@ -8,6 +8,7 @@ from paasta_tools.long_running_service_tools import METRICS_PROVIDER_CPU
8
8
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_GUNICORN
9
9
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_UWSGI
10
10
  from paasta_tools.long_running_service_tools import METRICS_PROVIDER_UWSGI_V2
11
+ from paasta_tools.long_running_service_tools import METRICS_PROVIDER_WORKER_LOAD
11
12
  from paasta_tools.setup_prometheus_adapter_config import _minify_promql
12
13
  from paasta_tools.setup_prometheus_adapter_config import (
13
14
  create_instance_active_requests_scaling_rule,
@@ -24,6 +25,9 @@ from paasta_tools.setup_prometheus_adapter_config import (
24
25
  from paasta_tools.setup_prometheus_adapter_config import (
25
26
  create_instance_uwsgi_v2_scaling_rule,
26
27
  )
28
+ from paasta_tools.setup_prometheus_adapter_config import (
29
+ create_instance_worker_load_scaling_rule,
30
+ )
27
31
  from paasta_tools.setup_prometheus_adapter_config import get_rules_for_service_instance
28
32
  from paasta_tools.utils import SystemPaastaConfig
29
33
 
@@ -155,6 +159,49 @@ def test_create_instance_uwsgi_v2_scaling_rule() -> None:
155
159
  )
156
160
 
157
161
 
162
+ def test_create_instance_worker_load_scaling_rule() -> None:
163
+ service_name = "test_service"
164
+ instance_config = mock.Mock(instance="test_instance")
165
+ metrics_provider_config = MetricsProviderDict(
166
+ {
167
+ "type": METRICS_PROVIDER_WORKER_LOAD,
168
+ "setpoint": 0.1234567890,
169
+ "moving_average_window_seconds": 20120302,
170
+ }
171
+ )
172
+ paasta_cluster = "test_cluster"
173
+ rule = create_instance_worker_load_scaling_rule(
174
+ service=service_name,
175
+ instance_config=instance_config,
176
+ metrics_provider_config=metrics_provider_config,
177
+ paasta_cluster=paasta_cluster,
178
+ )
179
+
180
+ # we test that the format of the dictionary is as expected with mypy
181
+ # and we don't want to test the full contents of the retval since then
182
+ # we're basically just writing a change-detector test - instead, we test
183
+ # that we're actually using our inputs
184
+ assert service_name in rule["seriesQuery"]
185
+ assert instance_config.instance in rule["seriesQuery"]
186
+ assert paasta_cluster in rule["seriesQuery"]
187
+
188
+ # Like uwsgi_v2, we don't use the setpoint in this query -- the HPA will have the setpoint as its target.
189
+ assert str(metrics_provider_config["setpoint"]) not in rule["metricsQuery"]
190
+ assert (
191
+ str(metrics_provider_config["moving_average_window_seconds"])
192
+ in rule["metricsQuery"]
193
+ )
194
+
195
+ # Verify that we're using the generic worker_busy metric instead of uwsgi_worker_busy
196
+ assert "worker_busy" in rule["seriesQuery"]
197
+ assert "worker_busy" in rule["metricsQuery"]
198
+ assert "uwsgi_worker_busy" not in rule["seriesQuery"]
199
+ assert "uwsgi_worker_busy" not in rule["metricsQuery"]
200
+
201
+ # Verify the metric name uses worker-load-prom suffix
202
+ assert rule["name"]["as"].endswith("-worker-load-prom")
203
+
204
+
158
205
  def test_create_instance_gunicorn_scaling_rule() -> None:
159
206
  service_name = "test_service"
160
207
  instance_config = mock.Mock(instance="test_instance")
@@ -279,6 +326,24 @@ def test_create_instance_gunicorn_scaling_rule() -> None:
279
326
  ),
280
327
  2,
281
328
  ),
329
+ (
330
+ mock.Mock(
331
+ instance="instance",
332
+ get_namespace=mock.Mock(return_value="test_namespace"),
333
+ get_autoscaling_metrics_provider=mock.Mock(
334
+ side_effect=lambda x: (
335
+ {
336
+ "type": METRICS_PROVIDER_WORKER_LOAD,
337
+ "setpoint": 0.1234567890,
338
+ "moving_average_window_seconds": 20120302,
339
+ }
340
+ if x == METRICS_PROVIDER_WORKER_LOAD
341
+ else None
342
+ )
343
+ ),
344
+ ),
345
+ 1,
346
+ ),
282
347
  ],
283
348
  )
284
349
  def test_get_rules_for_service_instance(
File without changes
File without changes