paasta-tools 1.2.0__tar.gz → 1.4.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 (295) hide show
  1. {paasta-tools-1.2.0/paasta_tools.egg-info → paasta-tools-1.4.1}/PKG-INFO +1 -1
  2. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/__init__.py +1 -1
  3. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/generate_authenticating_services.py +3 -1
  4. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes_tools.py +40 -0
  5. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/spark_tools.py +21 -0
  6. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/tron_tools.py +69 -7
  7. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/utils.py +12 -4
  8. {paasta-tools-1.2.0 → paasta-tools-1.4.1/paasta_tools.egg-info}/PKG-INFO +1 -1
  9. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools.egg-info/requires.txt +1 -1
  10. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/requirements-minimal.txt +1 -3
  11. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/MANIFEST.in +0 -0
  12. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/README.md +0 -0
  13. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/k8s_itests/__init__.py +0 -0
  14. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/k8s_itests/test_autoscaling.py +0 -0
  15. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/k8s_itests/utils.py +0 -0
  16. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/adhoc_tools.py +0 -0
  17. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/__init__.py +0 -0
  18. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/api.py +0 -0
  19. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/api_docs/swagger.json +0 -0
  20. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/client.py +0 -0
  21. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/settings.py +0 -0
  22. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/tweens/__init__.py +0 -0
  23. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/tweens/profiling.py +0 -0
  24. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/tweens/request_logger.py +0 -0
  25. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/__init__.py +0 -0
  26. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/autoscaler.py +0 -0
  27. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/exception.py +0 -0
  28. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/flink.py +0 -0
  29. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/instance.py +0 -0
  30. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/pause_autoscaler.py +0 -0
  31. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/resources.py +0 -0
  32. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/service.py +0 -0
  33. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/api/views/version.py +0 -0
  34. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/apply_external_resources.py +0 -0
  35. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/async_utils.py +0 -0
  36. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/__init__.py +0 -0
  37. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
  38. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/forecasting.py +0 -0
  39. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
  40. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
  41. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/autoscaling/utils.py +0 -0
  42. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/bounce_lib.py +0 -0
  43. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/broadcast_log_to_services.py +0 -0
  44. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cassandracluster_tools.py +0 -0
  45. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_autoscaler_max_instances.py +0 -0
  46. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
  47. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_flink_services_health.py +0 -0
  48. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_kubernetes_api.py +0 -0
  49. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_kubernetes_services_replication.py +0 -0
  50. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_oom_events.py +0 -0
  51. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_services_replication_tools.py +0 -0
  52. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/check_spark_jobs.py +0 -0
  53. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
  54. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
  55. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
  56. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cleanup_tron_namespaces.py +0 -0
  57. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/__init__.py +0 -0
  58. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cli.py +0 -0
  59. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/__init__.py +0 -0
  60. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/autoscale.py +0 -0
  61. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/check.py +0 -0
  62. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/cook_image.py +0 -0
  63. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
  64. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/get_image_version.py +0 -0
  65. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
  66. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/info.py +0 -0
  67. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/itest.py +0 -0
  68. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/list.py +0 -0
  69. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/list_clusters.py +0 -0
  70. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
  71. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/local_run.py +0 -0
  72. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/logs.py +0 -0
  73. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
  74. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/mesh_status.py +0 -0
  75. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
  76. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
  77. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/remote_run.py +0 -0
  78. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/rollback.py +0 -0
  79. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/secret.py +0 -0
  80. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/security_check.py +0 -0
  81. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/spark_run.py +0 -0
  82. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
  83. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/status.py +0 -0
  84. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/validate.py +0 -0
  85. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
  86. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/__init__.py +0 -0
  87. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/autosuggest.py +0 -0
  88. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/README.md +0 -0
  89. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
  90. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
  91. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
  92. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
  93. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
  94. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/fsm_cmd.py +0 -0
  95. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
  96. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
  97. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
  98. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
  99. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
  100. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
  101. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/eks_schema.json +0 -0
  102. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
  103. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
  104. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/service_schema.json +0 -0
  105. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
  106. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/schemas/tron_schema.json +0 -0
  107. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/cli/utils.py +0 -0
  108. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/clusterman.py +0 -0
  109. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/config_utils.py +0 -0
  110. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/__init__.py +0 -0
  111. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
  112. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
  113. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/check_orphans.py +0 -0
  114. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
  115. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/create_paasta_playground.py +0 -0
  116. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
  117. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
  118. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/habitat_fixer.py +0 -0
  119. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/ide_helper.py +0 -0
  120. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
  121. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
  122. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/kill_bad_containers.py +0 -0
  123. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
  124. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/mock_patch_checker.py +0 -0
  125. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
  126. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/render_template.py +0 -0
  127. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
  128. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/service_shard_remove.py +0 -0
  129. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/service_shard_update.py +0 -0
  130. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/shared_ip_check.py +0 -0
  131. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
  132. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/delete_kubernetes_deployments.py +0 -0
  133. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/deployment_utils.py +0 -0
  134. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/docker_wrapper.py +0 -0
  135. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/docker_wrapper_imports.py +0 -0
  136. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/drain_lib.py +0 -0
  137. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/dump_locally_running_services.py +0 -0
  138. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/eks_tools.py +0 -0
  139. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/envoy_tools.py +0 -0
  140. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/firewall.py +0 -0
  141. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/firewall_logging.py +0 -0
  142. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/firewall_update.py +0 -0
  143. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/flink_tools.py +0 -0
  144. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/flinkeks_tools.py +0 -0
  145. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/__init__.py +0 -0
  146. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
  147. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/constraints.py +0 -0
  148. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/native_scheduler.py +0 -0
  149. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/native_service_config.py +0 -0
  150. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/frameworks/task_store.py +0 -0
  151. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/generate_all_deployments +0 -0
  152. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/generate_deployments_for_service.py +0 -0
  153. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/generate_services_file.py +0 -0
  154. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/generate_services_yaml.py +0 -0
  155. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/hacheck.py +0 -0
  156. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/instance/__init__.py +0 -0
  157. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
  158. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/instance/kubernetes.py +0 -0
  159. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/iptables.py +0 -0
  160. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kafkacluster_tools.py +0 -0
  161. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/__init__.py +0 -0
  162. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/application/__init__.py +0 -0
  163. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
  164. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/application/tools.py +0 -0
  165. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/bin/__init__.py +0 -0
  166. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
  167. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
  168. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
  169. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/list_kubernetes_service_instances.py +0 -0
  170. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/list_tron_namespaces.py +0 -0
  171. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/log_task_lifecycle_events.py +0 -0
  172. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/long_running_service_tools.py +0 -0
  173. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mac_address.py +0 -0
  174. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/marathon_dashboard.py +0 -0
  175. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/__init__.py +0 -0
  176. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/cfg.py +0 -0
  177. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/cluster.py +0 -0
  178. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/exceptions.py +0 -0
  179. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/framework.py +0 -0
  180. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/log.py +0 -0
  181. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/master.py +0 -0
  182. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/mesos_file.py +0 -0
  183. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/parallel.py +0 -0
  184. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/slave.py +0 -0
  185. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/task.py +0 -0
  186. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/util.py +0 -0
  187. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos/zookeeper.py +0 -0
  188. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos_maintenance.py +0 -0
  189. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/mesos_tools.py +0 -0
  190. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/metrics/__init__.py +0 -0
  191. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/metrics/metastatus_lib.py +0 -0
  192. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/metrics/metrics_lib.py +0 -0
  193. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/monitoring/__init__.py +0 -0
  194. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
  195. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/monitoring/kill_orphaned_docker_containers.py +0 -0
  196. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/monitoring_tools.py +0 -0
  197. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/monkrelaycluster_tools.py +0 -0
  198. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/nrtsearchservice_tools.py +0 -0
  199. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
  200. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/oom_logger.py +0 -0
  201. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paasta_deploy_tron_jobs +0 -0
  202. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paasta_execute_docker_command.py +0 -0
  203. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paasta_native_serviceinit.py +0 -0
  204. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paasta_remote_run.py +0 -0
  205. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paasta_service_config_loader.py +0 -0
  206. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/__init__.py +0 -0
  207. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api/__init__.py +0 -0
  208. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
  209. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api/default_api.py +0 -0
  210. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api/resources_api.py +0 -0
  211. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api/service_api.py +0 -0
  212. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/api_client.py +0 -0
  213. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/apis/__init__.py +0 -0
  214. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/configuration.py +0 -0
  215. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/exceptions.py +0 -0
  216. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/__init__.py +0 -0
  217. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
  218. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
  219. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
  220. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
  221. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
  222. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
  223. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
  224. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
  225. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/flink_config.py +0 -0
  226. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/flink_job.py +0 -0
  227. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
  228. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
  229. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
  230. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
  231. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/inline_object.py +0 -0
  232. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
  233. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
  234. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
  235. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
  236. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status.py +0 -0
  237. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
  238. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
  239. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
  240. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
  241. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
  242. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
  243. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
  244. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
  245. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
  246. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
  247. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
  248. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
  249. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
  250. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
  251. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
  252. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
  253. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
  254. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
  255. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/resource.py +0 -0
  256. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/resource_item.py +0 -0
  257. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/resource_value.py +0 -0
  258. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
  259. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
  260. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
  261. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
  262. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/model_utils.py +0 -0
  263. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/models/__init__.py +0 -0
  264. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/paastaapi/rest.py +0 -0
  265. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/prune_completed_pods.py +0 -0
  266. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/puppet_service_tools.py +0 -0
  267. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/py.typed +0 -0
  268. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/remote_git.py +0 -0
  269. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
  270. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/run-paasta-api-playground.py +0 -0
  271. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/secret_providers/__init__.py +0 -0
  272. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/secret_providers/vault.py +0 -0
  273. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/secret_tools.py +0 -0
  274. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_istio_mesh.py +0 -0
  275. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_kubernetes_cr.py +0 -0
  276. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_kubernetes_crd.py +0 -0
  277. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
  278. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_kubernetes_job.py +0 -0
  279. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
  280. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/setup_tron_namespace.py +0 -0
  281. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/slack.py +0 -0
  282. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/smartstack_tools.py +0 -0
  283. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
  284. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/tron/__init__.py +0 -0
  285. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/tron/client.py +0 -0
  286. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/tron/tron_command_context.py +0 -0
  287. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/tron/tron_timeutils.py +0 -0
  288. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools/vitesscluster_tools.py +0 -0
  289. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools.egg-info/SOURCES.txt +0 -0
  290. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools.egg-info/dependency_links.txt +0 -0
  291. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools.egg-info/entry_points.txt +0 -0
  292. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/paasta_tools.egg-info/top_level.txt +0 -0
  293. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/pyproject.toml +0 -0
  294. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/setup.cfg +0 -0
  295. {paasta-tools-1.2.0 → paasta-tools-1.4.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: paasta-tools
3
- Version: 1.2.0
3
+ Version: 1.4.1
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Home-page: UNKNOWN
6
6
  Author: Compute Infrastructure @ Yelp
@@ -17,4 +17,4 @@
17
17
  # setup phase, the dependencies may not exist on disk yet.
18
18
  #
19
19
  # Don't bump version manually. See `make release` docs in ./Makefile
20
- __version__ = "1.2.0"
20
+ __version__ = "1.4.1"
@@ -13,7 +13,7 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
  """
16
- A simple script to enumerate all services partecipating in authenticated
16
+ A simple script to enumerate all services participating in authenticated
17
17
  communications, and list them in a YAML/JSON file.
18
18
  """
19
19
  import argparse
@@ -27,6 +27,7 @@ from typing import Set
27
27
  import yaml
28
28
 
29
29
  from paasta_tools.utils import DEFAULT_SOA_DIR
30
+ from paasta_tools.utils import load_system_paasta_config
30
31
  from paasta_tools.utils import write_json_configuration_file
31
32
  from paasta_tools.utils import write_yaml_configuration_file
32
33
 
@@ -53,6 +54,7 @@ def enumerate_authenticating_services() -> Dict[str, List[str]]:
53
54
  config_path_pattern = os.path.join(DEFAULT_SOA_DIR, "*", AUTHORIZATION_CONFIG_FILE)
54
55
  for authz_config in glob.glob(config_path_pattern):
55
56
  result.update(list_services_in_authz_config(authz_config))
57
+ result.update(load_system_paasta_config().get_always_authenticating_services())
56
58
  return {"services": sorted(result)}
57
59
 
58
60
 
@@ -21,6 +21,7 @@ import os
21
21
  import re
22
22
  from datetime import datetime
23
23
  from enum import Enum
24
+ from functools import lru_cache
24
25
  from inspect import currentframe
25
26
  from pathlib import Path
26
27
  from typing import Any
@@ -2552,6 +2553,13 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
2552
2553
  "topology_spread_constraints", default_pod_topology_spread_constraints
2553
2554
  )
