paasta-tools 1.4.7__tar.gz → 1.4.8__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 (296) hide show
  1. {paasta-tools-1.4.7/paasta_tools.egg-info → paasta-tools-1.4.8}/PKG-INFO +1 -1
  2. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/__init__.py +1 -1
  3. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -20
  4. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/kubernetes_tools.py +14 -14
  5. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/setup_kubernetes_job.py +0 -1
  6. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/setup_tron_namespace.py +0 -41
  7. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/spark_tools.py +0 -21
  8. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/tron_tools.py +20 -61
  9. {paasta-tools-1.4.7 → paasta-tools-1.4.8/paasta_tools.egg-info}/PKG-INFO +1 -1
  10. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/MANIFEST.in +0 -0
  11. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/README.md +0 -0
  12. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/k8s_itests/__init__.py +0 -0
  13. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/k8s_itests/test_autoscaling.py +0 -0
  14. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/k8s_itests/utils.py +0 -0
  15. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/adhoc_tools.py +0 -0
  16. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/__init__.py +0 -0
  17. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/api.py +0 -0
  18. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/api_docs/swagger.json +0 -0
  19. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/client.py +0 -0
  20. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/settings.py +0 -0
  21. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/tweens/__init__.py +0 -0
  22. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/tweens/profiling.py +0 -0
  23. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/tweens/request_logger.py +0 -0
  24. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/views/__init__.py +0 -0
  25. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/views/autoscaler.py +0 -0
  26. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/views/exception.py +0 -0
  27. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/views/flink.py +0 -0
  28. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/views/instance.py +0 -0
  29. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/views/pause_autoscaler.py +0 -0
  30. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/views/resources.py +0 -0
  31. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/views/service.py +0 -0
  32. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/api/views/version.py +0 -0
  33. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/apply_external_resources.py +0 -0
  34. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/async_utils.py +0 -0
  35. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/autoscaling/__init__.py +0 -0
  36. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
  37. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/autoscaling/forecasting.py +0 -0
  38. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
  39. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
  40. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/autoscaling/utils.py +0 -0
  41. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/bounce_lib.py +0 -0
  42. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/broadcast_log_to_services.py +0 -0
  43. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cassandracluster_tools.py +0 -0
  44. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/check_autoscaler_max_instances.py +0 -0
  45. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
  46. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/check_flink_services_health.py +0 -0
  47. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/check_kubernetes_api.py +0 -0
  48. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/check_kubernetes_services_replication.py +0 -0
  49. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/check_oom_events.py +0 -0
  50. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/check_services_replication_tools.py +0 -0
  51. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/check_spark_jobs.py +0 -0
  52. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
  53. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
  54. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
  55. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cleanup_tron_namespaces.py +0 -0
  56. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/__init__.py +0 -0
  57. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cli.py +0 -0
  58. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/__init__.py +0 -0
  59. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/autoscale.py +0 -0
  60. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/check.py +0 -0
  61. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/cook_image.py +0 -0
  62. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
  63. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/get_image_version.py +0 -0
  64. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
  65. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/info.py +0 -0
  66. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/itest.py +0 -0
  67. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/list.py +0 -0
  68. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/list_clusters.py +0 -0
  69. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
  70. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/local_run.py +0 -0
  71. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/logs.py +0 -0
  72. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
  73. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/mesh_status.py +0 -0
  74. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
  75. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
  76. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/remote_run.py +0 -0
  77. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/rollback.py +0 -0
  78. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/secret.py +0 -0
  79. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/security_check.py +0 -0
  80. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/spark_run.py +0 -0
  81. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
  82. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/status.py +0 -0
  83. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/validate.py +0 -0
  84. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
  85. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/fsm/__init__.py +0 -0
  86. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/fsm/autosuggest.py +0 -0
  87. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/fsm/template/README.md +0 -0
  88. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
  89. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
  90. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
  91. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
  92. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
  93. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/fsm_cmd.py +0 -0
  94. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
  95. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
  96. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
  97. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
  98. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
  99. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
  100. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/eks_schema.json +0 -0
  101. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
  102. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
  103. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/service_schema.json +0 -0
  104. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
  105. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/schemas/tron_schema.json +0 -0
  106. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/cli/utils.py +0 -0
  107. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/clusterman.py +0 -0
  108. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/config_utils.py +0 -0
  109. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/__init__.py +0 -0
  110. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
  111. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
  112. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/check_orphans.py +0 -0
  113. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
  114. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/create_paasta_playground.py +0 -0
  115. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
  116. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
  117. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/habitat_fixer.py +0 -0
  118. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/ide_helper.py +0 -0
  119. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
  120. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
  121. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/kill_bad_containers.py +0 -0
  122. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
  123. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/mock_patch_checker.py +0 -0
  124. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
  125. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/render_template.py +0 -0
  126. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
  127. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/service_shard_remove.py +0 -0
  128. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/service_shard_update.py +0 -0
  129. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/shared_ip_check.py +0 -0
  130. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
  131. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/delete_kubernetes_deployments.py +0 -0
  132. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/deployment_utils.py +0 -0
  133. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/docker_wrapper.py +0 -0
  134. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/docker_wrapper_imports.py +0 -0
  135. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/drain_lib.py +0 -0
  136. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/dump_locally_running_services.py +0 -0
  137. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/eks_tools.py +0 -0
  138. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/envoy_tools.py +0 -0
  139. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/firewall.py +0 -0
  140. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/firewall_logging.py +0 -0
  141. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/firewall_update.py +0 -0
  142. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/flink_tools.py +0 -0
  143. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/flinkeks_tools.py +0 -0
  144. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/frameworks/__init__.py +0 -0
  145. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
  146. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/frameworks/constraints.py +0 -0
  147. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/frameworks/native_scheduler.py +0 -0
  148. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/frameworks/native_service_config.py +0 -0
  149. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/frameworks/task_store.py +0 -0
  150. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/generate_all_deployments +0 -0
  151. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/generate_authenticating_services.py +0 -0
  152. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/generate_deployments_for_service.py +0 -0
  153. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/generate_services_file.py +0 -0
  154. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/generate_services_yaml.py +0 -0
  155. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/hacheck.py +0 -0
  156. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/instance/__init__.py +0 -0
  157. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
  158. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/instance/kubernetes.py +0 -0
  159. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/iptables.py +0 -0
  160. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/kafkacluster_tools.py +0 -0
  161. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/kubernetes/__init__.py +0 -0
  162. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/kubernetes/application/__init__.py +0 -0
  163. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/kubernetes/application/tools.py +0 -0
  164. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/kubernetes/bin/__init__.py +0 -0
  165. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
  166. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
  167. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
  168. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/list_kubernetes_service_instances.py +0 -0
  169. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/list_tron_namespaces.py +0 -0
  170. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/log_task_lifecycle_events.py +0 -0
  171. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/long_running_service_tools.py +0 -0
  172. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mac_address.py +0 -0
  173. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/marathon_dashboard.py +0 -0
  174. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/__init__.py +0 -0
  175. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/cfg.py +0 -0
  176. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/cluster.py +0 -0
  177. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/exceptions.py +0 -0
  178. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/framework.py +0 -0
  179. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/log.py +0 -0
  180. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/master.py +0 -0
  181. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/mesos_file.py +0 -0
  182. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/parallel.py +0 -0
  183. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/slave.py +0 -0
  184. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/task.py +0 -0
  185. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/util.py +0 -0
  186. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos/zookeeper.py +0 -0
  187. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos_maintenance.py +0 -0
  188. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/mesos_tools.py +0 -0
  189. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/metrics/__init__.py +0 -0
  190. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/metrics/metastatus_lib.py +0 -0
  191. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/metrics/metrics_lib.py +0 -0
  192. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/monitoring/__init__.py +0 -0
  193. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
  194. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/monitoring/kill_orphaned_docker_containers.py +0 -0
  195. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/monitoring_tools.py +0 -0
  196. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/monkrelaycluster_tools.py +0 -0
  197. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/nrtsearchservice_tools.py +0 -0
  198. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
  199. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/oom_logger.py +0 -0
  200. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paasta_deploy_tron_jobs +0 -0
  201. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paasta_execute_docker_command.py +0 -0
  202. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paasta_native_serviceinit.py +0 -0
  203. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paasta_remote_run.py +0 -0
  204. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paasta_service_config_loader.py +0 -0
  205. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/__init__.py +0 -0
  206. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/api/__init__.py +0 -0
  207. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
  208. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/api/default_api.py +0 -0
  209. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/api/resources_api.py +0 -0
  210. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/api/service_api.py +0 -0
  211. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/api_client.py +0 -0
  212. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/apis/__init__.py +0 -0
  213. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/configuration.py +0 -0
  214. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/exceptions.py +0 -0
  215. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/__init__.py +0 -0
  216. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
  217. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
  218. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
  219. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
  220. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
  221. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
  222. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
  223. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
  224. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/flink_config.py +0 -0
  225. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/flink_job.py +0 -0
  226. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
  227. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
  228. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
  229. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
  230. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/inline_object.py +0 -0
  231. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
  232. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
  233. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
  234. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
  235. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_status.py +0 -0
  236. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
  237. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
  238. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
  239. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
  240. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
  241. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
  242. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
  243. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
  244. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_status_vitesscluster.py +0 -0
  245. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
  246. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
  247. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
  248. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
  249. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
  250. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
  251. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
  252. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
  253. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
  254. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
  255. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/resource.py +0 -0
  256. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/resource_item.py +0 -0
  257. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/resource_value.py +0 -0
  258. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
  259. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
  260. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
  261. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
  262. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/model_utils.py +0 -0
  263. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/models/__init__.py +0 -0
  264. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/paastaapi/rest.py +0 -0
  265. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/prune_completed_pods.py +0 -0
  266. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/puppet_service_tools.py +0 -0
  267. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/py.typed +0 -0
  268. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/remote_git.py +0 -0
  269. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
  270. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/run-paasta-api-playground.py +0 -0
  271. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/secret_providers/__init__.py +0 -0
  272. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/secret_providers/vault.py +0 -0
  273. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/secret_tools.py +0 -0
  274. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/setup_istio_mesh.py +0 -0
  275. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/setup_kubernetes_cr.py +0 -0
  276. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/setup_kubernetes_crd.py +0 -0
  277. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
  278. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
  279. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/slack.py +0 -0
  280. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/smartstack_tools.py +0 -0
  281. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
  282. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/tron/__init__.py +0 -0
  283. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/tron/client.py +0 -0
  284. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/tron/tron_command_context.py +0 -0
  285. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/tron/tron_timeutils.py +0 -0
  286. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/utils.py +0 -0
  287. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools/vitesscluster_tools.py +0 -0
  288. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools.egg-info/SOURCES.txt +0 -0
  289. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools.egg-info/dependency_links.txt +0 -0
  290. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools.egg-info/entry_points.txt +0 -0
  291. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools.egg-info/requires.txt +0 -0
  292. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/paasta_tools.egg-info/top_level.txt +0 -0
  293. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/pyproject.toml +0 -0
  294. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/requirements-minimal.txt +0 -0
  295. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/setup.cfg +0 -0
  296. {paasta-tools-1.4.7 → paasta-tools-1.4.8}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: paasta-tools
