paasta-tools 1.22.0__tar.gz → 1.23.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. {paasta_tools-1.22.0/paasta_tools.egg-info → paasta_tools-1.23.1}/PKG-INFO +2 -2
  2. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/__init__.py +1 -1
  3. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/api_docs/swagger.json +3 -0
  4. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/remote_run.py +40 -4
  5. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/spark_run.py +15 -0
  6. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/paasta_update_soa_memcpu.py +82 -19
  7. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes/remote_run.py +2 -0
  8. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes_tools.py +23 -5
  9. {paasta_tools-1.22.0 → paasta_tools-1.23.1/paasta_tools.egg-info}/PKG-INFO +2 -2
  10. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools.egg-info/requires.txt +1 -1
  11. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/requirements-minimal.txt +1 -1
  12. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_kubernetes_tools.py +74 -0
  13. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/LICENSE +0 -0
  14. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/MANIFEST.in +0 -0
  15. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/README.md +0 -0
  16. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/k8s_itests/__init__.py +0 -0
  17. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/k8s_itests/test_autoscaling.py +0 -0
  18. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/k8s_itests/utils.py +0 -0
  19. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/adhoc_tools.py +0 -0
  20. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/__init__.py +0 -0
  21. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/api.py +0 -0
  22. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/client.py +0 -0
  23. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/settings.py +0 -0
  24. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/tweens/__init__.py +0 -0
  25. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/tweens/auth.py +0 -0
  26. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/tweens/profiling.py +0 -0
  27. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/tweens/request_logger.py +0 -0
  28. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/views/__init__.py +0 -0
  29. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/views/autoscaler.py +0 -0
  30. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/views/exception.py +0 -0
  31. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/views/flink.py +0 -0
  32. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/views/instance.py +0 -0
  33. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/views/pause_autoscaler.py +0 -0
  34. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/views/remote_run.py +0 -0
  35. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/views/resources.py +0 -0
  36. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/views/service.py +0 -0
  37. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/api/views/version.py +0 -0
  38. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/apply_external_resources.py +0 -0
  39. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/async_utils.py +0 -0
  40. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/autoscaling/__init__.py +0 -0
  41. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
  42. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/autoscaling/forecasting.py +0 -0
  43. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
  44. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
  45. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/autoscaling/utils.py +0 -0
  46. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/bounce_lib.py +0 -0
  47. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/broadcast_log_to_services.py +0 -0
  48. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cassandracluster_tools.py +0 -0
  49. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/check_autoscaler_max_instances.py +0 -0
  50. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
  51. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/check_flink_services_health.py +0 -0
  52. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/check_kubernetes_api.py +0 -0
  53. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/check_kubernetes_services_replication.py +0 -0
  54. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/check_oom_events.py +0 -0
  55. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/check_services_replication_tools.py +0 -0
  56. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/check_spark_jobs.py +0 -0
  57. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
  58. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
  59. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
  60. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cleanup_tron_namespaces.py +0 -0
  61. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/__init__.py +0 -0
  62. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/authentication.py +0 -0
  63. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cli.py +0 -0
  64. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/__init__.py +0 -0
  65. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/autoscale.py +0 -0
  66. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/check.py +0 -0
  67. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/cook_image.py +0 -0
  68. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
  69. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/get_image_version.py +0 -0
  70. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
  71. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/info.py +0 -0
  72. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/itest.py +0 -0
  73. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/list.py +0 -0
  74. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/list_clusters.py +0 -0
  75. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
  76. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/list_namespaces.py +0 -0
  77. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/local_run.py +0 -0
  78. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/logs.py +0 -0
  79. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
  80. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/mesh_status.py +0 -0
  81. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
  82. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
  83. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/rollback.py +0 -0
  84. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/secret.py +0 -0
  85. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/security_check.py +0 -0
  86. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
  87. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/status.py +0 -0
  88. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/validate.py +0 -0
  89. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
  90. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/fsm/__init__.py +0 -0
  91. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/fsm/autosuggest.py +0 -0
  92. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/fsm/template/README.md +0 -0
  93. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
  94. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
  95. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
  96. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
  97. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
  98. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/fsm_cmd.py +0 -0
  99. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
  100. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
  101. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
  102. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
  103. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
  104. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
  105. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/eks_schema.json +0 -0
  106. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
  107. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
  108. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/service_schema.json +0 -0
  109. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
  110. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/schemas/tron_schema.json +0 -0
  111. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/cli/utils.py +0 -0
  112. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/clusterman.py +0 -0
  113. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/config_utils.py +0 -0
  114. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/__init__.py +0 -0
  115. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
  116. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
  117. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/check_orphans.py +0 -0
  118. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
  119. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/create_paasta_playground.py +0 -0
  120. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
  121. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
  122. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/habitat_fixer.py +0 -0
  123. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/ide_helper.py +0 -0
  124. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
  125. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
  126. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/kill_bad_containers.py +0 -0
  127. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
  128. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/mock_patch_checker.py +0 -0
  129. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/render_template.py +0 -0
  130. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
  131. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/service_shard_remove.py +0 -0
  132. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/service_shard_update.py +0 -0
  133. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/shared_ip_check.py +0 -0
  134. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
  135. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/delete_kubernetes_deployments.py +0 -0
  136. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/deployment_utils.py +0 -0
  137. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/docker_wrapper.py +0 -0
  138. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/docker_wrapper_imports.py +0 -0
  139. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/drain_lib.py +0 -0
  140. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/dump_locally_running_services.py +0 -0
  141. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/eks_tools.py +0 -0
  142. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/envoy_tools.py +0 -0
  143. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/firewall.py +0 -0
  144. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/firewall_logging.py +0 -0
  145. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/firewall_update.py +0 -0
  146. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/flink_tools.py +0 -0
  147. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/flinkeks_tools.py +0 -0
  148. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/frameworks/__init__.py +0 -0
  149. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
  150. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/frameworks/constraints.py +0 -0
  151. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/frameworks/native_scheduler.py +0 -0
  152. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/frameworks/native_service_config.py +0 -0
  153. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/frameworks/task_store.py +0 -0
  154. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/generate_all_deployments +0 -0
  155. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/generate_authenticating_services.py +0 -0
  156. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/generate_deployments_for_service.py +0 -0
  157. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/generate_services_file.py +0 -0
  158. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/generate_services_yaml.py +0 -0
  159. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/hacheck.py +0 -0
  160. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/instance/__init__.py +0 -0
  161. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
  162. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/instance/kubernetes.py +0 -0
  163. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/iptables.py +0 -0
  164. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kafkacluster_tools.py +0 -0
  165. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes/__init__.py +0 -0
  166. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes/application/__init__.py +0 -0
  167. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
  168. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes/application/tools.py +0 -0
  169. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes/bin/__init__.py +0 -0
  170. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
  171. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py +0 -0
  172. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
  173. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
  174. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/list_kubernetes_service_instances.py +0 -0
  175. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/list_tron_namespaces.py +0 -0
  176. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/long_running_service_tools.py +0 -0
  177. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mac_address.py +0 -0
  178. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/marathon_dashboard.py +0 -0
  179. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/__init__.py +0 -0
  180. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/cfg.py +0 -0
  181. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/cluster.py +0 -0
  182. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/exceptions.py +0 -0
  183. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/framework.py +0 -0
  184. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/log.py +0 -0
  185. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/master.py +0 -0
  186. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/mesos_file.py +0 -0
  187. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/parallel.py +0 -0
  188. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/slave.py +0 -0
  189. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/task.py +0 -0
  190. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/util.py +0 -0
  191. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos/zookeeper.py +0 -0
  192. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos_maintenance.py +0 -0
  193. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/mesos_tools.py +0 -0
  194. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/metrics/__init__.py +0 -0
  195. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/metrics/metastatus_lib.py +0 -0
  196. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/metrics/metrics_lib.py +0 -0
  197. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/monitoring/__init__.py +0 -0
  198. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
  199. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/monitoring_tools.py +0 -0
  200. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/monkrelaycluster_tools.py +0 -0
  201. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/nrtsearchservice_tools.py +0 -0
  202. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
  203. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/oom_logger.py +0 -0
  204. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paasta_deploy_tron_jobs +0 -0
  205. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paasta_execute_docker_command.py +0 -0
  206. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paasta_native_serviceinit.py +0 -0
  207. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paasta_service_config_loader.py +0 -0
  208. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/__init__.py +0 -0
  209. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/api/__init__.py +0 -0
  210. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
  211. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/api/default_api.py +0 -0
  212. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/api/remote_run_api.py +0 -0
  213. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/api/resources_api.py +0 -0
  214. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/api/service_api.py +0 -0
  215. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/api_client.py +0 -0
  216. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/apis/__init__.py +0 -0
  217. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/configuration.py +0 -0
  218. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/exceptions.py +0 -0
  219. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/__init__.py +0 -0
  220. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
  221. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
  222. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/autoscaling_override.py +0 -0
  223. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
  224. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
  225. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
  226. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
  227. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
  228. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
  229. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/flink_config.py +0 -0
  230. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/flink_job.py +0 -0
  231. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
  232. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
  233. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
  234. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
  235. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/inline_object.py +0 -0
  236. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
  237. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
  238. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/inline_response202.py +0 -0
  239. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
  240. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
  241. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_status.py +0 -0
  242. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
  243. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
  244. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
  245. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
  246. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
  247. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
  248. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
  249. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
  250. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
  251. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
  252. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
  253. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
  254. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
  255. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
  256. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
  257. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
  258. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
  259. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
  260. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/remote_run_outcome.py +0 -0
  261. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/remote_run_start.py +0 -0
  262. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/remote_run_stop.py +0 -0
  263. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/remote_run_token.py +0 -0
  264. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/resource.py +0 -0
  265. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/resource_item.py +0 -0
  266. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/resource_value.py +0 -0
  267. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
  268. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
  269. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
  270. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
  271. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/model_utils.py +0 -0
  272. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/models/__init__.py +0 -0
  273. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/paastaapi/rest.py +0 -0
  274. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/prune_completed_pods.py +0 -0
  275. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/puppet_service_tools.py +0 -0
  276. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/py.typed +0 -0
  277. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/remote_git.py +0 -0
  278. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
  279. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/run-paasta-api-playground.py +0 -0
  280. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/secret_providers/__init__.py +0 -0
  281. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/secret_providers/vault.py +0 -0
  282. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/secret_tools.py +0 -0
  283. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/setup_istio_mesh.py +0 -0
  284. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/setup_kubernetes_cr.py +0 -0
  285. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/setup_kubernetes_crd.py +0 -0
  286. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
  287. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/setup_kubernetes_job.py +0 -0
  288. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
  289. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/setup_tron_namespace.py +0 -0
  290. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/slack.py +0 -0
  291. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/smartstack_tools.py +0 -0
  292. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/spark_tools.py +0 -0
  293. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
  294. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/tron/__init__.py +0 -0
  295. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/tron/client.py +0 -0
  296. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/tron/tron_command_context.py +0 -0
  297. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/tron/tron_timeutils.py +0 -0
  298. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/tron_tools.py +0 -0
  299. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/utils.py +0 -0
  300. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools/yaml_tools.py +0 -0
  301. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools.egg-info/SOURCES.txt +0 -0
  302. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools.egg-info/dependency_links.txt +0 -0
  303. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools.egg-info/entry_points.txt +0 -0
  304. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/paasta_tools.egg-info/top_level.txt +0 -0
  305. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/pyproject.toml +0 -0
  306. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/setup.cfg +0 -0
  307. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/setup.py +0 -0
  308. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_adhoc_tools.py +0 -0
  309. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_apply_external_resources.py +0 -0
  310. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_async_utils.py +0 -0
  311. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_bounce_lib.py +0 -0
  312. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_check_flink_services_health.py +0 -0
  313. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_check_kubernetes_services_replication.py +0 -0
  314. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_check_oom_events.py +0 -0
  315. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_check_service_replication_tools.py +0 -0
  316. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_check_spark_jobs.py +0 -0
  317. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_cleanup_kubernetes_jobs.py +0 -0
  318. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_config_utils.py +0 -0
  319. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_delete_kubernetes_deployments.py +0 -0
  320. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_deployment_utils.py +0 -0
  321. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_docker_wrapper.py +0 -0
  322. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_drain_lib.py +0 -0
  323. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_eks_tools.py +0 -0
  324. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_envoy_tools.py +0 -0
  325. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_firewall.py +0 -0
  326. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_firewall_logging.py +0 -0
  327. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_firewall_update.py +0 -0
  328. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_flink_tools.py +0 -0
  329. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_flinkeks_tools.py +0 -0
  330. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_generate_authenticating_services.py +0 -0
  331. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_generate_deployments_for_service.py +0 -0
  332. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_generate_services_file.py +0 -0
  333. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_generate_services_yaml.py +0 -0
  334. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_hacheck.py +0 -0
  335. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_iptables.py +0 -0
  336. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_list_kubernetes_service_instances.py +0 -0
  337. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_long_running_service_tools.py +0 -0
  338. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_mac_address.py +0 -0
  339. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_mesos_tools.py +0 -0
  340. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_monitoring_tools.py +0 -0
  341. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_nrtsearchserviceseks_tools.py +0 -0
  342. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_oom_logger.py +0 -0
  343. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_paasta_execute_docker_command.py +0 -0
  344. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_paasta_service_config_loader.py +0 -0
  345. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_puppet_service_tools.py +0 -0
  346. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_remote_git.py +0 -0
  347. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_secret_tools.py +0 -0
  348. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_setup_istio_mesh.py +0 -0
  349. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_setup_kubernetes_cr.py +0 -0
  350. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_setup_kubernetes_job.py +0 -0
  351. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_setup_prometheus_adapter_config.py +0 -0
  352. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_slack.py +0 -0
  353. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_smartstack_tools.py +0 -0
  354. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_spark_tools.py +0 -0
  355. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_task_processing.py +0 -0
  356. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_tron_tools.py +0 -0
  357. {paasta_tools-1.22.0 → paasta_tools-1.23.1}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: paasta-tools