2554
2555
 
2556
+ def get_projected_sa_volumes(self) -> List[ProjectedSAVolume]:
2557
+ return add_volumes_for_authenticating_services(
2558
+ service_name=self.service,
2559
+ config_volumes=super().get_projected_sa_volumes(),
2560
+ soa_dir=self.soa_dir,
2561
+ )
2562
+
2555
2563
 
2556
2564
  def get_kubernetes_secret_hashes(
2557
2565
  environment_variables: Mapping[str, str], service: str, namespace: str
@@ -4406,3 +4414,35 @@ def get_kubernetes_secret_volumes(
4406
4414
  ] = secret_contents
4407
4415
 
4408
4416
  return secret_volumes
4417
+
4418
+
4419
+ @lru_cache()
4420
+ def get_authenticating_services(soa_dir: str = DEFAULT_SOA_DIR) -> Set[str]:
4421
+ """Load list of services participating in authenticated traffic"""
4422
+ authenticating_services_conf_path = os.path.join(soa_dir, "authenticating.yaml")
4423
+ config = service_configuration_lib.read_yaml_file(authenticating_services_conf_path)
4424
+ return set(config.get("services", []))
4425
+
4426
+
4427
+ def add_volumes_for_authenticating_services(
4428
+ service_name: str,
4429
+ config_volumes: List[ProjectedSAVolume],
4430
+ soa_dir: str = DEFAULT_SOA_DIR,
4431
+ ) -> List[ProjectedSAVolume]:
4432
+ """Add projected service account volume to the list of volumes if service
4433
+ participates in authenticated traffic. In case of changes, a new list is returned,
4434
+ no updates in-place.
4435
+
4436
+ :param str service_name: name of the service
4437
+ :param List[ProjectedSAVolume] config_volumes: existing projected volumes from service config
4438
+ :param str soa_dir: path to SOA configurations directory
4439
+ :return: updated list of projected service account volumes
4440
+ """
4441
+ token_config = load_system_paasta_config().get_service_auth_token_volume_config()
4442
+ if (
4443
+ token_config
4444
+ and service_name in get_authenticating_services(soa_dir)
4445
+ and not any(volume == token_config for volume in config_volumes)
4446
+ ):
4447
+ config_volumes = [token_config, *config_volumes]
4448
+ return config_volumes
@@ -6,6 +6,7 @@ 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
9
10
  from typing import Mapping
10
11
  from typing import Set
11
12
 
@@ -23,6 +24,7 @@ SPARK_DRIVER_POOL = "stable"
23
24
  SPARK_JOB_USER = "TRON"
24
25
  SPARK_PROMETHEUS_SHARD = "ml-compute"
25
26
  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}
