paasta-tools 1.23.1__tar.gz → 1.24.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 (358) hide show
  1. {paasta_tools-1.23.1/paasta_tools.egg-info → paasta_tools-1.24.0}/PKG-INFO +2 -1
  2. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/__init__.py +1 -1
  3. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/api_docs/swagger.json +18 -2
  4. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/remote_run.py +40 -19
  5. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/status.py +116 -5
  6. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/flink_tools.py +18 -0
  7. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/api/remote_run_api.py +1 -0
  8. paasta_tools-1.24.0/paasta_tools/paastaapi/model/inline_response403.py +170 -0
  9. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/models/__init__.py +1 -0
  10. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/utils.py +45 -0
  11. {paasta_tools-1.23.1 → paasta_tools-1.24.0/paasta_tools.egg-info}/PKG-INFO +2 -1
  12. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools.egg-info/SOURCES.txt +1 -0
  13. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools.egg-info/requires.txt +1 -0
  14. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/requirements-minimal.txt +1 -0
  15. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_flink_tools.py +75 -0
  16. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_utils.py +45 -0
  17. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/LICENSE +0 -0
  18. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/MANIFEST.in +0 -0
  19. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/README.md +0 -0
  20. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/k8s_itests/__init__.py +0 -0
  21. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/k8s_itests/test_autoscaling.py +0 -0
  22. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/k8s_itests/utils.py +0 -0
  23. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/adhoc_tools.py +0 -0
  24. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/__init__.py +0 -0
  25. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/api.py +0 -0
  26. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/client.py +0 -0
  27. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/settings.py +0 -0
  28. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/tweens/__init__.py +0 -0
  29. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/tweens/auth.py +0 -0
  30. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/tweens/profiling.py +0 -0
  31. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/tweens/request_logger.py +0 -0
  32. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/views/__init__.py +0 -0
  33. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/views/autoscaler.py +0 -0
  34. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/views/exception.py +0 -0
  35. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/views/flink.py +0 -0
  36. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/views/instance.py +0 -0
  37. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/views/pause_autoscaler.py +0 -0
  38. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/views/remote_run.py +0 -0
  39. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/views/resources.py +0 -0
  40. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/views/service.py +0 -0
  41. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/api/views/version.py +0 -0
  42. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/apply_external_resources.py +0 -0
  43. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/async_utils.py +0 -0
  44. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/autoscaling/__init__.py +0 -0
  45. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
  46. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/autoscaling/forecasting.py +0 -0
  47. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
  48. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
  49. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/autoscaling/utils.py +0 -0
  50. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/bounce_lib.py +0 -0
  51. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/broadcast_log_to_services.py +0 -0
  52. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cassandracluster_tools.py +0 -0
  53. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/check_autoscaler_max_instances.py +0 -0
  54. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
  55. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/check_flink_services_health.py +0 -0
  56. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/check_kubernetes_api.py +0 -0
  57. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/check_kubernetes_services_replication.py +0 -0
  58. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/check_oom_events.py +0 -0
  59. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/check_services_replication_tools.py +0 -0
  60. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/check_spark_jobs.py +0 -0
  61. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
  62. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
  63. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
  64. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cleanup_tron_namespaces.py +0 -0
  65. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/__init__.py +0 -0
  66. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/authentication.py +0 -0
  67. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cli.py +0 -0
  68. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/__init__.py +0 -0
  69. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/autoscale.py +0 -0
  70. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/check.py +0 -0
  71. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/cook_image.py +0 -0
  72. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
  73. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/get_image_version.py +0 -0
  74. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
  75. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/info.py +0 -0
  76. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/itest.py +0 -0
  77. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/list.py +0 -0
  78. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/list_clusters.py +0 -0
  79. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
  80. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/list_namespaces.py +0 -0
  81. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/local_run.py +0 -0
  82. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/logs.py +0 -0
  83. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
  84. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/mesh_status.py +0 -0
  85. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
  86. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
  87. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/rollback.py +0 -0
  88. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/secret.py +0 -0
  89. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/security_check.py +0 -0
  90. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/spark_run.py +0 -0
  91. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
  92. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/validate.py +0 -0
  93. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
  94. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/fsm/__init__.py +0 -0
  95. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/fsm/autosuggest.py +0 -0
  96. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/fsm/template/README.md +0 -0
  97. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
  98. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
  99. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
  100. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
  101. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
  102. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/fsm_cmd.py +0 -0
  103. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
  104. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
  105. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
  106. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
  107. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
  108. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
  109. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/eks_schema.json +0 -0
  110. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
  111. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
  112. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/service_schema.json +0 -0
  113. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
  114. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/schemas/tron_schema.json +0 -0
  115. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/cli/utils.py +0 -0
  116. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/clusterman.py +0 -0
  117. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/config_utils.py +0 -0
  118. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/__init__.py +0 -0
  119. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
  120. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
  121. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/check_orphans.py +0 -0
  122. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
  123. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/create_paasta_playground.py +0 -0
  124. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
  125. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
  126. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/habitat_fixer.py +0 -0
  127. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/ide_helper.py +0 -0
  128. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
  129. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
  130. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/kill_bad_containers.py +0 -0
  131. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
  132. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/mock_patch_checker.py +0 -0
  133. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
  134. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/render_template.py +0 -0
  135. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
  136. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/service_shard_remove.py +0 -0
  137. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/service_shard_update.py +0 -0
  138. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/shared_ip_check.py +0 -0
  139. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
  140. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/delete_kubernetes_deployments.py +0 -0
  141. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/deployment_utils.py +0 -0
  142. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/docker_wrapper.py +0 -0
  143. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/docker_wrapper_imports.py +0 -0
  144. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/drain_lib.py +0 -0
  145. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/dump_locally_running_services.py +0 -0
  146. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/eks_tools.py +0 -0
  147. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/envoy_tools.py +0 -0
  148. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/firewall.py +0 -0
  149. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/firewall_logging.py +0 -0
  150. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/firewall_update.py +0 -0
  151. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/flinkeks_tools.py +0 -0
  152. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/frameworks/__init__.py +0 -0
  153. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
  154. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/frameworks/constraints.py +0 -0
  155. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/frameworks/native_scheduler.py +0 -0
  156. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/frameworks/native_service_config.py +0 -0
  157. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/frameworks/task_store.py +0 -0
  158. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/generate_all_deployments +0 -0
  159. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/generate_authenticating_services.py +0 -0
  160. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/generate_deployments_for_service.py +0 -0
  161. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/generate_services_file.py +0 -0
  162. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/generate_services_yaml.py +0 -0
  163. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/hacheck.py +0 -0
  164. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/instance/__init__.py +0 -0
  165. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
  166. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/instance/kubernetes.py +0 -0
  167. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/iptables.py +0 -0
  168. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kafkacluster_tools.py +0 -0
  169. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes/__init__.py +0 -0
  170. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes/application/__init__.py +0 -0
  171. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
  172. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes/application/tools.py +0 -0
  173. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes/bin/__init__.py +0 -0
  174. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
  175. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py +0 -0
  176. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
  177. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
  178. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes/remote_run.py +0 -0
  179. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/kubernetes_tools.py +0 -0
  180. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/list_kubernetes_service_instances.py +0 -0
  181. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/list_tron_namespaces.py +0 -0
  182. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/long_running_service_tools.py +0 -0
  183. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mac_address.py +0 -0
  184. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/marathon_dashboard.py +0 -0
  185. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/__init__.py +0 -0
  186. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/cfg.py +0 -0
  187. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/cluster.py +0 -0
  188. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/exceptions.py +0 -0
  189. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/framework.py +0 -0
  190. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/log.py +0 -0
  191. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/master.py +0 -0
  192. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/mesos_file.py +0 -0
  193. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/parallel.py +0 -0
  194. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/slave.py +0 -0
  195. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/task.py +0 -0
  196. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/util.py +0 -0
  197. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos/zookeeper.py +0 -0
  198. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos_maintenance.py +0 -0
  199. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/mesos_tools.py +0 -0
  200. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/metrics/__init__.py +0 -0
  201. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/metrics/metastatus_lib.py +0 -0
  202. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/metrics/metrics_lib.py +0 -0
  203. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/monitoring/__init__.py +0 -0
  204. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
  205. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/monitoring_tools.py +0 -0
  206. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/monkrelaycluster_tools.py +0 -0
  207. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/nrtsearchservice_tools.py +0 -0
  208. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
  209. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/oom_logger.py +0 -0
  210. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paasta_deploy_tron_jobs +0 -0
  211. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paasta_execute_docker_command.py +0 -0
  212. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paasta_native_serviceinit.py +0 -0
  213. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paasta_service_config_loader.py +0 -0
  214. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/__init__.py +0 -0
  215. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/api/__init__.py +0 -0
  216. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
  217. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/api/default_api.py +0 -0
  218. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/api/resources_api.py +0 -0
  219. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/api/service_api.py +0 -0
  220. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/api_client.py +0 -0
  221. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/apis/__init__.py +0 -0
  222. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/configuration.py +0 -0
  223. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/exceptions.py +0 -0
  224. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/__init__.py +0 -0
  225. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
  226. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
  227. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/autoscaling_override.py +0 -0
  228. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
  229. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
  230. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
  231. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
  232. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
  233. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
  234. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/flink_config.py +0 -0
  235. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/flink_job.py +0 -0
  236. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
  237. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
  238. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
  239. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
  240. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/inline_object.py +0 -0
  241. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
  242. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
  243. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/inline_response202.py +0 -0
  244. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
  245. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
  246. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_status.py +0 -0
  247. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
  248. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
  249. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
  250. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
  251. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
  252. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
  253. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
  254. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
  255. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
  256. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
  257. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
  258. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
  259. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
  260. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
  261. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
  262. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
  263. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
  264. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
  265. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/remote_run_outcome.py +0 -0
  266. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/remote_run_start.py +0 -0
  267. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/remote_run_stop.py +0 -0
  268. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/remote_run_token.py +0 -0
  269. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/resource.py +0 -0
  270. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/resource_item.py +0 -0
  271. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/resource_value.py +0 -0
  272. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
  273. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
  274. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
  275. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
  276. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/model_utils.py +0 -0
  277. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/paastaapi/rest.py +0 -0
  278. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/prune_completed_pods.py +0 -0
  279. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/puppet_service_tools.py +0 -0
  280. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/py.typed +0 -0
  281. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/remote_git.py +0 -0
  282. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
  283. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/run-paasta-api-playground.py +0 -0
  284. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/secret_providers/__init__.py +0 -0
  285. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/secret_providers/vault.py +0 -0
  286. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/secret_tools.py +0 -0
  287. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/setup_istio_mesh.py +0 -0
  288. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/setup_kubernetes_cr.py +0 -0
  289. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/setup_kubernetes_crd.py +0 -0
  290. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
  291. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/setup_kubernetes_job.py +0 -0
  292. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
  293. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/setup_tron_namespace.py +0 -0
  294. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/slack.py +0 -0
  295. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/smartstack_tools.py +0 -0
  296. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/spark_tools.py +0 -0
  297. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
  298. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/tron/__init__.py +0 -0
  299. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/tron/client.py +0 -0
  300. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/tron/tron_command_context.py +0 -0
  301. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/tron/tron_timeutils.py +0 -0
  302. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/tron_tools.py +0 -0
  303. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools/yaml_tools.py +0 -0
  304. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools.egg-info/dependency_links.txt +0 -0
  305. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools.egg-info/entry_points.txt +0 -0
  306. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/paasta_tools.egg-info/top_level.txt +0 -0
  307. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/pyproject.toml +0 -0
  308. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/setup.cfg +0 -0
  309. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/setup.py +0 -0
  310. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_adhoc_tools.py +0 -0
  311. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_apply_external_resources.py +0 -0
  312. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_async_utils.py +0 -0
  313. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_bounce_lib.py +0 -0
  314. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_check_flink_services_health.py +0 -0
  315. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_check_kubernetes_services_replication.py +0 -0
  316. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_check_oom_events.py +0 -0
  317. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_check_service_replication_tools.py +0 -0
  318. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_check_spark_jobs.py +0 -0
  319. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_cleanup_kubernetes_jobs.py +0 -0
  320. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_config_utils.py +0 -0
  321. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_delete_kubernetes_deployments.py +0 -0
  322. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_deployment_utils.py +0 -0
  323. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_docker_wrapper.py +0 -0
  324. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_drain_lib.py +0 -0
  325. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_eks_tools.py +0 -0
  326. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_envoy_tools.py +0 -0
  327. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_firewall.py +0 -0
  328. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_firewall_logging.py +0 -0
  329. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_firewall_update.py +0 -0
  330. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_flinkeks_tools.py +0 -0
  331. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_generate_authenticating_services.py +0 -0
  332. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_generate_deployments_for_service.py +0 -0
  333. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_generate_services_file.py +0 -0
  334. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_generate_services_yaml.py +0 -0
  335. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_hacheck.py +0 -0
  336. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_iptables.py +0 -0
  337. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_kubernetes_tools.py +0 -0
  338. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_list_kubernetes_service_instances.py +0 -0
  339. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_long_running_service_tools.py +0 -0
  340. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_mac_address.py +0 -0
  341. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_mesos_tools.py +0 -0
  342. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_monitoring_tools.py +0 -0
  343. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_nrtsearchserviceseks_tools.py +0 -0
  344. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_oom_logger.py +0 -0
  345. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_paasta_execute_docker_command.py +0 -0
  346. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_paasta_service_config_loader.py +0 -0
  347. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_puppet_service_tools.py +0 -0
  348. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_remote_git.py +0 -0
  349. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_secret_tools.py +0 -0
  350. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_setup_istio_mesh.py +0 -0
  351. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_setup_kubernetes_cr.py +0 -0
  352. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_setup_kubernetes_job.py +0 -0
  353. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_setup_prometheus_adapter_config.py +0 -0
  354. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_slack.py +0 -0
  355. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_smartstack_tools.py +0 -0
  356. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_spark_tools.py +0 -0
  357. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_task_processing.py +0 -0
  358. {paasta_tools-1.23.1 → paasta_tools-1.24.0}/tests/test_tron_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: paasta-tools