3
- Version: 1.22.0
3
+ Version: 1.23.1
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Author: Compute Infrastructure @ Yelp
6
6
  Author-email: compute-infra@yelp.com
@@ -58,7 +58,7 @@ Requires-Dist: requests-cache>=0.4.10
58
58
  Requires-Dist: retry
59
59
  Requires-Dist: ruamel.yaml
60
60
  Requires-Dist: sensu-plugin
61
- Requires-Dist: service-configuration-lib>=3.3.2
61
+ Requires-Dist: service-configuration-lib>=3.3.3
62
62
  Requires-Dist: signalfx
63
63
  Requires-Dist: slackclient>=1.2.1
64
64
  Requires-Dist: sticht>=1.1.0
@@ -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.22.0"
20
+ __version__ = "1.23.1"
@@ -1037,6 +1037,9 @@
1037
1037
  "404": {
1038
1038
  "description": "Service instance not found"
1039
1039
  },
1040
+ "409": {
1041
+ "description": "A pod was found but is currently being terminated"
1042
+ },
1040
1043
  "500": {
1041
1044
  "description": "Failure"
1042
1045
  }
@@ -14,6 +14,8 @@
14
14
  # limitations under the License.
15
15
  import argparse
16
16
  import shutil
17
+ import subprocess
18
+ import sys
17
19
  import time