26
28
 
27
29
  log = logging.getLogger(__name__)
28
30
 
@@ -247,3 +249,22 @@ def get_spark_driver_monitoring_labels(
247
249
  "spark.yelp.com/driver_ui_port": ui_port_str,
248
250
  }
249
251
  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
@@ -56,6 +56,7 @@ from paasta_tools.utils import get_k8s_url_for_cluster
56
56
  from paasta_tools.utils import validate_pool
57
57
  from paasta_tools.utils import PoolsNotConfiguredError
58
58
  from paasta_tools.utils import DockerVolume
59
+ from paasta_tools.utils import ProjectedSAVolume
59
60
 
60
61
  from paasta_tools import spark_tools
61
62
 
@@ -71,6 +72,7 @@ from paasta_tools.secret_tools import is_shared_secret
71
72
  from paasta_tools.secret_tools import is_shared_secret_from_secret_name
72
73
  from paasta_tools.secret_tools import get_secret_name_from_ref
73
74
  from paasta_tools.kubernetes_tools import get_paasta_secret_name
75
+ from paasta_tools.kubernetes_tools import add_volumes_for_authenticating_services
74
76
  from paasta_tools.secret_tools import SHARED_SECRET_SERVICE
75
77
 
76
78
  from paasta_tools import monitoring_tools