3
- Version: 1.4.7
3
+ Version: 1.4.8
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Home-page: UNKNOWN
6
6
  Author: Compute Infrastructure @ Yelp
@@ -17,4 +17,4 @@
17
17
  # setup phase, the dependencies may not exist on disk yet.
18
18
  #
19
19
  # Don't bump version manually. See `make release` docs in ./Makefile
20
- __version__ = "1.4.7"
20
+ __version__ = "1.4.8"
@@ -15,7 +15,6 @@ from paasta_tools.eks_tools import load_eks_service_config_no_cache
15
15
  from paasta_tools.kubernetes_tools import create_deployment
16
16
  from paasta_tools.kubernetes_tools import create_pod_disruption_budget
17
17
  from paasta_tools.kubernetes_tools import create_stateful_set
18
- from paasta_tools.kubernetes_tools import ensure_service_account
19
18
  from paasta_tools.kubernetes_tools import KubeClient
20
19
  from paasta_tools.kubernetes_tools import KubeDeployment
21
20
  from paasta_tools.kubernetes_tools import KubernetesDeploymentConfig
@@ -121,25 +120,6 @@ class Application(ABC):
121
120
  """
122
121
  self.ensure_pod_disruption_budget(kube_client, self.soa_config.get_namespace())
123
122
 
124
- def update_dependency_api_objects(self, kube_client: KubeClient) -> None:
125
- """
126
- Update related Kubernetes API objects that should be updated before the main object,
127
- such as service accounts.
128
- :param kube_client:
129
- """
130
- self.ensure_service_account(kube_client)
131
-
132
- def ensure_service_account(self, kube_client: KubeClient) -> None:
133
- """
134
- Ensure that the service account for this application exists
135
- :param kube_client:
136
- """
137
- ensure_service_account(
138
- iam_role=self.soa_config.get_iam_role(),
139
- namespace=self.soa_config.get_namespace(),
140
- kube_client=kube_client,
141
- )
142
-
143
123
  def delete_pod_disruption_budget(self, kube_client: KubeClient) -> None:
144
124
  try:
145
125
  kube_client.policy.delete_namespaced_pod_disruption_budget(
@@ -2220,9 +2220,9 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
2220
2220
  annotations["iam.amazonaws.com/role"] = ""
2221
2221
  iam_role = self.get_iam_role()
2222
2222
  if iam_role:
2223
- pod_spec_kwargs["service_account_name"] = get_service_account_name(
2224
- iam_role
2225
- )
2223
+ pod_spec_kwargs[
2224
+ "service_account_name"
2225
+ ] = create_or_find_service_account_name(iam_role, self.get_namespace())
2226
2226
  if fs_group is None:
2227
2227
  # We need some reasoable default for group id of a process
2228
2228
  # running inside the container. Seems like most of such
@@ -4050,9 +4050,12 @@ def get_all_limit_ranges(
4050
4050
  _RE_NORMALIZE_IAM_ROLE = re.compile(r"[^0-9a-zA-Z]+")
4051
4051
 
4052
4052
 
4053
- def get_service_account_name(
4053
+ def create_or_find_service_account_name(
4054
4054
  iam_role: str,
4055
+ namespace: str,
4055
4056
  k8s_role: Optional[str] = None,
4057
+ kubeconfig_file: Optional[str] = None,
4058
+ dry_run: bool = False,
4056
4059
  ) -> str:
4057
4060
  # the service account is expected to always be prefixed with paasta- as using the actual namespace
4058
4061
  # potentially wastes a lot of characters (e.g., paasta-nrtsearchservices) that could be used for
@@ -4078,17 +4081,12 @@ def get_service_account_name(
4078
4081
  "Expected at least one of iam_role or k8s_role to be passed in!"
4079
4082
  )
4080
4083
 
4081
- return sa_name
4082
-
4083
-
4084
- def ensure_service_account(
4085
- iam_role: str,
4086
- namespace: str,
4087
- kube_client: KubeClient,
4088
- k8s_role: Optional[str] = None,
4089
- ) -> None:
4090
- sa_name = get_service_account_name(iam_role, k8s_role)
4084
+ # if someone is dry-running paasta_setup_tron_namespace or some other tool that
4085
+ # calls this function, we probably don't want to mutate k8s state :)
4086
+ if dry_run:
4087
+ return sa_name
4091
4088
 
4089
+ kube_client = KubeClient(config_file=kubeconfig_file)
4092
4090
  if not any(
4093
4091
  sa.metadata and sa.metadata.name == sa_name
4094
4092
  for sa in get_all_service_accounts(kube_client, namespace)
@@ -4137,6 +4135,8 @@ def ensure_service_account(
4137
4135
  namespace=namespace, body=role_binding
4138
4136
  )
4139
4137
 
4138
+ return sa_name
4139
+
4140
4140
 
4141
4141
  def mode_to_int(mode: Optional[Union[str, int]]) -> Optional[int]:
4142
4142
  if mode is not None:
@@ -281,7 +281,6 @@ def setup_kube_deployments(
281
281
  "paasta_namespace": app.kube_deployment.namespace,
282
282
  }
283
283
  try:
284
- app.update_dependency_api_objects(kube_client)
285
284
  if (
286
285
  app.kube_deployment.service,
287
286
  app.kube_deployment.instance,
@@ -26,13 +26,8 @@ import sys
26
26
 
27
27
  import ruamel.yaml as yaml
28
28
 
29
- from paasta_tools import spark_tools
30
29
  from paasta_tools import tron_tools
31
- from paasta_tools.kubernetes_tools import ensure_service_account
32
- from paasta_tools.kubernetes_tools import KubeClient
33
- from paasta_tools.tron_tools import KUBERNETES_NAMESPACE
34
30
  from paasta_tools.tron_tools import MASTER_NAMESPACE
35
- from paasta_tools.utils import load_system_paasta_config
36
31
 
37
32
  log = logging.getLogger(__name__)
38
33
 
@@ -68,32 +63,6 @@ def parse_args():
68
63
  return args
69
64
 
70
65
 
71
- def ensure_service_accounts(
72
- raw_config: str, kube_client: KubeClient, spark_kube_client: KubeClient
73
- ) -> None:
74
- # this is kinda silly, but the tron create_config functions return strings
75
- # we should refactor to pass the dicts around until the we're going to send the config to tron
76
- # (where we can finally convert it to a string)
77
- config = yaml.safe_load(raw_config)
78
- for _, job in config.get("jobs", {}).items():
79
- for _, action in job.get("actions", {}).items():
80
- if action.get("service_account_name") is not None:
81
- ensure_service_account(
82
- action["service_account_name"],
83
- namespace=KUBERNETES_NAMESPACE,
84
- kube_client=kube_client,
85
- )
86
- # spark executors are special in that we want the SA to exist in two namespaces:
87
- # the tron namespace - for the spark driver
88
- # and the spark namespace - for the spark executor
89
- if action.get("executor") == "spark":
90
- ensure_service_account(
91
- action["service_account_name"],
92
- namespace=spark_tools.SPARK_EXECUTOR_NAMESPACE,
93
- kube_client=spark_kube_client,
94
- )
95
-
96
-
97
66
  def main():
98
67
  args = parse_args()
99
68
  log_level = logging.DEBUG if args.verbose else logging.INFO
@@ -164,16 +133,6 @@ def main():
164
133
  log.info(f"{new_config}")
165
134
  updated.append(service)
166
135
  else:
167
- # NOTE: these are all lru_cache'd so it should be fine to call these for every service
168
- system_paasta_config = load_system_paasta_config()
169
- kube_client = KubeClient()
170
- spark_kube_client = KubeClient(
171
- config_file=system_paasta_config.get_spark_kubeconfig()
172
- )
173
- # PaaSTA will not necessarily have created the SAs we want to use
174
- # ...so let's go ahead and create them!
175
- ensure_service_accounts(new_config, kube_client, spark_kube_client)
176
-
177
136
  if client.update_namespace(service, new_config):
178
137
  updated.append(service)
179
138
  log.debug(f"Updated {service}")
@@ -6,7 +6,6 @@ from typing import Any
6
6
  from typing import cast
7
7
  from typing import Dict
8
8
  from typing import List
9
- from typing import Literal
10
9
  from typing import Mapping
11
10
  from typing import Set
12
11
 
@@ -24,7 +23,6 @@ SPARK_DRIVER_POOL = "stable"
24
23
  SPARK_JOB_USER = "TRON"
25
24
  SPARK_PROMETHEUS_SHARD = "ml-compute"
26
25
  SPARK_DNS_POD_TEMPLATE = "/nail/srv/configs/spark_dns_pod_template.yaml"
27
- MEM_MULTIPLIER = {"k": 1024, "m": 1024**2, "g": 1024**3, "t": 1024**4}
28
26
 
29
27
  log = logging.getLogger(__name__)
30
28
 
@@ -249,22 +247,3 @@ def get_spark_driver_monitoring_labels(
249
247
  "spark.yelp.com/driver_ui_port": ui_port_str,
250
248
  }
251
249
  return labels
252
-
253
-
254
- def get_spark_memory_in_unit(mem: str, unit: Literal["k", "m", "g", "t"]) -> float:
255
- """
256
- Converts Spark memory to the desired unit.
257
- mem is the same format as JVM memory strings: just number or number followed by 'k', 'm', 'g' or 't'.
258
- unit can be 'k', 'm', 'g' or 't'.
259
- Returns memory as a float converted to the desired unit.
260
- """
261
- try:
262
- memory_bytes = float(mem)
263
- except ValueError:
264
- try:
265
- memory_bytes = float(mem[:-1]) * MEM_MULTIPLIER[mem[-1]]
266
- except (ValueError, IndexError):
267
- print(f"Unable to parse memory value {mem}. Defaulting to 2 GB.")
268
- memory_bytes = 2147483648 # default to 2 GB
269
- memory_unit = memory_bytes / MEM_MULTIPLIER[unit]
270
- return memory_unit
@@ -62,7 +62,7 @@ from paasta_tools import spark_tools
62
62
 
63
63
  from paasta_tools.kubernetes_tools import (
64
64
  allowlist_denylist_to_requirements,
65
- get_service_account_name,
65
+ create_or_find_service_account_name,
66
66
  limit_size_with_hash,
67
67
  raw_selectors_to_requirements,
68
68
  to_node_label,
@@ -280,40 +280,9 @@ class TronActionConfig(InstanceConfig):
280
280
  soa_dir=soa_dir,
281
281
  )
282
282
  self.job, self.action = decompose_instance(instance)
283
-
284
283
  # Indicate whether this config object is created for validation
285
284
  self.for_validation = for_validation
286
285
 
287
- self.action_spark_config = None
288
- if self.get_executor() == "spark":
289
- # build the complete Spark configuration
290
- # TODO: add conditional check for Spark specific commands spark-submit, pyspark etc ?
291
- self.action_spark_config = self.build_spark_config()
292
-
293
- def get_cpus(self) -> float:
294
- # set Spark driver pod CPU if it is specified by Spark arguments
295
- if (
296
- self.action_spark_config
297
- and "spark.driver.cores" in self.action_spark_config
298
- ):
299
- return float(self.action_spark_config["spark.driver.cores"])
300
- # we fall back to this default if there's no spark.driver.cores config
301
- return super().get_cpus()
302
-
303
- def get_mem(self) -> float:
304
- # set Spark driver pod memory if it is specified by Spark arguments
305
- if (
306
- self.action_spark_config
307
- and "spark.driver.memory" in self.action_spark_config
308
- ):
309
- return int(
310
- spark_tools.get_spark_memory_in_unit(
311
- self.action_spark_config["spark.driver.memory"], "m"
312
- )
313
- )
314
- # we fall back to this default if there's no spark.driver.memory config
315
- return super().get_mem()
316
-
317
286
  def build_spark_config(self) -> Dict[str, str]:
318
287
  system_paasta_config = load_system_paasta_config()
319
288
  resolved_cluster = system_paasta_config.get_eks_cluster_aliases().get(
@@ -385,11 +354,15 @@ class TronActionConfig(InstanceConfig):
385
354
  "spark.kubernetes.executor.label.yelp.com/owner", self.get_team()
386
355
  )
387
356
 
357
+ # We need to make sure the Service Account used by the executors has been created.
388
358
  # We are using the Service Account created using the provided or default IAM role.
389
359
  spark_conf[
390
360
  "spark.kubernetes.authenticate.executor.serviceAccountName"
391
- ] = get_service_account_name(
361
+ ] = create_or_find_service_account_name(
392
362
  iam_role=self.get_spark_executor_iam_role(),
363
+ namespace=spark_tools.SPARK_EXECUTOR_NAMESPACE,
364
+ kubeconfig_file=system_paasta_config.get_spark_kubeconfig(),
365
+ dry_run=self.for_validation,
393
366
  )
394
367
 
395
368
  return spark_conf
@@ -467,6 +440,7 @@ class TronActionConfig(InstanceConfig):
467
440
  system_paasta_config: Optional["SystemPaastaConfig"] = None,
468
441
  ) -> Dict[str, str]:
469
442
  env = super().get_env(system_paasta_config=system_paasta_config)
443
+
470
444
  if self.get_executor() == "spark":
471
445
  # Required by some sdks like boto3 client. Throws NoRegionError otherwise.
472
446
  # AWS_REGION takes precedence if set.
@@ -631,20 +605,6 @@ class TronActionConfig(InstanceConfig):
631
605
  error_msgs.append(
632
606
  f"{self.get_job_name()}.{self.get_action_name()} must have a deploy_group set"
633
607
  )
634
- # We are not allowing users to specify `cpus` and `mem` configuration if the action is a Spark job
635
- # with driver running on k8s (executor: spark), because we derive these values from `spark.driver.cores`
636
- # and `spark.driver.memory` in order to avoid confusion.
637
- if self.get_executor() == "spark":
638
- if "cpus" in self.config_dict:
639
- error_msgs.append(
640
- f"{self.get_job_name()}.{self.get_action_name()} is a Spark job. `cpus` config is not allowed. "
641
- f"Please specify the driver cores using `spark.driver.cores`."
642
- )
643
- if "mem" in self.config_dict:
644
- error_msgs.append(
645
- f"{self.get_job_name()}.{self.get_action_name()} is a Spark job. `mem` config is not allowed. "
646
- f"Please specify the driver memory using `spark.driver.memory`."
647
- )
648
608
  return error_msgs
649
609
 
650
610
  def get_pool(self) -> str:
@@ -992,14 +952,20 @@ def format_tron_action_dict(action_config: TronActionConfig):
992
952
 
993
953
  result["labels"]["yelp.com/owner"] = "compute_infra_platform_experience"
994
954
 
955
+ # create_or_find_service_account_name requires k8s credentials, and we don't
956
+ # have those available for CI to use (nor do we check these for normal PaaSTA
957
+ # services, so we're not doing anything "new" by skipping this)
995
958
  if (
996
959
  action_config.get_iam_role_provider() == "aws"
997
960
  and action_config.get_iam_role()
961
+ and not action_config.for_validation
998
962
  ):
999
963
  # this service account will be used for normal Tron batches as well as for Spark drivers
1000
- result["service_account_name"] = get_service_account_name(
964
+ result["service_account_name"] = create_or_find_service_account_name(
1001
965
  iam_role=action_config.get_iam_role(),
966
+ namespace=EXECUTOR_TYPE_TO_NAMESPACE[executor],
1002
967
  k8s_role=None,
968
+ dry_run=action_config.for_validation,
1003
969
  )
1004
970
 
1005
971
  # service account token volumes for service authentication
@@ -1009,26 +975,21 @@ def format_tron_action_dict(action_config: TronActionConfig):
1009
975
  if executor == "spark":
1010
976
  is_mrjob = action_config.config_dict.get("mrjob", False)
1011
977
  system_paasta_config = load_system_paasta_config()
1012
- # inject additional Spark configs in case of Spark commands
978
+ # inject spark configs to the original spark-submit command
979
+ spark_config = action_config.build_spark_config()
1013
980
  result["command"] = spark_tools.build_spark_command(
1014
981
  result["command"],
1015
- action_config.action_spark_config,
982
+ spark_config,
1016
983
  is_mrjob,
1017
984
  action_config.config_dict.get(
1018
985
  "max_runtime", spark_tools.DEFAULT_SPARK_RUNTIME_TIMEOUT
1019
986
  ),
1020
987
  )
1021
- # point to the KUBECONFIG needed by Spark driver
1022
988
  result["env"]["KUBECONFIG"] = system_paasta_config.get_spark_kubeconfig()
1023
-
1024
989
  # spark, unlike normal batches, needs to expose several ports for things like the spark
1025
990
  # ui and for executor->driver communication
1026
991
  result["ports"] = list(
1027
- set(
1028
- spark_tools.get_spark_ports_from_config(
1029
- action_config.action_spark_config
1030
- )
1031
- )
992
+ set(spark_tools.get_spark_ports_from_config(spark_config))
1032
993
  )
1033
994
  # mount KUBECONFIG file for Spark drivers to communicate with EKS cluster
1034
995
  extra_volumes.append(
@@ -1042,12 +1003,10 @@ def format_tron_action_dict(action_config: TronActionConfig):
1042
1003
  )
1043
1004
  # Add pod annotations and labels for Spark monitoring metrics
1044
1005
  monitoring_annotations = (
1045
- spark_tools.get_spark_driver_monitoring_annotations(
1046
- action_config.action_spark_config
1047
- )
1006
+ spark_tools.get_spark_driver_monitoring_annotations(spark_config)
1048
1007
  )
1049
1008
  monitoring_labels = spark_tools.get_spark_driver_monitoring_labels(
1050
- action_config.action_spark_config
1009
+ spark_config
1051
1010
  )
1052
1011
  result["annotations"].update(monitoring_annotations)
1053
1012
  result["labels"].update(monitoring_labels)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: paasta-tools
3
- Version: 1.4.7
3
+ Version: 1.4.8
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Home-page: UNKNOWN
6
6
  Author: Compute Infrastructure @ Yelp
File without changes
File without changes