3
- Version: 1.23.1
3
+ Version: 1.24.0
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Author: Compute Infrastructure @ Yelp
6
6
  Author-email: compute-infra@yelp.com
@@ -22,6 +22,7 @@ Requires-Dist: cookiecutter>=1.4.0
22
22
  Requires-Dist: croniter
23
23
  Requires-Dist: docker
24
24
  Requires-Dist: dulwich>=0.17.3
25
+ Requires-Dist: environment-tools
25
26
  Requires-Dist: ephemeral-port-reserve>=1.0.1
26
27
  Requires-Dist: graphviz
27
28
  Requires-Dist: grpcio
@@ -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.23.1"
20
+ __version__ = "1.24.0"
@@ -930,7 +930,15 @@
930
930
  }
931
931
  },
932
932
  "403": {
933
- "description": "Unauthorized to remote-run this service"
933
+ "description": "Unauthorized to remote-run this service",
934
+ "schema": {
935
+ "type": "object",
936
+ "properties": {
937
+ "reason": {
938
+ "type": "string"
939
+ }
940
+ }
941
+ }
934
942
  },
935
943
  "404": {
936
944
  "description": "Deployment key not found"
@@ -981,7 +989,15 @@
981
989
  }
982
990
  },
983
991
  "403": {
984
- "description": "Unauthorized to remote-run this service"
992
+ "description": "Unauthorized to remote-run this service",
993
+ "schema": {
994
+ "type": "object",
995
+ "properties": {
996
+ "reason": {
997
+ "type": "string"
998
+ }
999
+ }
1000
+ }
985
1001
  },