18
20
  from typing import List
19
21
 
@@ -32,9 +34,12 @@ from paasta_tools.utils import load_system_paasta_config
32
34
  from paasta_tools.utils import SystemPaastaConfig
33
35
 
34
36
 
35
- KUBECTL_CMD_TEMPLATE = (
37
+ KUBECTL_EXEC_CMD_TEMPLATE = (
36
38
  "{kubectl_wrapper} --token {token} exec -it -n {namespace} {pod} -- /bin/bash"
37
39
  )
40
+ KUBECTL_CP_CMD_TEMPLATE = (
41
+ "{kubectl_wrapper} --token {token} -n {namespace} cp {filename} {pod}:/tmp/"
42
+ )
38
43
 
39
44
 
40
45
  def _list_services_and_toolboxes() -> List[str]:
@@ -55,7 +60,9 @@ def _list_services_and_toolboxes() -> List[str]:
55
60
  def paasta_remote_run_start(
56
61
  args: argparse.Namespace,
57
62
  system_paasta_config: SystemPaastaConfig,
63
+ recursed: bool = False,
58
64
  ) -> int:
65
+ status_prefix = "\x1b[2K\r" # Clear line, carriage return
59
66
  client = get_paasta_oapi_client_with_auth(
60
67
  cluster=get_paasta_oapi_api_clustername(cluster=args.cluster, is_eks=True),
61
68
  system_paasta_config=system_paasta_config,
@@ -95,10 +102,18 @@ def paasta_remote_run_start(
95
102
  if poll_response.status == 200:
96
103
  print("")
97
104
  break
98
- print(f"\rStatus: {poll_response.message}", end="")
105
+ print(f"{status_prefix}Status: {poll_response.message}", end="")
106
+ if poll_response.status == 404:
107
+ # Probably indicates a pod was terminating. Now that its gone, retry the whole process
108
+ if not recursed:
109
+ print("\nPod finished terminating. Rerunning")
110
+ return paasta_remote_run_start(args, system_paasta_config, True)
111
+ else:
112
+ print("\nSomething went wrong. Pod still not found.")
113
+ return 1
99
114
  time.sleep(10)
100
115
  else:
101
- print("Timed out while waiting for job to start")
116
+ print(f"{status_prefix}Timed out while waiting for job to start")
102
117
  return 1
103
118
 
104
119
  if not args.interactive and not args.toolbox:
@@ -120,13 +135,28 @@ def paasta_remote_run_start(
120
135
  kubectl_wrapper = f"kubectl-eks-{args.cluster}"
121
136
  if not shutil.which(kubectl_wrapper):
122
137
  kubectl_wrapper = f"kubectl-{args.cluster}"
123
- exec_command = KUBECTL_CMD_TEMPLATE.format(
138
+ exec_command = KUBECTL_EXEC_CMD_TEMPLATE.format(
124
139
  kubectl_wrapper=kubectl_wrapper,
125
140
  namespace=poll_response.namespace,
126
141
  pod=poll_response.pod_name,
127
142
  token=token_response.token,
128
143
  )
129
144
 
145
+ if args.copy_file:
146
+ for filename in args.copy_file:
147
+ cp_command = KUBECTL_CP_CMD_TEMPLATE.format(
148
+ kubectl_wrapper=kubectl_wrapper,
149
+ namespace=poll_response.namespace,
150
+ pod=poll_response.pod_name,
151
+ filename=filename,
152
+ token=token_response.token,
153
+ ).split(" ")
154
+ call = subprocess.run(cp_command, capture_output=True)
155
+ if call.returncode != 0:
156
+ print("Error copying file to remote-run pod: ", file=sys.stderr)
157
+ print(call.stderr.decode("utf-8"), file=sys.stderr)
158
+ return 1
159
+
130
160
  run_interactive_cli(exec_command)
131
161
  return 0
132
162
 
@@ -232,6 +262,12 @@ def add_subparser(subparsers: argparse._SubParsersAction) -> None:
232
262
  type=int,
233
263
  default=600,
234
264
  )
265
+ start_parser.add_argument(
266
+ "--copy-file",
267
+ help="Adds a local file to /tmp inside the pod",
268
+ type=str,
269
+ action="append",
270
+ )
235
271
  stop_parser = subparsers.add_parser(
236
272
  "stop",
237
273
  help="Stop your remote-run job if it exists",
@@ -375,6 +375,20 @@ def add_subparser(subparsers):
375
375
  default=False,
376
376
  )
377
377
 
378
+ list_parser.add_argument(
379
+ "--jira-ticket",
380
+ help=(
381
+ "The top level jira ticket used to track the project that this spark-job is related to. "
382
+ "eg: --jira-ticket=PROJ-123. "
383
+ "Must be passed for all adhoc jobs. "
384
+ "See https://yelpwiki.yelpcorp.com/spaces/AML/pages/402885641. "
385
+ ),
386
+ type=str,
387
+ required=False,
388
+ dest="jira_ticket",
389
+ default=None,
390
+ )
391
+
378
392
  aws_group = list_parser.add_argument_group(
379
393
  title="AWS credentials options",
380
394
  description="If --aws-credentials-yaml is specified, it overrides all "
@@ -1383,6 +1397,7 @@ def paasta_spark_run(args: argparse.Namespace) -> int:
1383
1397
  use_eks=True,
1384
1398
  k8s_server_address=k8s_server_address,
1385
1399
  service_account_name=service_account_name,
1400
+ jira_ticket=args.jira_ticket,
1386
1401
  )
1387
1402
 
1388
1403
  return configure_and_run_docker_container(
@@ -135,6 +135,11 @@ def cwd(path):
135
135
  os.chdir(pwd)
136
136
 
137
137
 
138
+ def _force_str_to_int(value: str) -> int:
139
+ """Force convert strings into ints - even if they're technically floats."""
140
+ return int(float(value))
141
+
142
+
138
143
  def get_report_from_splunk(creds, app, filename, criteria_filter):
139
144
  """Expect a table containing at least the following fields:
140
145
  criteria (<service> kubernetes-<cluster_name> <instance>)
@@ -165,29 +170,87 @@ def get_report_from_splunk(creds, app, filename, criteria_filter):
165
170
  resp_text = [x for x in resp_text if x]
166
171
  resp_text = [json.loads(x) for x in resp_text]
167
172
  services_to_update = {}
173
+
168
174
  for d in resp_text:
169
175
  if "result" not in d:
170
176
  raise ValueError(f"Splunk request didn't return any results: {resp_text}")
171
177
  criteria = d["result"]["criteria"]
172
- serv = {}
173
- serv["service"] = criteria.split(" ")[0]
174
- serv["cluster"] = criteria.split(" ")[1]
175
- serv["instance"] = criteria.split(" ")[2]
176
- serv["owner"] = d["result"].get("service_owner", "Unavailable")
177
- serv["date"] = d["result"]["_time"].split(" ")[0]
178
- serv["money"] = d["result"].get("estimated_monthly_savings", 0)
179
- serv["project"] = d["result"].get("project", "Unavailable")
180
- serv["cpus"] = d["result"].get("suggested_cpus")
181
- serv["old_cpus"] = d["result"].get("current_cpus")
182
- serv["mem"] = d["result"].get("suggested_mem")
183
- serv["old_mem"] = d["result"].get("current_mem")
184
- serv["disk"] = d["result"].get("suggested_disk")
185
- serv["old_disk"] = d["result"].get("current_disk")
186
- serv["min_instances"] = d["result"].get("suggested_min_instances")
187
- serv["max_instances"] = d["result"].get("suggested_max_instances")
188
- serv["hacheck_cpus"] = d["result"].get("suggested_hacheck_cpus")
189
- serv["cpu_burst_add"] = d["result"].get("suggested_cpu_burst_add")
190
- services_to_update[criteria] = serv
178
+
179
+ serv = {
180
+ "cluster": criteria.split(" ")[1],
181
+ "date": d["result"]["_time"].split(" ")[0],
182
+ "instance": criteria.split(" ")[2],
183
+ "money": d["result"].get("estimated_monthly_savings", 0),
184
+ "owner": d["result"].get("service_owner", "Unavailable"),
185
+ "project": d["result"].get("project", "Unavailable"),
186
+ "service": criteria.split(" ")[0],
187
+ # only mergeable fields below
188
+ "cpu_burst_add": d["result"].get("suggested_cpu_burst_add"),
189
+ "cpus": d["result"].get("suggested_cpus"),
190
+ "disk": d["result"].get("suggested_disk"),
191
+ "hacheck_cpus": d["result"].get("suggested_hacheck_cpus"),
192
+ "max_instances": d["result"].get("suggested_max_instances"),
193
+ "mem": d["result"].get("suggested_mem"),
194
+ "min_instances": d["result"].get("suggested_min_instances"),
195
+ "old_cpus": d["result"].get("current_cpus"),
196
+ "old_disk": d["result"].get("current_disk"),
197
+ "old_mem": d["result"].get("current_mem"),
198
+ }
199
+
200
+ # the report we get is all strings, so we need to convert them to the right types
201
+ field_conversions = {
202
+ "current_cpus": float,
203
+ "suggested_cpu_burst_add": float,
204
+ "suggested_cpus": float,
205
+ "suggested_disk": int,
206
+ "suggested_hacheck_cpus": float,
207
+ "suggested_max_instances": int,
208
+ "suggested_mem": int,
209
+ "suggested_min_instances": int,
210
+ # not quite sure why these are floats...they're ints in soaconfigs
211
+ "current_disk": _force_str_to_int,
212
+ "current_mem": _force_str_to_int,
213
+ }
214
+
215
+ # merge results if we've already seen rows for this service
216
+ # NOTE: this is necessary since the Splunk search can return multiple rows
217
+ # for the same (service, cluster, instance) tuple as the autotune query
218
+ # treats certain cpu allocation changes as if the tuple was entirely different.
219
+ # this is ostensibly due to a theory that if you update resource allocation, existing
220
+ # autotune data is potentially invalidated - but in practice this ends up hampering
221
+ # autotune for services with highly variable resource allocation - e.g., we have some services
222
+ # that have their cpu allocation tweaked by +/-.1 cpu pretty frequently, but then min/max autotune
223
+ # is never updated.
224
+ if criteria in services_to_update:
225
+ for key in serv:
226
+ # we probably don't want to merge any other fields since they're going to be strings :p
227
+ if key not in field_conversions:
228
+ continue
229
+
230
+ last_proposed_suggestion = services_to_update[criteria][key]
231
+ proposed_suggestion = serv[key]
232
+
233
+ # if both are non-null, take the max of the two
234
+ if (
235
+ last_proposed_suggestion is not None
236
+ and proposed_suggestion is not None
237
+ ):
238
+ services_to_update[criteria][key] = max(
239
+ last_proposed_suggestion,
240
+ proposed_suggestion,
241
+ key=field_conversions[key],
242
+ )
243
+ # otherwise, if only one of these is non-null, use that one
244
+ elif last_proposed_suggestion is not None:
245
+ services_to_update[criteria][key] = last_proposed_suggestion
246
+ elif proposed_suggestion is not None:
247
+ services_to_update[criteria][key] = proposed_suggestion
248
+ # otherwise, if we didn't enter any of the above branches, we're essentially leaving in place the
249
+ # existing None
250
+
251
+ # otherwise, simply add the service to the final report
252
+ else:
253
+ services_to_update[criteria] = serv
191
254
 
192
255
  return {
193
256
  "search": search,
@@ -189,6 +189,8 @@ def remote_run_ready(
189
189
  if not pod:
190
190
  return {"status": 404, "message": "No pod found"}
191
191
  if pod.status.phase == "Running":
192
+ if pod.metadata.deletion_timestamp:
193
+ return {"status": 409, "message": "Pod is terminating"}
192
194
  result: RemoteRunOutcome = {
193
195
  "status": 200,
194
196
  "message": "Pod ready",
@@ -4334,21 +4334,39 @@ def ensure_service_account(
4334
4334
  kube_client: KubeClient,
4335
4335
  k8s_role: Optional[str] = None,
4336
4336
  ) -> None:
4337
+ role_annotation = "eks.amazonaws.com/role-arn"
4337
4338
  sa_name = get_service_account_name(iam_role, k8s_role)
4338
4339
 
4339
- if not any(
4340
- sa.metadata and sa.metadata.name == sa_name
4341
- for sa in get_all_service_accounts(kube_client, namespace)
4342
- ):
4340
+ existing_sa = None
4341
+ for sa in get_all_service_accounts(kube_client, namespace):
4342
+ if sa.metadata and sa.metadata.name == sa_name:
4343
+ existing_sa = sa
4344
+ break
4345
+ else:
4343
4346
  sa = V1ServiceAccount(
4344
4347
  kind="ServiceAccount",
4345
4348
  metadata=V1ObjectMeta(
4346
4349
  name=sa_name,
4347
4350
  namespace=namespace,
4348
- annotations={"eks.amazonaws.com/role-arn": iam_role},
4351
+ annotations={role_annotation: iam_role},
4349
4352
  ),
4350
4353
  )
4351
4354
  kube_client.core.create_namespaced_service_account(namespace=namespace, body=sa)
4355
+ if existing_sa:
4356
+ if (
4357
+ not sa.metadata.annotations
4358
+ or sa.metadata.annotations.get(role_annotation, None) != iam_role
4359
+ ):
4360
+ # NOTE: we don't annotate SAs apart with anything other
4361
+ # than the pod identity role ARN, so this will remove
4362
+ # any annotations that folks may have manually added
4363
+ sa.metadata.annotations = {role_annotation: iam_role}
4364
+ kube_client.core.patch_namespaced_service_account(
4365
+ namespace=namespace, body=sa, name=sa.metadata.name
4366
+ )
4367
+ log.info(
4368
+ f"Updated ServiceAccount {sa.metadata.name} iam_role to {iam_role}"
4369
+ )
4352
4370
 
4353
4371
  # we're expecting that any Role dynamically associated with a Service Account already exists.
4354
4372
  # at Yelp, this means that we have a version-controlled resource for the Role in Puppet.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: paasta-tools
3
- Version: 1.22.0
3
+ Version: 1.23.1
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Author: Compute Infrastructure @ Yelp
6
6
  Author-email: compute-infra@yelp.com
@@ -58,7 +58,7 @@ Requires-Dist: requests-cache>=0.4.10
58
58
  Requires-Dist: retry
59
59
  Requires-Dist: ruamel.yaml
60
60
  Requires-Dist: sensu-plugin
61
- Requires-Dist: service-configuration-lib>=3.3.2
61
+ Requires-Dist: service-configuration-lib>=3.3.3
62
62
  Requires-Dist: signalfx
63
63
  Requires-Dist: slackclient>=1.2.1
64
64
  Requires-Dist: sticht>=1.1.0
@@ -49,7 +49,7 @@ requests-cache>=0.4.10
49
49
  retry
50
50
  ruamel.yaml
51
51
  sensu-plugin
52
- service-configuration-lib>=3.3.2
52
+ service-configuration-lib>=3.3.3
53
53
  signalfx
54
54
  slackclient>=1.2.1
55
55
  sticht>=1.1.0
@@ -56,7 +56,7 @@ requests-cache >= 0.4.10
56
56
  retry
57
57
  ruamel.yaml
58
58
  sensu-plugin
59
- service-configuration-lib >= 3.3.2
59
+ service-configuration-lib >= 3.3.3
60
60
  signalfx
61
61
  slackclient >= 1.2.1
62
62
  sticht >= 1.1.0
@@ -4844,6 +4844,80 @@ def test_ensure_service_account_existing():
4844
4844
  mock_client.rbac.create_namespaced_role_binding.assert_not_called()
4845
4845
 
4846
4846
 
4847
+ def test_ensure_service_account_existing_different_role():
4848
+ old_iam_role = "arn:aws:iam::000000000000:role/some_role"
4849
+ new_iam_role = "arn:aws:iam::000000000000:role/some-role"
4850
+ namespace = "test_namespace"
4851
+ k8s_role = "mega-admin"
4852
+ expected_sa_name = "paasta--arn-aws-iam-000000000000-role-some-role--mega-admin"
4853
+ with mock.patch(
4854
+ "paasta_tools.kubernetes_tools.kube_config.load_kube_config", autospec=True
4855
+ ), mock.patch(
4856
+ "paasta_tools.kubernetes_tools.KubeClient",
4857
+ autospec=False,
4858
+ ) as mock_kube_client:
4859
+ mock_client = mock.Mock()
4860
+ mock_client.core = mock.Mock(spec=kube_client.CoreV1Api)
4861
+ mock_client.rbac = mock.Mock(spec=kube_client.RbacAuthorizationV1Api)
4862
+ mock_client.core.list_namespaced_service_account.return_value = mock.Mock(
4863
+ spec=V1ServiceAccountList
4864
+ )
4865
+ mock_client.core.list_namespaced_service_account.return_value.items = [
4866
+ V1ServiceAccount(
4867
+ kind="ServiceAccount",
4868
+ metadata=V1ObjectMeta(
4869
+ name=expected_sa_name,
4870
+ namespace=namespace,
4871
+ annotations={"eks.amazonaws.com/role-arn": old_iam_role},
4872
+ ),
4873
+ )
4874
+ ]
4875
+ mock_client.rbac.list_namespaced_role_binding.return_value = mock.Mock(
4876
+ spec=V1RoleBinding,
4877
+ )
4878
+ mock_client.rbac.list_namespaced_role_binding.return_value.items = [
4879
+ V1RoleBinding(
4880
+ kind="ServiceAccount",
4881
+ metadata=V1ObjectMeta(
4882
+ name=expected_sa_name,
4883
+ namespace=namespace,
4884
+ ),
4885
+ role_ref=V1RoleRef(
4886
+ api_group="rbac.authorization.k8s.io",
4887
+ kind="Role",
4888
+ name=k8s_role,
4889
+ ),
4890
+ subjects=[
4891
+ V1Subject(
4892
+ kind="ServiceAccount",
4893
+ namespace=namespace,
4894
+ name=expected_sa_name,
4895
+ )
4896
+ ],
4897
+ )
4898
+ ]
4899
+ mock_kube_client.return_value = mock_client
4900
+ ensure_service_account(
4901
+ new_iam_role,
4902
+ namespace=namespace,
4903
+ kube_client=mock_client,
4904
+ k8s_role=k8s_role,
4905
+ )
4906
+ mock_client.core.create_namespaced_service_account.assert_not_called()
4907
+ mock_client.core.patch_namespaced_service_account.assert_called_once_with(
4908
+ namespace=namespace,
4909
+ body=V1ServiceAccount(
4910
+ kind="ServiceAccount",
4911
+ metadata=V1ObjectMeta(
4912
+ name=expected_sa_name,
4913
+ namespace=namespace,
4914
+ annotations={"eks.amazonaws.com/role-arn": new_iam_role},
4915
+ ),
4916
+ ),
4917
+ name=expected_sa_name,
4918
+ )
4919
+
4920
+
4847
4921
  def test_ensure_service_account_existing_create_rb_only():
4848
4922
  iam_role = "arn:aws:iam::000000000000:role/some_role"
4849
4923
  namespace = "test_namespace"
File without changes
File without changes
File without changes