paasta-tools 1.14.0__tar.gz → 1.14.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 (303) hide show
  1. {paasta-tools-1.14.0/paasta_tools.egg-info → paasta-tools-1.14.1}/PKG-INFO +1 -1
  2. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/__init__.py +1 -1
  3. paasta-tools-1.14.1/paasta_tools/cli/cmds/remote_run.py +205 -0
  4. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/utils.py +15 -0
  5. paasta-tools-1.14.1/paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py +83 -0
  6. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kubernetes/remote_run.py +51 -7
  7. {paasta-tools-1.14.0 → paasta-tools-1.14.1/paasta_tools.egg-info}/PKG-INFO +1 -1
  8. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools.egg-info/SOURCES.txt +1 -0
  9. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/setup.py +1 -0
  10. paasta-tools-1.14.0/paasta_tools/cli/cmds/remote_run.py +0 -33
  11. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/MANIFEST.in +0 -0
  12. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/README.md +0 -0
  13. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/k8s_itests/__init__.py +0 -0
  14. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/k8s_itests/test_autoscaling.py +0 -0
  15. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/k8s_itests/utils.py +0 -0
  16. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/adhoc_tools.py +0 -0
  17. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/__init__.py +0 -0
  18. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/api.py +0 -0
  19. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/api_docs/swagger.json +0 -0
  20. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/client.py +0 -0
  21. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/settings.py +0 -0
  22. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/tweens/__init__.py +0 -0
  23. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/tweens/auth.py +0 -0
  24. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/tweens/profiling.py +0 -0
  25. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/tweens/request_logger.py +0 -0
  26. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/views/__init__.py +0 -0
  27. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/views/autoscaler.py +0 -0
  28. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/views/exception.py +0 -0
  29. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/views/flink.py +0 -0
  30. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/views/instance.py +0 -0
  31. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/views/pause_autoscaler.py +0 -0
  32. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/views/remote_run.py +0 -0
  33. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/views/resources.py +0 -0
  34. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/views/service.py +0 -0
  35. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/api/views/version.py +0 -0
  36. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/apply_external_resources.py +0 -0
  37. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/async_utils.py +0 -0
  38. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/autoscaling/__init__.py +0 -0
  39. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
  40. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/autoscaling/forecasting.py +0 -0
  41. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
  42. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
  43. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/autoscaling/utils.py +0 -0
  44. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/bounce_lib.py +0 -0
  45. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/broadcast_log_to_services.py +0 -0
  46. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cassandracluster_tools.py +0 -0
  47. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/check_autoscaler_max_instances.py +0 -0
  48. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
  49. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/check_flink_services_health.py +0 -0
  50. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/check_kubernetes_api.py +0 -0
  51. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/check_kubernetes_services_replication.py +0 -0
  52. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/check_oom_events.py +0 -0
  53. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/check_services_replication_tools.py +0 -0
  54. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/check_spark_jobs.py +0 -0
  55. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
  56. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
  57. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
  58. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cleanup_tron_namespaces.py +0 -0
  59. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/__init__.py +0 -0
  60. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cli.py +0 -0
  61. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/__init__.py +0 -0
  62. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/autoscale.py +0 -0
  63. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/check.py +0 -0
  64. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/cook_image.py +0 -0
  65. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
  66. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/get_image_version.py +0 -0
  67. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
  68. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/info.py +0 -0
  69. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/itest.py +0 -0
  70. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/list.py +0 -0
  71. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/list_clusters.py +0 -0
  72. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
  73. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/list_namespaces.py +0 -0
  74. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/local_run.py +0 -0
  75. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/logs.py +0 -0
  76. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
  77. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/mesh_status.py +0 -0
  78. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
  79. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
  80. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/rollback.py +0 -0
  81. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/secret.py +0 -0
  82. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/security_check.py +0 -0
  83. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/spark_run.py +0 -0
  84. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
  85. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/status.py +0 -0
  86. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/validate.py +0 -0
  87. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
  88. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/fsm/__init__.py +0 -0
  89. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/fsm/autosuggest.py +0 -0
  90. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/fsm/template/README.md +0 -0
  91. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
  92. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
  93. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
  94. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
  95. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
  96. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/fsm_cmd.py +0 -0
  97. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
  98. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
  99. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
  100. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
  101. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
  102. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
  103. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/eks_schema.json +0 -0
  104. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
  105. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
  106. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/service_schema.json +0 -0
  107. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
  108. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/cli/schemas/tron_schema.json +0 -0
  109. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/clusterman.py +0 -0
  110. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/config_utils.py +0 -0
  111. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/__init__.py +0 -0
  112. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
  113. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
  114. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/check_orphans.py +0 -0
  115. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
  116. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/create_paasta_playground.py +0 -0
  117. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
  118. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
  119. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/habitat_fixer.py +0 -0
  120. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/ide_helper.py +0 -0
  121. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
  122. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
  123. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/kill_bad_containers.py +0 -0
  124. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
  125. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/mock_patch_checker.py +0 -0
  126. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
  127. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/render_template.py +0 -0
  128. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
  129. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/service_shard_remove.py +0 -0
  130. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/service_shard_update.py +0 -0
  131. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/shared_ip_check.py +0 -0
  132. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
  133. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/delete_kubernetes_deployments.py +0 -0
  134. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/deployment_utils.py +0 -0
  135. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/docker_wrapper.py +0 -0
  136. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/docker_wrapper_imports.py +0 -0
  137. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/drain_lib.py +0 -0
  138. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/dump_locally_running_services.py +0 -0
  139. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/eks_tools.py +0 -0
  140. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/envoy_tools.py +0 -0
  141. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/firewall.py +0 -0
  142. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/firewall_logging.py +0 -0
  143. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/firewall_update.py +0 -0
  144. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/flink_tools.py +0 -0
  145. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/flinkeks_tools.py +0 -0
  146. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/frameworks/__init__.py +0 -0
  147. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
  148. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/frameworks/constraints.py +0 -0
  149. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/frameworks/native_scheduler.py +0 -0
  150. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/frameworks/native_service_config.py +0 -0
  151. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/frameworks/task_store.py +0 -0
  152. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/generate_all_deployments +0 -0
  153. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/generate_authenticating_services.py +0 -0
  154. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/generate_deployments_for_service.py +0 -0
  155. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/generate_services_file.py +0 -0
  156. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/generate_services_yaml.py +0 -0
  157. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/hacheck.py +0 -0
  158. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/instance/__init__.py +0 -0
  159. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
  160. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/instance/kubernetes.py +0 -0
  161. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/iptables.py +0 -0
  162. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kafkacluster_tools.py +0 -0
  163. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kubernetes/__init__.py +0 -0
  164. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kubernetes/application/__init__.py +0 -0
  165. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
  166. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kubernetes/application/tools.py +0 -0
  167. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kubernetes/bin/__init__.py +0 -0
  168. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
  169. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
  170. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
  171. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/kubernetes_tools.py +0 -0
  172. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/list_kubernetes_service_instances.py +0 -0
  173. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/list_tron_namespaces.py +0 -0
  174. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/long_running_service_tools.py +0 -0
  175. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mac_address.py +0 -0
  176. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/marathon_dashboard.py +0 -0
  177. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/__init__.py +0 -0
  178. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/cfg.py +0 -0
  179. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/cluster.py +0 -0
  180. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/exceptions.py +0 -0
  181. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/framework.py +0 -0
  182. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/log.py +0 -0
  183. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/master.py +0 -0
  184. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/mesos_file.py +0 -0
  185. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/parallel.py +0 -0
  186. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/slave.py +0 -0
  187. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/task.py +0 -0
  188. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/util.py +0 -0
  189. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos/zookeeper.py +0 -0
  190. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos_maintenance.py +0 -0
  191. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/mesos_tools.py +0 -0
  192. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/metrics/__init__.py +0 -0
  193. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/metrics/metastatus_lib.py +0 -0
  194. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/metrics/metrics_lib.py +0 -0
  195. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/monitoring/__init__.py +0 -0
  196. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
  197. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/monitoring_tools.py +0 -0
  198. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/monkrelaycluster_tools.py +0 -0
  199. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/nrtsearchservice_tools.py +0 -0
  200. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
  201. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/oom_logger.py +0 -0
  202. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paasta_deploy_tron_jobs +0 -0
  203. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paasta_execute_docker_command.py +0 -0
  204. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paasta_native_serviceinit.py +0 -0
  205. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paasta_service_config_loader.py +0 -0
  206. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/__init__.py +0 -0
  207. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/api/__init__.py +0 -0
  208. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
  209. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/api/default_api.py +0 -0
  210. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/api/remote_run_api.py +0 -0
  211. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/api/resources_api.py +0 -0
  212. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/api/service_api.py +0 -0
  213. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/api_client.py +0 -0
  214. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/apis/__init__.py +0 -0
  215. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/configuration.py +0 -0
  216. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/exceptions.py +0 -0
  217. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/__init__.py +0 -0
  218. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
  219. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
  220. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
  221. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
  222. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
  223. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
  224. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
  225. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
  226. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/flink_config.py +0 -0
  227. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/flink_job.py +0 -0
  228. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
  229. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
  230. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
  231. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
  232. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/inline_object.py +0 -0
  233. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
  234. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
  235. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
  236. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
  237. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_status.py +0 -0
  238. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
  239. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
  240. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
  241. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
  242. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
  243. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
  244. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
  245. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
  246. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
  247. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
  248. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
  249. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
  250. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
  251. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
  252. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
  253. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
  254. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
  255. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
  256. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/remote_run_outcome.py +0 -0
  257. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/remote_run_start.py +0 -0
  258. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/remote_run_stop.py +0 -0
  259. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/remote_run_token.py +0 -0
  260. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/resource.py +0 -0
  261. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/resource_item.py +0 -0
  262. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/resource_value.py +0 -0
  263. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
  264. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
  265. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
  266. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
  267. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/model_utils.py +0 -0
  268. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/models/__init__.py +0 -0
  269. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/paastaapi/rest.py +0 -0
  270. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/prune_completed_pods.py +0 -0
  271. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/puppet_service_tools.py +0 -0
  272. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/py.typed +0 -0
  273. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/remote_git.py +0 -0
  274. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
  275. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/run-paasta-api-playground.py +0 -0
  276. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/secret_providers/__init__.py +0 -0
  277. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/secret_providers/vault.py +0 -0
  278. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/secret_tools.py +0 -0
  279. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/setup_istio_mesh.py +0 -0
  280. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/setup_kubernetes_cr.py +0 -0
  281. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/setup_kubernetes_crd.py +0 -0
  282. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
  283. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/setup_kubernetes_job.py +0 -0
  284. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
  285. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/setup_tron_namespace.py +0 -0
  286. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/slack.py +0 -0
  287. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/smartstack_tools.py +0 -0
  288. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/spark_tools.py +0 -0
  289. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
  290. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/tron/__init__.py +0 -0
  291. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/tron/client.py +0 -0
  292. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/tron/tron_command_context.py +0 -0
  293. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/tron/tron_timeutils.py +0 -0
  294. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/tron_tools.py +0 -0
  295. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/utils.py +0 -0
  296. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools/yaml_tools.py +0 -0
  297. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools.egg-info/dependency_links.txt +0 -0
  298. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools.egg-info/entry_points.txt +0 -0
  299. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools.egg-info/requires.txt +0 -0
  300. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/paasta_tools.egg-info/top_level.txt +0 -0
  301. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/pyproject.toml +0 -0
  302. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/requirements-minimal.txt +0 -0
  303. {paasta-tools-1.14.0 → paasta-tools-1.14.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: paasta-tools
3
- Version: 1.14.0
3
+ Version: 1.14.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.14.0"
20
+ __version__ = "1.14.1"
@@ -0,0 +1,205 @@
1
+ #!/usr/bin/env python
2
+ # Copyright 2015-2017 Yelp Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ import argparse
16
+ import pty
17
+ import shlex
18
+ import time
19
+
20
+ from paasta_tools.cli.utils import get_paasta_oapi_api_clustername
21
+ from paasta_tools.cli.utils import get_paasta_oapi_client_with_auth
22
+ from paasta_tools.cli.utils import lazy_choices_completer
23
+ from paasta_tools.paastaapi.model.remote_run_start import RemoteRunStart
24
+ from paasta_tools.paastaapi.model.remote_run_stop import RemoteRunStop
25
+ from paasta_tools.utils import get_username
26
+ from paasta_tools.utils import list_clusters
27
+ from paasta_tools.utils import list_services
28
+ from paasta_tools.utils import load_system_paasta_config
29
+ from paasta_tools.utils import SystemPaastaConfig
30
+
31
+
32
+ KUBECTL_CMD_TEMPLATE = (
33
+ "kubectl-eks-{cluster} --token {token} exec -it -n {namespace} {pod} -- /bin/bash"
34
+ )
35
+
36
+
37
+ def paasta_remote_run_start(
38
+ args: argparse.Namespace,
39
+ system_paasta_config: SystemPaastaConfig,
40
+ ) -> int:
41
+ client = get_paasta_oapi_client_with_auth(
42
+ cluster=get_paasta_oapi_api_clustername(cluster=args.cluster, is_eks=True),
43
+ system_paasta_config=system_paasta_config,
44
+ )
45
+ if not client:
46
+ print("Cannot get a paasta-api client")
47
+ return 1
48
+
49
+ user = get_username()
50
+ start_response = client.remote_run.remote_run_start(
51
+ args.service,
52
+ args.instance,
53
+ RemoteRunStart(
54
+ user=user,
55
+ interactive=args.interactive,
56
+ recreate=args.recreate,
57
+ max_duration=args.max_duration,
58
+ ),
59
+ )
60
+ if start_response.status >= 300:
61
+ print(f"Error from PaaSTA APIs while starting job: {start_response.message}")
62
+ return 1
63
+
64
+ start_time = time.time()
65
+ while time.time() - start_time < args.timeout:
66
+ poll_response = client.remote_run.remote_run_poll(
67
+ args.service,
68
+ args.instance,
69
+ start_response.job_name,
70
+ )
71
+ if poll_response.status == 200:
72
+ break
73
+ time.sleep(10)
74
+ else:
75
+ print("Timed out while waiting for job to start")
76
+ return 1
77
+
78
+ if not args.interactive:
79
+ print("Successfully started remote-run job")
80
+ return 0
81
+
82
+ token_response = client.remote_run.remote_run_token(
83
+ args.service, args.instance, user
84
+ )
85
+
86
+ exec_command = KUBECTL_CMD_TEMPLATE.format(
87
+ cluster=args.cluster,
88
+ namespace=poll_response.namespace,
89
+ pod=poll_response.pod_name,
90
+ token=token_response.token,
91
+ )
92
+ pty.spawn(shlex.split(exec_command))
93
+ return 0
94
+
95
+
96
+ def paasta_remote_run_stop(
97
+ args: argparse.Namespace,
98
+ system_paasta_config: SystemPaastaConfig,
99
+ ) -> int:
100
+ client = get_paasta_oapi_client_with_auth(
101
+ cluster=get_paasta_oapi_api_clustername(cluster=args.cluster, is_eks=True),
102
+ system_paasta_config=system_paasta_config,
103
+ )
104
+ if not client:
105
+ print("Cannot get a paasta-api client")
106
+ return 1
107
+ response = client.remote_run.remote_run_stop(
108
+ args.service, args.instance, RemoteRunStop(user=get_username())
109
+ )
110
+ print(response.message)
111
+ return 0 if response.status < 300 else 1
112
+
113
+
114
+ def add_common_args_to_parser(parser: argparse.ArgumentParser):
115
+ service_arg = parser.add_argument(
116
+ "-s",
117
+ "--service",
118
+ help="The name of the service you wish to inspect. Required.",
119
+ required=True,
120
+ )
121
+ service_arg.completer = lazy_choices_completer(list_services) # type: ignore
122
+ parser.add_argument(
123
+ "-i",
124
+ "--instance",
125
+ help=(
126
+ "Simulate a docker run for a particular instance of the "
127
+ "service, like 'main' or 'canary'. Required."
128
+ ),
129
+ required=True,
130
+ )
131
+ cluster_arg = parser.add_argument(
132
+ "-c",
133
+ "--cluster",
134
+ help="The name of the cluster you wish to run your task on. Required.",
135
+ required=True,
136
+ )
137
+ cluster_arg.completer = lazy_choices_completer(list_clusters) # type: ignore
138
+
139
+
140
+ def add_subparser(subparsers: argparse._SubParsersAction) -> None:
141
+ remote_run_parser = subparsers.add_parser(
142
+ "remote-run",
143
+ help="Run services / jobs remotely",
144
+ description="'paasta remote-run' runs services / jobs remotely",
145
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
146
+ )
147
+ subparsers = remote_run_parser.add_subparsers(dest="remote_run_command")
148
+ start_parser = subparsers.add_parser(
149
+ "start",
150
+ help="Start or connect to a remote-run job",
151
+ description="Starts or connects to a remote-run-job",
152
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
153
+ )
154
+ start_parser.add_argument(
155
+ "-I",
156
+ "--interactive",
157
+ help=(
158
+ "Run container in interactive mode. If interactive is set the "
159
+ 'default command will be "bash" unless otherwise set by the "--cmd" flag'
160
+ ),
161
+ action="store_true",
162
+ default=False,
163
+ )
164
+ start_parser.add_argument(
165
+ "-m",
166
+ "--max-duration",
167
+ help=(
168
+ "Amount of time in seconds after which the job is "
169
+ "automatically stopped (capped by the API backend)"
170
+ ),
171
+ type=int,
172
+ default=1800,
173
+ )
174
+ start_parser.add_argument(
175
+ "-r",
176
+ "--recreate",
177
+ help="Recreate remote-run job if already existing",
178
+ action="store_true",
179
+ default=False,
180
+ )
181
+ start_parser.add_argument(
182
+ "-t",
183
+ "--timeout",
184
+ help="Maximum time to wait for a job to start, in seconds",
185
+ type=int,
186
+ default=600,
187
+ )
188
+ stop_parser = subparsers.add_parser(
189
+ "stop",
190
+ help="Stop your remote-run job if it exists",
191
+ description="Stop your remote-run job if it exists",
192
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
193
+ )
194
+ add_common_args_to_parser(start_parser)
195
+ add_common_args_to_parser(stop_parser)
196
+ remote_run_parser.set_defaults(command=paasta_remote_run)
197
+
198
+
199
+ def paasta_remote_run(args: argparse.Namespace) -> int:
200
+ system_paasta_config = load_system_paasta_config()
201
+ if args.remote_run_command == "start":
202
+ return paasta_remote_run_start(args, system_paasta_config)
203
+ elif args.remote_run_command == "stop":
204
+ return paasta_remote_run_stop(args, system_paasta_config)
205
+ raise ValueError(f"Unsupported subcommand: {args.remote_run_command}")
@@ -43,6 +43,8 @@ from mypy_extensions import NamedArg
43
43
 
44
44
  from paasta_tools import remote_git
45
45
  from paasta_tools.adhoc_tools import load_adhoc_job_config
46
+ from paasta_tools.api.client import get_paasta_oapi_client
47
+ from paasta_tools.api.client import PaastaOApiClient
46
48
  from paasta_tools.cassandracluster_tools import load_cassandracluster_instance_config
47
49
  from paasta_tools.eks_tools import EksDeploymentConfig
48
50
  from paasta_tools.eks_tools import load_eks_service_config
@@ -1135,3 +1137,16 @@ def get_sso_service_auth_token() -> str:
1135
1137
  """Generate an authentication token for the calling user from the Single Sign On provider"""
1136
1138
  client_id = load_system_paasta_config().get_service_auth_sso_oidc_client_id()
1137
1139
  return get_and_cache_jwt_default(client_id)
1140
+
1141
+
1142
+ def get_paasta_oapi_client_with_auth(
1143
+ cluster: str = None,
1144
+ system_paasta_config: SystemPaastaConfig = None,
1145
+ http_res: bool = False,
1146
+ ) -> Optional[PaastaOApiClient]:
1147
+ return get_paasta_oapi_client(
1148
+ cluster=cluster,
1149
+ system_paasta_config=system_paasta_config,
1150
+ http_res=http_res,
1151
+ auth_token=get_sso_service_auth_token(),
1152
+ )
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env python
2
+ # Copyright 2015-2019 Yelp Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ import argparse
16
+ from datetime import datetime
17
+ from datetime import timedelta
18
+ from datetime import timezone
19
+ from typing import Any
20
+ from typing import Callable
21
+ from typing import Sequence
22
+ from typing import Tuple
23
+
24
+ from paasta_tools.kubernetes.remote_run import get_remote_run_role_bindings
25
+ from paasta_tools.kubernetes.remote_run import get_remote_run_roles
26
+ from paasta_tools.kubernetes.remote_run import get_remote_run_service_accounts
27
+ from paasta_tools.kubernetes_tools import get_all_managed_namespaces
28
+ from paasta_tools.kubernetes_tools import KubeClient
29
+
30
+
31
+ ListingFuncType = Callable[[KubeClient, str], Sequence[Any]]
32
+ DeletionFuncType = Callable[[str, str], Any]
33
+
34
+
35
+ def clean_namespace(kube_client: KubeClient, namespace: str, age_limit: datetime):
36
+ """Clean ephemeral remote-run resource in a namespace
37
+
38
+ :param KubeClient kube_client: kubernetes client
39
+ :param str namepsace: kubernetes namespace
40
+ :param datetime age_limit: expiration time for resources
41
+ """
42
+ cleanup_actions: Sequence[Tuple[DeletionFuncType, ListingFuncType]] = (
43
+ (
44
+ kube_client.core.delete_namespaced_service_account,
45
+ get_remote_run_service_accounts,
46
+ ),
47
+ (kube_client.rbac.delete_namespaced_role, get_remote_run_roles),
48
+ (kube_client.rbac.delete_namespaced_role_binding, get_remote_run_role_bindings),
49
+ )
50
+ for delete_func, list_func in cleanup_actions:
51
+ for entity in list_func(kube_client, namespace):
52
+ if (
53
+ not entity.metadata.name.startswith("remote-run-")
54
+ or entity.metadata.creation_timestamp > age_limit
55
+ ):
56
+ continue
57
+ delete_func(entity.metadata.name, namespace)
58
+
59
+
60
+ def parse_args() -> argparse.Namespace:
61
+ parser = argparse.ArgumentParser(
62
+ description="Clean ephemeral Kubernetes resources created by remote-run invocations",
63
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
64
+ )
65
+ parser.add_argument(
66
+ "--max-age",
67
+ type=int,
68
+ default=600,
69
+ help="Maximum age, in seconds, resources are allowed to have",
70
+ )
71
+ return parser.parse_args()
72
+
73
+
74
+ def main():
75
+ args = parse_args()
76
+ kube_client = KubeClient()
77
+ age_limit = datetime.now(tzinfo=timezone.utc) - timedelta(seconds=args.max_age)
78
+ for namespace in get_all_managed_namespaces(kube_client):
79
+ clean_namespace(kube_client, namespace, age_limit)
80
+
81
+
82
+ if __name__ == "__main__":
83
+ main()
@@ -14,7 +14,9 @@
14
14
  import hashlib
15
15
  import logging
16
16
  from time import sleep
17
+ from typing import List
17
18
  from typing import Optional
19
+ from typing import Sequence
18
20
  from typing import TypedDict
19
21
 
20
22
  from kubernetes.client import AuthenticationV1TokenRequest
@@ -236,7 +238,7 @@ def remote_run_token(
236
238
  kube_client, namespace, pod_name, user
237
239
  )
238
240
  role = create_pod_scoped_role(kube_client, namespace, pod_name, user)
239
- bind_role_to_service_account(kube_client, namespace, service_account, role)
241
+ bind_role_to_service_account(kube_client, namespace, service_account, role, user)
240
242
  return create_temp_exec_token(kube_client, namespace, service_account)
241
243
 
242
244
 
@@ -293,6 +295,23 @@ def create_temp_exec_token(
293
295
  return response.status.token
294
296
 
295
297
 
298
+ def get_remote_run_service_accounts(
299
+ kube_client: KubeClient, namespace: str, user: str = ""
300
+ ) -> Sequence[V1ServiceAccount]:
301
+ """List all temporary service account related to remote-run
302
+
303
+ :param KubeClient kube_client: Kubernetes client
304
+ :param str namespace: pod namespace
305
+ :param str user: optionally filter by owning user
306
+ :return: list of service accounts
307
+ """
308
+ return get_all_service_accounts(
309
+ kube_client,
310
+ namespace=namespace,
311
+ label_selector=(f"{POD_OWNER_LABEL}={user}" if user else POD_OWNER_LABEL),
312
+ )
313
+
314
+
296
315
  def create_remote_run_service_account(
297
316
  kube_client: KubeClient,
298
317
  namespace: str,
@@ -308,11 +327,7 @@ def create_remote_run_service_account(
308
327
  """
309
328
  pod_name_hash = hashlib.sha1(pod_name.encode("utf-8")).hexdigest()[:12]
310
329
  service_account_name = limit_size_with_hash(f"remote-run-{user}-{pod_name_hash}")
311
- service_accounts = get_all_service_accounts(
312
- kube_client,
313
- namespace=namespace,
314
- label_selector=f"{POD_OWNER_LABEL}={user}",
315
- )
330
+ service_accounts = get_remote_run_service_accounts(kube_client, namespace, user)
316
331
  if any(item.metadata.name == service_account_name for item in service_accounts):
317
332
  return service_account_name
318
333
  service_account = V1ServiceAccount(
@@ -366,6 +381,7 @@ def bind_role_to_service_account(
366
381
  namespace: str,
367
382
  service_account: str,
368
383
  role: str,
384
+ user: str,
369
385
  ) -> None:
370
386
  """Bind service account to role
371
387
 
@@ -373,11 +389,13 @@ def bind_role_to_service_account(
373
389
  :param str namespace: service account namespace
374
390
  :param str service_account: service account name
375
391
  :param str role: role name
392
+ :param str user: user requiring the role
376
393
  """
377
394
  role_binding = V1RoleBinding(
378
395
  metadata=V1ObjectMeta(
379
- name=limit_size_with_hash(f"binding-{role}"),
396
+ name=limit_size_with_hash(f"remote-run-binding-{role}"),
380
397
  namespace=namespace,
398
+ labels={POD_OWNER_LABEL: user},
381
399
  ),
382
400
  role_ref=V1RoleRef(
383
401
  api_group="rbac.authorization.k8s.io",
@@ -395,3 +413,29 @@ def bind_role_to_service_account(
395
413
  namespace=namespace,
396
414
  body=role_binding,
397
415
  )
416
+
417
+
418
+ def get_remote_run_roles(kube_client: KubeClient, namespace: str) -> List[V1Role]:
419
+ """List all temporary roles related to remote-run
420
+
421
+ :param KubeClient kube_client: Kubernetes client
422
+ :param str namespace: pod namespace
423
+ :return: list of roles
424
+ """
425
+ return kube_client.rbac.list_namespaced_role(
426
+ namespace, label_selector=POD_OWNER_LABEL
427
+ ).items
428
+
429
+
430
+ def get_remote_run_role_bindings(
431
+ kube_client: KubeClient, namespace: str
432
+ ) -> List[V1RoleBinding]:
433
+ """List all temporary role bindings related to remote-run
434
+
435
+ :param KubeClient kube_client: Kubernetes client
436
+ :param str namespace: pod namespace
437
+ :return: list of roles
438
+ """
439
+ return kube_client.rbac.list_namespaced_role_binding(
440
+ namespace, label_selector=POD_OWNER_LABEL
441
+ ).items
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: paasta-tools
3
- Version: 1.14.0
3
+ Version: 1.14.1
4
4
  Summary: Tools for Yelps SOA infrastructure
5
5
  Home-page: UNKNOWN
6
6
  Author: Compute Infrastructure @ Yelp
@@ -207,6 +207,7 @@ paasta_tools/kubernetes/application/controller_wrappers.py
207
207
  paasta_tools/kubernetes/application/tools.py
208
208
  paasta_tools/kubernetes/bin/__init__.py
209
209
  paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py
210
+ paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py
210
211
  paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py
211
212
  paasta_tools/kubernetes/bin/paasta_secrets_sync.py
212
213
  paasta_tools/mesos/__init__.py
@@ -59,6 +59,7 @@ setup(
59
59
  "paasta_tools/generate_services_yaml.py",
60
60
  "paasta_tools/generate_authenticating_services.py",
61
61
  "paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py",
62
+ "paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py",
62
63
  "paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py",
63
64
  "paasta_tools/kubernetes/bin/paasta_secrets_sync.py",
64
65
  "paasta_tools/paasta_deploy_tron_jobs",
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env python
2
- # Copyright 2015-2017 Yelp Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- import argparse
16
-
17
- from paasta_tools.utils import PaastaColors
18
-
19
-
20
- def add_subparser(subparsers: argparse._SubParsersAction):
21
- subparsers.add_parser(
22
- "remote-run",
23
- help="Schedule adhoc service sandbox on PaaSTA cluster",
24
- description=(
25
- "`paasta remote-run` is useful for running adhoc commands in "
26
- "context of a service's Docker image."
27
- ),
28
- )
29
-
30
-
31
- def paasta_remote_run(args: argparse.Namespace):
32
- print(PaastaColors.red("Error: functionality under construction"))
33
- return 1
File without changes
File without changes