@@ -280,6 +282,35 @@ class TronActionConfig(InstanceConfig):
280
282
  self.job, self.action = decompose_instance(instance)
281
283
  # Indicate whether this config object is created for validation
282
284
  self.for_validation = for_validation
285
+ self.action_spark_config = None
286
+ if self.get_executor() == "spark":
287
+ # build the complete Spark configuration
288
+ # TODO: add conditional check for Spark specific commands spark-submit, pyspark etc ?
289
+ self.action_spark_config = self.build_spark_config()
290
+
291
+ def get_cpus(self) -> float:
292
+ # set Spark driver pod CPU if it is specified by Spark arguments
293
+ if (
294
+ self.action_spark_config
295
+ and "spark.driver.cores" in self.action_spark_config
296
+ ):
297
+ return float(self.action_spark_config["spark.driver.cores"])
298
+ # we fall back to this default if there's no spark.driver.cores config
299
+ return super().get_cpus()
300
+
301
+ def get_mem(self) -> float:
302
+ # set Spark driver pod memory if it is specified by Spark arguments
303
+ if (
304
+ self.action_spark_config
305
+ and "spark.driver.memory" in self.action_spark_config
306
+ ):
307
+ return int(
308
+ spark_tools.get_spark_memory_in_unit(
309
+ self.action_spark_config["spark.driver.memory"], "m"
310
+ )
311
+ )
312
+ # we fall back to this default if there's no spark.driver.memory config
313
+ return super().get_mem()
283
314
 