986
1002
  "404": {
987
1003
  "description": "Service instance not found"
@@ -13,6 +13,7 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  import argparse
16
+ import json
16
17
  import shutil
17
18
  import subprocess
18
19
  import sys
@@ -24,6 +25,7 @@ from paasta_tools.cli.utils import get_paasta_oapi_client_with_auth
24
25
  from paasta_tools.cli.utils import lazy_choices_completer
25
26
  from paasta_tools.cli.utils import run_interactive_cli
26
27
  from paasta_tools.kubernetes.remote_run import TOOLBOX_MOCK_SERVICE
28
+ from paasta_tools.paastaapi.exceptions import ApiException
27
29
  from paasta_tools.paastaapi.model.remote_run_start import RemoteRunStart
28
30
  from paasta_tools.paastaapi.model.remote_run_stop import RemoteRunStop
29
31
  from paasta_tools.utils import get_username
@@ -57,6 +59,18 @@ def _list_services_and_toolboxes() -> List[str]:
57
59
  )
58
60
 
59
61
 
62
+ def parse_error(body: str) -> str:
63
+ try:
64
+ body_object = json.loads(body)
65
+ except json.decoder.JSONDecodeError:
66
+ return body
67
+ return (
68
+ body_object.get("reason")
69
+ or body_object.get("message")
70
+ or json.dumps(body_object, indent=4)
71
+ )
72
+
73
+
60
74
  def paasta_remote_run_start(
61
75
  args: argparse.Namespace,
62
76
  system_paasta_config: SystemPaastaConfig,
@@ -72,19 +86,21 @@ def paasta_remote_run_start(
72
86
  return 1
73
87
 
74
88
  user = get_username()
75
- start_response = client.remote_run.remote_run_start(
76
- args.service,
77
- args.instance,
78
- RemoteRunStart(
79
- user=user,
80
- interactive=args.interactive,
81
- recreate=args.recreate,
82
- max_duration=args.max_duration,
83
- toolbox=args.toolbox,
84
- ),
85
- )
86
- if start_response.status >= 300:
87
- print(f"Error from PaaSTA APIs while starting job: {start_response.message}")
89
+ try:
90
+ start_response = client.remote_run.remote_run_start(
91
+ args.service,
92
+ args.instance,
93
+ RemoteRunStart(
94
+ user=user,
95
+ interactive=args.interactive,
96
+ recreate=args.recreate,
97
+ max_duration=args.max_duration,
98
+ toolbox=args.toolbox,
99
+ ),
100
+ )
101
+ except ApiException as e:
102
+ error_msg = parse_error(e.body)
103
+ print(f"Error from PaaSTA APIs while starting job: {error_msg}")
88
104
  return 1
89
105
 
90
106
  print(
@@ -172,13 +188,18 @@ def paasta_remote_run_stop(
172
188
  if not client:
173
189
  print("Cannot get a paasta-api client")
174
190
  return 1
175
- response = client.remote_run.remote_run_stop(
176
- args.service,
177
- args.instance,
178
- RemoteRunStop(user=get_username(), toolbox=args.toolbox),
179
- )
191
+ try:
192
+ response = client.remote_run.remote_run_stop(
193
+ args.service,
194
+ args.instance,
195
+ RemoteRunStop(user=get_username(), toolbox=args.toolbox),
196
+ )
197
+ except ApiException as e:
198
+ error_msg = parse_error(e.body)
199
+ print(f"Error from PaaSTA APIs while stopping job: {error_msg}")
200
+ return 1
180
201
  print(response.message)
181
- return 0 if response.status < 300 else 1
202
+ return 0
182
203
 
183
204
 
184
205
  def add_common_args_to_parser(parser: argparse.ArgumentParser):
@@ -63,13 +63,16 @@ from paasta_tools.flink_tools import FlinkDeploymentConfig
63
63
  from paasta_tools.flink_tools import get_flink_config_from_paasta_api_client
64
64
  from paasta_tools.flink_tools import get_flink_jobs_from_paasta_api_client
65
65
  from paasta_tools.flink_tools import get_flink_overview_from_paasta_api_client
66
+ from paasta_tools.flink_tools import load_flink_instance_config
66
67
  from paasta_tools.flinkeks_tools import FlinkEksDeploymentConfig
68
+ from paasta_tools.flinkeks_tools import load_flinkeks_instance_config
67
69
  from paasta_tools.kafkacluster_tools import KafkaClusterDeploymentConfig
68
70
  from paasta_tools.kubernetes_tools import format_pod_event_messages
69
71
  from paasta_tools.kubernetes_tools import format_tail_lines_for_kubernetes_pod
70
72
  from paasta_tools.kubernetes_tools import KubernetesDeploymentConfig
71
73
  from paasta_tools.kubernetes_tools import KubernetesDeployStatus
72
74
  from paasta_tools.kubernetes_tools import paasta_prefixed
75
+ from paasta_tools.monitoring_tools import get_runbook
73
76
  from paasta_tools.monitoring_tools import get_team
74
77
  from paasta_tools.monitoring_tools import list_teams
75
78
  from paasta_tools.paasta_service_config_loader import PaastaServiceConfigLoader
@@ -763,12 +766,20 @@ def append_pod_status(pod_status, output: List[str]):
763
766
  output.extend([f" {line}" for line in pods_table])
764
767
 
765
768
 
769
+ OUTPUT_HORIZONTAL_RULE = (
770
+ "=================================================================="
771
+ )
772
+
773
+
766
774
  def _print_flink_status_from_job_manager(
767
775
  service: str,
768
776
  instance: str,
777
+ cluster: str,
769
778
  output: List[str],
770
779
  flink: Mapping[str, Any],
771
780
  client: PaastaOApiClient,
781
+ system_paasta_config: "SystemPaastaConfig",
782
+ flink_instance_config: FlinkDeploymentConfig,
772
783
  verbose: int,
773
784
  ) -> int:
774
785
  status = flink.get("status")
@@ -776,6 +787,7 @@ def _print_flink_status_from_job_manager(
776
787
  output.append(PaastaColors.red(" Flink cluster is not available yet"))
777
788
  return 1
778
789
 
790
+ # Print Flink Config SHA
779
791
  # Since metadata should be available no matter the state, we show it first. If this errors out
780
792
  # then we cannot really do much to recover, because cluster is not in usable state anyway
781
793
  metadata = flink.get("metadata")
@@ -785,9 +797,32 @@ def _print_flink_status_from_job_manager(
785
797
  raise ValueError(f"expected config sha on Flink, but received {metadata}")
786
798
  if config_sha.startswith("config"):
787
799
  config_sha = config_sha[6:]
788
-
789
800
  output.append(f" Config SHA: {config_sha}")
790
801
 
802
+ if verbose:
803
+ # Print Flink repo links
804
+ output.append(f" Repo(git): https://github.yelpcorp.com/services/{service}")
805
+ output.append(
806
+ f" Repo(sourcegraph): https://sourcegraph.yelpcorp.com/services/{service}"
807
+ )
808
+
809
+ # Print Flink Pool information
810
+ flink_pool = flink_instance_config.get_pool()
811
+ output.append(f" Flink Pool: {flink_pool}")
812
+
813
+ # Print ownership information
814
+ flink_monitoring_team = flink_instance_config.get_team() or get_team(
815
+ overrides={}, service=service, soa_dir=DEFAULT_SOA_DIR
816
+ )
817
+ output.append(f" Owner: {flink_monitoring_team}")
818
+
819
+ # Print rb information
820
+ flink_rb_for_instance = flink_instance_config.get_runbook() or get_runbook(
821
+ overrides={}, service=service, soa_dir=DEFAULT_SOA_DIR
822
+ )
823
+ output.append(f" Flink Runbook: {flink_rb_for_instance}")
824
+
825
+ # Print Flink Version
791
826
  if status["state"] == "running":
792
827
  try:
793
828
  flink_config = get_flink_config_from_paasta_api_client(
@@ -805,17 +840,67 @@ def _print_flink_status_from_job_manager(
805
840
  else:
806
841
  output.append(f" Flink version: {flink_config.flink_version}")
807
842
 
843
+ # Print Flink Dashboard URL
808
844
  # Annotation "flink.yelp.com/dashboard_url" is populated by flink-operator
809
845
  dashboard_url = metadata["annotations"].get("flink.yelp.com/dashboard_url")
810
846
  output.append(f" URL: {dashboard_url}/")
811
847
 
848
+ if verbose:
849
+ # Print Flink config link resources
850
+ ecosystem = system_paasta_config.get_ecosystem_for_cluster(cluster)
851
+ output.append(
852
+ f" Yelpsoa configs: https://github.yelpcorp.com/sysgit/yelpsoa-configs/tree/master/{service}"
853
+ )
854
+ output.append(
855
+ f" Srv configs: https://github.yelpcorp.com/sysgit/srv-configs/tree/master/ecosystem/{ecosystem}/{service}"
856
+ )
857
+
858
+ output.append(f"{OUTPUT_HORIZONTAL_RULE}")
859
+
860
+ # Print Flink Log Commands
861
+ output.append(f" Flink Log Commands:")
862
+ output.append(
863
+ f" Service: paasta logs -a 1h -c {cluster} -s {service} -i {instance}"
864
+ )
865
+ output.append(
866
+ f" Taskmanager: paasta logs -a 1h -c {cluster} -s {service} -i {instance}.TASKMANAGER"
867
+ )
868
+ output.append(
869
+ f" Jobmanager: paasta logs -a 1h -c {cluster} -s {service} -i {instance}.JOBMANAGER"
870
+ )
871
+ output.append(
872
+ f" Supervisor: paasta logs -a 1h -c {cluster} -s {service} -i {instance}.SUPERVISOR"
873
+ )
874
+
875
+ output.append(f"{OUTPUT_HORIZONTAL_RULE}")
876
+
877
+ # Print Flink Metrics Links
878
+ output.append(f" Flink Monitoring:")
879
+ output.append(
880
+ f" Job Metrics: https://grafana.yelpcorp.com/d/flink-metrics/flink-job-metrics?orgId=1&var-datasource=Prometheus-flink&var-region=uswest2-{ecosystem}&var-service={service}&var-instance={instance}&var-job=All&from=now-24h&to=now"
881
+ )
882
+ output.append(
883
+ f" Container Metrics: https://grafana.yelpcorp.com/d/flink-container-metrics/flink-container-metrics?orgId=1&var-datasource=Prometheus-flink&var-region=uswest2-{ecosystem}&var-service={service}&var-instance={instance}&from=now-24h&to=now"
884
+ )
885
+ output.append(
886
+ f" JVM Metrics: https://grafana.yelpcorp.com/d/flink-jvm-metrics/flink-jvm-metrics?orgId=1&var-datasource=Prometheus-flink&var-region=uswest2-{ecosystem}&var-service={service}&var-instance={instance}&from=now-24h&to=now"
887
+ )
888
+
889
+ # Print Flink Costs Link
890
+ output.append(
891
+ f" Flink Cost: https://splunk.yelpcorp.com/en-US/app/yelp_computeinfra/paasta_service_utilization?form.service={service}&form.field1.earliest=-30d%40d&form.field1.latest=now&form.instance={instance}&form.cluster={cluster}"
892
+ )
893
+
894
+ output.append(f"{OUTPUT_HORIZONTAL_RULE}")
895
+
896
+ # Print Flink Cluster State
812
897
  color = PaastaColors.green if status["state"] == "running" else PaastaColors.yellow
813
898
  output.append(f" State: {color(status['state'].title())}")
814
899
 
900
+ # Print Flink Cluster Pod Info
815
901
  pod_running_count = pod_evicted_count = pod_other_count = 0
816
902
  # default for evicted in case where pod status is not available
817
903
  evicted = f"{pod_evicted_count}"
818
-
819
904
  for pod in status["pod_status"]:
820
905
  if pod["phase"] == "Running":
821
906
  pod_running_count += 1
@@ -987,8 +1072,22 @@ def print_flink_status(
987
1072
  )
988
1073
  return 1
989
1074
 
1075
+ flink_instance_config = load_flink_instance_config(
1076
+ service=service,
1077
+ instance=instance,
1078
+ cluster=cluster,
1079
+ )
1080
+
990
1081
  return _print_flink_status_from_job_manager(
991
- service, instance, output, flink, client, verbose
1082
+ service,
1083
+ instance,
1084
+ cluster,
1085
+ output,
1086
+ flink,
1087
+ client,
1088
+ system_paasta_config,
1089
+ flink_instance_config,
1090
+ verbose,
992
1091
  )
993
1092
 
994
1093
 
@@ -1013,9 +1112,21 @@ def print_flinkeks_status(
1013
1112
  )
1014
1113
  )
1015
1114
  return 1
1016
-
1115
+ flink_eks_instance_config = load_flinkeks_instance_config(
1116
+ service=service,
1117
+ instance=instance,
1118
+ cluster=cluster,
1119
+ )
1017
1120
  return _print_flink_status_from_job_manager(
1018
- service, instance, output, flink, client, verbose
1121
+ service,
1122
+ instance,
1123
+ cluster,
1124
+ output,
1125
+ flink,
1126
+ client,
1127
+ system_paasta_config,
1128
+ flink_eks_instance_config,
1129
+ verbose,
1019
1130
  )
1020
1131
 
1021
1132
 
@@ -62,6 +62,7 @@ class TaskManagerConfig(TypedDict, total=False):
62
62
 
63
63
  class FlinkDeploymentConfigDict(LongRunningServiceConfigDict, total=False):
64
64
  taskmanager: TaskManagerConfig
65
+ spot: bool
65
66
 
66
67
 
67
68
  class FlinkDeploymentConfig(LongRunningServiceConfig):
@@ -111,6 +112,23 @@ class FlinkDeploymentConfig(LongRunningServiceConfig):
111
112
  def get_replication_crit_percentage(self) -> int:
112
113
  return self.config_dict.get("replication_threshold", 100)
113
114
 
115
+ def get_pool(self) -> Optional[str]:
116
+ """
117
+ Parses flink_pool from a specific Flink Deployment instance's configuration data, using key 'spot'.
118
+
119
+ Args:
120
+ flink_deployment_config_data: The FlinkDeploymentConfig for a specific Flink yelpsoa instance
121
+
122
+ Returns:
123
+ The flink pool string.
124
+ """
125
+ spot_config = self.config_dict.get("spot", None)
126
+ if spot_config is False:
127
+ return "flink"
128
+ else:
129
+ # if not set or True, Flink instance defaults to use flink-spot pool
130
+ return "flink-spot"
131
+
114
132
 
115
133
  def load_flink_instance_config(
116
134
  service: str,
@@ -23,6 +23,7 @@ from paasta_tools.paastaapi.model_utils import ( # noqa: F401
23
23
  none_type,
24
24
  validate_and_convert_types
25
25
  )
26
+ from paasta_tools.paastaapi.model.inline_response403 import InlineResponse403
26
27
  from paasta_tools.paastaapi.model.remote_run_outcome import RemoteRunOutcome
27
28
  from paasta_tools.paastaapi.model.remote_run_start import RemoteRunStart
28
29
  from paasta_tools.paastaapi.model.remote_run_stop import RemoteRunStop
@@ -0,0 +1,170 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Paasta API
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
7
+
8
+ The version of the OpenAPI document: 1.2.0
9
+ Generated by: https://openapi-generator.tech
10
+ """
11
+
12
+
13
+ import re # noqa: F401
14
+ import sys # noqa: F401
15
+
16
+ import nulltype # noqa: F401
17
+
18
+ from paasta_tools.paastaapi.model_utils import ( # noqa: F401
19
+ ApiTypeError,
20
+ ModelComposed,
21
+ ModelNormal,
22
+ ModelSimple,
23
+ cached_property,
24
+ change_keys_js_to_python,
25
+ convert_js_args_to_python_args,
26
+ date,
27
+ datetime,
28
+ file_type,
29
+ none_type,
30
+ validate_get_composed_info,
31
+ )
32
+
33
+
34
+ class InlineResponse403(ModelNormal):
35
+ """NOTE: This class is auto generated by OpenAPI Generator.
36
+ Ref: https://openapi-generator.tech
37
+
38
+ Do not edit the class manually.
39
+
40
+ Attributes:
41
+ allowed_values (dict): The key is the tuple path to the attribute
42
+ and the for var_name this is (var_name,). The value is a dict
43
+ with a capitalized key describing the allowed value and an allowed
44
+ value. These dicts store the allowed enum values.
45
+ attribute_map (dict): The key is attribute name
46
+ and the value is json key in definition.
47
+ discriminator_value_class_map (dict): A dict to go from the discriminator
48
+ variable value to the discriminator class name.
49
+ validations (dict): The key is the tuple path to the attribute
50
+ and the for var_name this is (var_name,). The value is a dict
51
+ that stores validations for max_length, min_length, max_items,
52
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
53
+ inclusive_minimum, and regex.
54
+ additional_properties_type (tuple): A tuple of classes accepted
55
+ as additional properties values.
56
+ """
57
+
58
+ allowed_values = {
59
+ }
60
+
61
+ validations = {
62
+ }
63
+
64
+ additional_properties_type = None
65
+
66
+ _nullable = False
67
+
68
+ @cached_property
69
+ def openapi_types():
70
+ """
71
+ This must be a method because a model may have properties that are
72
+ of type self, this must run after the class is loaded
73
+
74
+ Returns
75
+ openapi_types (dict): The key is attribute name
76
+ and the value is attribute type.
77
+ """
78
+ return {
79
+ 'reason': (str,), # noqa: E501
80
+ }
81
+
82
+ @cached_property
83
+ def discriminator():
84
+ return None
85
+
86
+
87
+ attribute_map = {
88
+ 'reason': 'reason', # noqa: E501
89
+ }
90
+
91
+ _composed_schemas = {}
92
+
93
+ required_properties = set([
94
+ '_data_store',
95
+ '_check_type',
96
+ '_spec_property_naming',
97
+ '_path_to_item',
98
+ '_configuration',
99
+ '_visited_composed_classes',
100
+ ])
101
+
102
+ @convert_js_args_to_python_args
103
+ def __init__(self, *args, **kwargs): # noqa: E501
104
+ """InlineResponse403 - a model defined in OpenAPI
105
+
106
+ Keyword Args:
107
+ _check_type (bool): if True, values for parameters in openapi_types
108
+ will be type checked and a TypeError will be
109
+ raised if the wrong type is input.
110
+ Defaults to True
111
+ _path_to_item (tuple/list): This is a list of keys or values to
112
+ drill down to the model in received_data
113
+ when deserializing a response
114
+ _spec_property_naming (bool): True if the variable names in the input data
115
+ are serialized names, as specified in the OpenAPI document.
116
+ False if the variable names in the input data
117
+ are pythonic names, e.g. snake case (default)
118
+ _configuration (Configuration): the instance to use when
119
+ deserializing a file_type parameter.
120
+ If passed, type conversion is attempted
121
+ If omitted no type conversion is done.
122
+ _visited_composed_classes (tuple): This stores a tuple of
123
+ classes that we have traveled through so that
124
+ if we see that class again we will not use its
125
+ discriminator again.
126
+ When traveling through a discriminator, the
127
+ composed schema that is
128
+ is traveled through is added to this set.
129
+ For example if Animal has a discriminator
130
+ petType and we pass in "Dog", and the class Dog
131
+ allOf includes Animal, we move through Animal
132
+ once using the discriminator, and pick Dog.
133
+ Then in Dog, we will make an instance of the
134
+ Animal class but this time we won't travel
135
+ through its discriminator because we passed in
136
+ _visited_composed_classes = (Animal,)
137
+ reason (str): [optional] # noqa: E501
138
+ """
139
+
140
+ _check_type = kwargs.pop('_check_type', True)
141
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
142
+ _path_to_item = kwargs.pop('_path_to_item', ())
143
+ _configuration = kwargs.pop('_configuration', None)
144
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
145
+
146
+ if args:
147
+ raise ApiTypeError(
148
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
149
+ args,
150
+ self.__class__.__name__,
151
+ ),
152
+ path_to_item=_path_to_item,
153
+ valid_classes=(self.__class__,),
154
+ )
155
+
156
+ self._data_store = {}
157
+ self._check_type = _check_type
158
+ self._spec_property_naming = _spec_property_naming
159
+ self._path_to_item = _path_to_item
160
+ self._configuration = _configuration
161
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
162
+
163
+ for var_name, var_value in kwargs.items():
164
+ if var_name not in self.attribute_map and \
165
+ self._configuration is not None and \
166
+ self._configuration.discard_unknown_keys and \
167
+ self.additional_properties_type is None:
168
+ # discard variable.
169
+ continue
170
+ setattr(self, var_name, var_value)
@@ -30,6 +30,7 @@ from paasta_tools.paastaapi.model.inline_object import InlineObject
30
30
  from paasta_tools.paastaapi.model.inline_response200 import InlineResponse200
31
31
  from paasta_tools.paastaapi.model.inline_response2001 import InlineResponse2001
32
32
  from paasta_tools.paastaapi.model.inline_response202 import InlineResponse202
33
+ from paasta_tools.paastaapi.model.inline_response403 import InlineResponse403
33
34
  from paasta_tools.paastaapi.model.instance_bounce_status import InstanceBounceStatus
34
35
  from paasta_tools.paastaapi.model.instance_mesh_status import InstanceMeshStatus
35
36
  from paasta_tools.paastaapi.model.instance_status import InstanceStatus
@@ -76,6 +76,7 @@ import requests_cache
76
76
  import service_configuration_lib
77
77
  from docker import APIClient
78
78
  from docker.utils import kwargs_from_env
79
+ from environment_tools.type_utils import convert_location_type
79
80
  from kazoo.client import KazooClient
80
81
  from mypy_extensions import TypedDict
81
82
  from service_configuration_lib import read_extra_service_information
@@ -490,6 +491,9 @@ class InstanceConfig:
490
491
  def get_team(self) -> str:
491
492
  return self.config_dict.get("monitoring", {}).get("team", None)
492
493
 
494
+ def get_runbook(self) -> str:
495
+ return self.config_dict.get("monitoring", {}).get("runbook", None)
496
+
493
497
  def get_mem(self) -> float:
494
498
  """Gets the memory required from the service's configuration.
495
499
 
@@ -2802,6 +2806,47 @@ class SystemPaastaConfig:
2802
2806
  def get_remote_run_duration_limit(self, default: int) -> int:
2803
2807
  return self.config_dict.get("remote_run_duration_limit", default)
2804
2808
 
2809
+ def get_ecosystem_for_cluster(self, cluster: str) -> Optional[str]:
2810
+ """
2811
+ Convert a Kubernetes cluster's region information to an ecosystem name.
2812
+
2813
+ This function extracts the 'yelp_region' from the cluster data and
2814
+ converts it to an ecosystem identifier (e.g., 'uswest2-devc' → 'devc').
2815
+
2816
+ Convert the yelp_region to ecosystem
2817
+ See y/habitat for what these mean
2818
+ Example
2819
+ convert_location_type(
2820
+ location="uswest2-devc",
2821
+ source_type="region",
2822
+ desired_type="ecosystem",
2823
+ )
2824
+ Output: devc
2825
+
2826
+ NOTE: kube_clusters_data.get(cluster) returns a string like uswest2-devc
2827
+ which loosely looks like an aws region - but while you can
2828
+ go from yelp region -> aws region, the reverse is not
2829
+ true without additional data
2830
+ """
2831
+ kube_clusters_data = self.get_kube_clusters()
2832
+ cluster_info = kube_clusters_data.get(cluster)
2833
+ if cluster_info is not None:
2834
+ yelp_region = cluster_info.get("yelp_region", None)
2835
+ else:
2836
+ # NOTE: this should never happen unless our kube metadata generator is broken
2837
+ return None
2838
+
2839
+ result = convert_location_type(
2840
+ location=yelp_region,
2841
+ source_type="region",
2842
+ desired_type="ecosystem",
2843
+ )
2844
+ if result:
2845
+ return result[0]
2846
+ else:
2847
+ # NOTE: this should never happen unless we've gotten bad data
2848
+ return None
2849
+
2805
2850
 
2806
2851
  def _run(
2807
2852
  command: Union[str, List[str]],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: paasta-tools
3
- Version: 1.23.1
3
+ Version: 1.24.0
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Author: Compute Infrastructure @ Yelp
6
6
  Author-email: compute-infra@yelp.com
@@ -22,6 +22,7 @@ Requires-Dist: cookiecutter>=1.4.0
22
22
  Requires-Dist: croniter
23
23
  Requires-Dist: docker
24
24
  Requires-Dist: dulwich>=0.17.3
25
+ Requires-Dist: environment-tools
25
26
  Requires-Dist: ephemeral-port-reserve>=1.0.1
26
27
  Requires-Dist: graphviz
27
28
  Requires-Dist: grpcio
@@ -263,6 +263,7 @@ paasta_tools/paastaapi/model/inline_object.py
263
263
  paasta_tools/paastaapi/model/inline_response200.py
264
264
  paasta_tools/paastaapi/model/inline_response2001.py
265
265
  paasta_tools/paastaapi/model/inline_response202.py
266
+ paasta_tools/paastaapi/model/inline_response403.py
266
267
  paasta_tools/paastaapi/model/instance_bounce_status.py
267
268
  paasta_tools/paastaapi/model/instance_mesh_status.py
268
269
  paasta_tools/paastaapi/model/instance_status.py
@@ -13,6 +13,7 @@ cookiecutter>=1.4.0
13
13
  croniter
14
14
  docker
15
15
  dulwich>=0.17.3
16
+ environment-tools
16
17
  ephemeral-port-reserve>=1.0.1
17
18
  graphviz
18
19
  grpcio
@@ -13,6 +13,7 @@ cookiecutter >= 1.4.0
13
13
  croniter
14
14
  docker
15
15
  dulwich >= 0.17.3
16
+ environment-tools
16
17
  ephemeral-port-reserve >= 1.0.1
17
18
  graphviz
18
19
  grpcio