284
315
  def build_spark_config(self) -> Dict[str, str]:
285
316
  system_paasta_config = load_system_paasta_config()
@@ -438,7 +469,6 @@ class TronActionConfig(InstanceConfig):
438
469
  system_paasta_config: Optional["SystemPaastaConfig"] = None,
439
470
  ) -> Dict[str, str]:
440
471
  env = super().get_env(system_paasta_config=system_paasta_config)
441
-
442
472
  if self.get_executor() == "spark":
443
473
  # Required by some sdks like boto3 client. Throws NoRegionError otherwise.
444
474
  # AWS_REGION takes precedence if set.
@@ -603,6 +633,20 @@ class TronActionConfig(InstanceConfig):
603
633
  error_msgs.append(
604
634
  f"{self.get_job_name()}.{self.get_action_name()} must have a deploy_group set"
605
635
  )
636
+ # We are not allowing users to specify `cpus` and `mem` configuration if the action is a Spark job
637
+ # with driver running on k8s (executor: spark), because we derive these values from `spark.driver.cores`
638
+ # and `spark.driver.memory` in order to avoid confusion.
639
+ if self.get_executor() == "spark":
640
+ if "cpus" in self.config_dict:
641
+ error_msgs.append(
642
+ f"{self.get_job_name()}.{self.get_action_name()} is a Spark job. `cpus` config is not allowed. "
643
+ f"Please specify the driver cores using `spark.driver.cores`."
644
+ )
645
+ if "mem" in self.config_dict:
646
+ error_msgs.append(
647
+ f"{self.get_job_name()}.{self.get_action_name()} is a Spark job. `mem` config is not allowed. "
648
+ f"Please specify the driver memory using `spark.driver.memory`."
649
+ )
606
650
  return error_msgs
607
651
 
608
652
  def get_pool(self) -> str:
@@ -627,6 +671,14 @@ class TronActionConfig(InstanceConfig):
627
671
  def get_service_account_name(self) -> Optional[str]:
628
672
  return self.config_dict.get("service_account_name")
629
673
 
674
+ def get_projected_sa_volumes(self) -> Optional[List[ProjectedSAVolume]]:
675
+ projected_volumes = add_volumes_for_authenticating_services(
676
+ service_name=self.service,
677
+ config_volumes=super().get_projected_sa_volumes(),
678
+ soa_dir=self.soa_dir,
679
+ )
680
+ return projected_volumes if projected_volumes else None
681
+
630
682
 
631
683
  class TronJobConfig:
632
684
  """Represents a job in Tron, consisting of action(s) and job-level configuration values."""
@@ -958,25 +1010,33 @@ def format_tron_action_dict(action_config: TronActionConfig):
958
1010
  dry_run=action_config.for_validation,
959
1011
  )
960
1012
 
1013
+ # service account token volumes for service authentication
1014
+ result["projected_sa_volumes"] = action_config.get_projected_sa_volumes()
1015
+
961
1016
  extra_volumes = action_config.get_extra_volumes()
962
1017
  if executor == "spark":
963
1018
  is_mrjob = action_config.config_dict.get("mrjob", False)
964
1019
  system_paasta_config = load_system_paasta_config()
965
- # inject spark configs to the original spark-submit command
966
- spark_config = action_config.build_spark_config()
1020
+ # inject additional Spark configs in case of Spark commands
967
1021
  result["command"] = spark_tools.build_spark_command(
968
1022
  result["command"],
969
- spark_config,
1023
+ action_config.action_spark_config,
970
1024
  is_mrjob,
971
1025
  action_config.config_dict.get(
972
1026
  "max_runtime", spark_tools.DEFAULT_SPARK_RUNTIME_TIMEOUT
973
1027
  ),
974
1028
  )
1029
+ # point to the KUBECONFIG needed by Spark driver
975
1030
  result["env"]["KUBECONFIG"] = system_paasta_config.get_spark_kubeconfig()
1031
+
976
1032
  # spark, unlike normal batches, needs to expose several ports for things like the spark
977
1033
  # ui and for executor->driver communication
978
1034
  result["ports"] = list(
979
- set(spark_tools.get_spark_ports_from_config(spark_config))
1035
+ set(
1036
+ spark_tools.get_spark_ports_from_config(
1037
+ action_config.action_spark_config
1038
+ )
1039
+ )
980
1040
  )
981
1041
  # mount KUBECONFIG file for Spark drivers to communicate with EKS cluster
982
1042
  extra_volumes.append(
@@ -990,10 +1050,12 @@ def format_tron_action_dict(action_config: TronActionConfig):
990
1050
  )
991
1051
  # Add pod annotations and labels for Spark monitoring metrics
992
1052
  monitoring_annotations = (
993
- spark_tools.get_spark_driver_monitoring_annotations(spark_config)
1053
+ spark_tools.get_spark_driver_monitoring_annotations(
1054
+ action_config.action_spark_config
1055
+ )
994
1056
  )
995
1057
  monitoring_labels = spark_tools.get_spark_driver_monitoring_labels(
996
- spark_config
1058
+ action_config.action_spark_config
997
1059
  )
998
1060
  result["annotations"].update(monitoring_annotations)
999
1061
  result["labels"].update(monitoring_labels)
@@ -75,7 +75,7 @@ import ldap3
75
75
  import requests_cache
76
76
  import service_configuration_lib
77
77
  import yaml
78
- from docker import Client
78
+ from docker import APIClient
79
79
  from docker.utils import kwargs_from_env
80
80
  from kazoo.client import KazooClient
81
81
  from mypy_extensions import TypedDict
@@ -2020,6 +2020,8 @@ class SystemPaastaConfigDict(TypedDict, total=False):
2020
2020
  eks_cluster_aliases: Dict[str, str]
2021
2021
  secret_sync_delay_seconds: float
2022
2022
  use_multiple_log_readers: Optional[List[str]]
2023
+ service_auth_token_settings: ProjectedSAVolume
2024
+ always_authenticating_services: List[str]
2023
2025
 
2024
2026
 
2025
2027
  def load_system_paasta_config(
@@ -2725,6 +2727,12 @@ class SystemPaastaConfig:
2725
2727
  def get_kube_clusters(self) -> Dict:
2726
2728
  return self.config_dict.get("kube_clusters", {})
2727
2729
 
2730
+ def get_service_auth_token_volume_config(self) -> ProjectedSAVolume:
2731
+ return self.config_dict.get("service_auth_token_settings", {})
2732
+
2733
+ def get_always_authenticating_services(self) -> List[str]:
2734
+ return self.config_dict.get("always_authenticating_services", [])
2735
+
2728
2736
 
2729
2737
  def _run(
2730
2738
  command: Union[str, List[str]],
@@ -3337,12 +3345,12 @@ def get_docker_host() -> str:
3337
3345
  return os.environ.get("DOCKER_HOST", "unix://var/run/docker.sock")
3338
3346
 
3339
3347
 
3340
- def get_docker_client() -> Client:
3348
+ def get_docker_client() -> APIClient:
3341
3349
  client_opts = kwargs_from_env(assert_hostname=False)
3342
3350
  if "base_url" in client_opts:
3343
- return Client(**client_opts)
3351
+ return APIClient(**client_opts)
3344
3352
  else:
3345
- return Client(base_url=get_docker_host(), **client_opts)
3353
+ return APIClient(base_url=get_docker_host(), **client_opts)
3346
3354
 
3347
3355
 
3348
3356
  def get_running_mesos_docker_containers() -> List[Dict]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: paasta-tools
3
- Version: 1.2.0
3
+ Version: 1.4.1
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Home-page: UNKNOWN
6
6
  Author: Compute Infrastructure @ Yelp
@@ -10,7 +10,7 @@ certifi
10
10
  choice>=0.1
11
11
  cookiecutter>=1.4.0
12
12
  croniter
13
- docker-py>=1.2.3
13
+ docker
14
14
  dulwich>=0.17.3
15
15
  ephemeral-port-reserve>=1.0.1
16
16
  graphviz
@@ -10,9 +10,7 @@ certifi
10
10
  choice >= 0.1
11
11
  cookiecutter >= 1.4.0
12
12
  croniter
13
- # Don't update this unless you have confirmed the client works with
14
- # the Docker version deployed on PaaSTA servers
15
- docker-py >= 1.2.3
13
+ docker
16
14
  dulwich >= 0.17.3
17
15
  ephemeral-port-reserve >= 1.0.1
18
16
  graphviz
File without changes
File without changes