paasta-tools 1.1.2__tar.gz → 1.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. {paasta-tools-1.1.2/paasta_tools.egg-info → paasta-tools-1.4.0}/PKG-INFO +1 -1
  2. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/__init__.py +1 -1
  3. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/logs.py +133 -17
  4. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/generate_authenticating_services.py +3 -1
  5. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes_tools.py +40 -0
  6. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/tron_tools.py +13 -0
  7. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/utils.py +34 -4
  8. {paasta-tools-1.1.2 → paasta-tools-1.4.0/paasta_tools.egg-info}/PKG-INFO +1 -1
  9. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools.egg-info/requires.txt +1 -1
  10. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/requirements-minimal.txt +1 -3
  11. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/MANIFEST.in +0 -0
  12. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/README.md +0 -0
  13. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/k8s_itests/__init__.py +0 -0
  14. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/k8s_itests/test_autoscaling.py +0 -0
  15. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/k8s_itests/utils.py +0 -0
  16. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/adhoc_tools.py +0 -0
  17. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/__init__.py +0 -0
  18. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/api.py +0 -0
  19. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/api_docs/swagger.json +0 -0
  20. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/client.py +0 -0
  21. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/settings.py +0 -0
  22. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/tweens/__init__.py +0 -0
  23. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/tweens/profiling.py +0 -0
  24. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/tweens/request_logger.py +0 -0
  25. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/__init__.py +0 -0
  26. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/autoscaler.py +0 -0
  27. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/exception.py +0 -0
  28. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/flink.py +0 -0
  29. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/instance.py +0 -0
  30. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/pause_autoscaler.py +0 -0
  31. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/resources.py +0 -0
  32. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/service.py +0 -0
  33. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/version.py +0 -0
  34. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/apply_external_resources.py +0 -0
  35. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/async_utils.py +0 -0
  36. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/__init__.py +0 -0
  37. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
  38. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/forecasting.py +0 -0
  39. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
  40. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
  41. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/utils.py +0 -0
  42. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/bounce_lib.py +0 -0
  43. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/broadcast_log_to_services.py +0 -0
  44. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cassandracluster_tools.py +0 -0
  45. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_autoscaler_max_instances.py +0 -0
  46. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
  47. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_flink_services_health.py +0 -0
  48. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_kubernetes_api.py +0 -0
  49. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_kubernetes_services_replication.py +0 -0
  50. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_oom_events.py +0 -0
  51. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_services_replication_tools.py +0 -0
  52. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_spark_jobs.py +0 -0
  53. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
  54. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
  55. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
  56. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cleanup_tron_namespaces.py +0 -0
  57. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/__init__.py +0 -0
  58. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cli.py +0 -0
  59. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/__init__.py +0 -0
  60. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/autoscale.py +0 -0
  61. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/check.py +0 -0
  62. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/cook_image.py +0 -0
  63. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
  64. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/get_image_version.py +0 -0
  65. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
  66. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/info.py +0 -0
  67. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/itest.py +0 -0
  68. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/list.py +0 -0
  69. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/list_clusters.py +0 -0
  70. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
  71. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/local_run.py +0 -0
  72. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
  73. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/mesh_status.py +0 -0
  74. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
  75. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
  76. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/remote_run.py +0 -0
  77. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/rollback.py +0 -0
  78. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/secret.py +0 -0
  79. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/security_check.py +0 -0
  80. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/spark_run.py +0 -0
  81. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
  82. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/status.py +0 -0
  83. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/validate.py +0 -0
  84. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
  85. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/__init__.py +0 -0
  86. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/autosuggest.py +0 -0
  87. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/README.md +0 -0
  88. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
  89. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
  90. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
  91. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
  92. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
  93. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm_cmd.py +0 -0
  94. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
  95. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
  96. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
  97. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
  98. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
  99. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
  100. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/eks_schema.json +0 -0
  101. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
  102. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
  103. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/service_schema.json +0 -0
  104. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
  105. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/tron_schema.json +0 -0
  106. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/utils.py +0 -0
  107. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/clusterman.py +0 -0
  108. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/config_utils.py +0 -0
  109. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/__init__.py +0 -0
  110. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
  111. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
  112. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/check_orphans.py +0 -0
  113. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
  114. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/create_paasta_playground.py +0 -0
  115. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
  116. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
  117. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/habitat_fixer.py +0 -0
  118. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/ide_helper.py +0 -0
  119. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
  120. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
  121. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/kill_bad_containers.py +0 -0
  122. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
  123. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/mock_patch_checker.py +0 -0
  124. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
  125. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/render_template.py +0 -0
  126. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
  127. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/service_shard_remove.py +0 -0
  128. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/service_shard_update.py +0 -0
  129. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/shared_ip_check.py +0 -0
  130. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
  131. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/delete_kubernetes_deployments.py +0 -0
  132. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/deployment_utils.py +0 -0
  133. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/docker_wrapper.py +0 -0
  134. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/docker_wrapper_imports.py +0 -0
  135. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/drain_lib.py +0 -0
  136. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/dump_locally_running_services.py +0 -0
  137. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/eks_tools.py +0 -0
  138. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/envoy_tools.py +0 -0
  139. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/firewall.py +0 -0
  140. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/firewall_logging.py +0 -0
  141. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/firewall_update.py +0 -0
  142. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/flink_tools.py +0 -0
  143. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/flinkeks_tools.py +0 -0
  144. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/__init__.py +0 -0
  145. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
  146. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/constraints.py +0 -0
  147. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/native_scheduler.py +0 -0
  148. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/native_service_config.py +0 -0
  149. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/task_store.py +0 -0
  150. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/generate_all_deployments +0 -0
  151. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/generate_deployments_for_service.py +0 -0
  152. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/generate_services_file.py +0 -0
  153. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/generate_services_yaml.py +0 -0
  154. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/hacheck.py +0 -0
  155. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/instance/__init__.py +0 -0
  156. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
  157. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/instance/kubernetes.py +0 -0
  158. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/iptables.py +0 -0
  159. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kafkacluster_tools.py +0 -0
  160. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/__init__.py +0 -0
  161. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/application/__init__.py +0 -0
  162. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
  163. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/application/tools.py +0 -0
  164. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/bin/__init__.py +0 -0
  165. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
  166. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
  167. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
  168. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/list_kubernetes_service_instances.py +0 -0
  169. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/list_tron_namespaces.py +0 -0
  170. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/log_task_lifecycle_events.py +0 -0
  171. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/long_running_service_tools.py +0 -0
  172. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mac_address.py +0 -0
  173. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/marathon_dashboard.py +0 -0
  174. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/__init__.py +0 -0
  175. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/cfg.py +0 -0
  176. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/cluster.py +0 -0
  177. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/exceptions.py +0 -0
  178. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/framework.py +0 -0
  179. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/log.py +0 -0
  180. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/master.py +0 -0
  181. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/mesos_file.py +0 -0
  182. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/parallel.py +0 -0
  183. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/slave.py +0 -0
  184. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/task.py +0 -0
  185. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/util.py +0 -0
  186. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/zookeeper.py +0 -0
  187. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos_maintenance.py +0 -0
  188. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos_tools.py +0 -0
  189. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/metrics/__init__.py +0 -0
  190. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/metrics/metastatus_lib.py +0 -0
  191. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/metrics/metrics_lib.py +0 -0
  192. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/monitoring/__init__.py +0 -0
  193. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
  194. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/monitoring/kill_orphaned_docker_containers.py +0 -0
  195. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/monitoring_tools.py +0 -0
  196. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/monkrelaycluster_tools.py +0 -0
  197. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/nrtsearchservice_tools.py +0 -0
  198. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
  199. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/oom_logger.py +0 -0
  200. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paasta_deploy_tron_jobs +0 -0
  201. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paasta_execute_docker_command.py +0 -0
  202. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paasta_native_serviceinit.py +0 -0
  203. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paasta_remote_run.py +0 -0
  204. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paasta_service_config_loader.py +0 -0
  205. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/__init__.py +0 -0
  206. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api/__init__.py +0 -0
  207. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
  208. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api/default_api.py +0 -0
  209. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api/resources_api.py +0 -0
  210. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api/service_api.py +0 -0
  211. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api_client.py +0 -0
  212. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/apis/__init__.py +0 -0
  213. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/configuration.py +0 -0
  214. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/exceptions.py +0 -0
  215. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/__init__.py +0 -0
  216. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
  217. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
  218. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
  219. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
  220. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
  221. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
  222. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
  223. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
  224. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/flink_config.py +0 -0
  225. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/flink_job.py +0 -0
  226. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
  227. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
  228. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
  229. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
  230. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/inline_object.py +0 -0
  231. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
  232. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
  233. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
  234. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
  235. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status.py +0 -0
  236. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
  237. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
  238. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
  239. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
  240. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
  241. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
  242. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
  243. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
  244. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
  245. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
  246. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
  247. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
  248. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
  249. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
  250. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
  251. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
  252. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
  253. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
  254. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/resource.py +0 -0
  255. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/resource_item.py +0 -0
  256. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/resource_value.py +0 -0
  257. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
  258. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
  259. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
  260. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
  261. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model_utils.py +0 -0
  262. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/models/__init__.py +0 -0
  263. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/rest.py +0 -0
  264. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/prune_completed_pods.py +0 -0
  265. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/puppet_service_tools.py +0 -0
  266. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/py.typed +0 -0
  267. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/remote_git.py +0 -0
  268. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
  269. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/run-paasta-api-playground.py +0 -0
  270. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/secret_providers/__init__.py +0 -0
  271. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/secret_providers/vault.py +0 -0
  272. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/secret_tools.py +0 -0
  273. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_istio_mesh.py +0 -0
  274. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_kubernetes_cr.py +0 -0
  275. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_kubernetes_crd.py +0 -0
  276. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
  277. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_kubernetes_job.py +0 -0
  278. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
  279. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_tron_namespace.py +0 -0
  280. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/slack.py +0 -0
  281. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/smartstack_tools.py +0 -0
  282. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/spark_tools.py +0 -0
  283. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
  284. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/tron/__init__.py +0 -0
  285. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/tron/client.py +0 -0
  286. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/tron/tron_command_context.py +0 -0
  287. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/tron/tron_timeutils.py +0 -0
  288. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/vitesscluster_tools.py +0 -0
  289. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools.egg-info/SOURCES.txt +0 -0
  290. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools.egg-info/dependency_links.txt +0 -0
  291. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools.egg-info/entry_points.txt +0 -0
  292. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools.egg-info/top_level.txt +0 -0
  293. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/pyproject.toml +0 -0
  294. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/setup.cfg +0 -0
  295. {paasta-tools-1.1.2 → paasta-tools-1.4.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: paasta-tools
3
- Version: 1.1.2
3
+ Version: 1.4.0
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.1.2"
20
+ __version__ = "1.4.0"
@@ -33,10 +33,12 @@ from typing import Iterable
33
33
  from typing import List
34
34
  from typing import Mapping
35
35
  from typing import MutableSequence
36
+ from typing import Optional
36
37
  from typing import Sequence
37
38
  from typing import Set
38
39
  from typing import Tuple
39
40
  from typing import Type
41
+ from typing import Union
40
42
 
41
43
  import isodate
42
44
  import pytz
@@ -48,6 +50,11 @@ try:
48
50
  except ImportError:
49
51
  scribereader = None
50
52
 
53
+ try:
54
+ from clog.readers import S3LogsReader
55
+ except ImportError:
56
+ S3LogsReader = None
57
+
51
58
  from pytimeparse.timeparse import timeparse
52
59
 
53
60
  from paasta_tools.cli.utils import figure_out_service_name
@@ -289,7 +296,7 @@ def paasta_log_line_passes_filter(
289
296
  if not check_timestamp_in_range(timestamp, start_time, end_time):
290
297
  return False
291
298
  return (
292
- parsed_line.get("level") in levels
299
+ (parsed_line.get("level") is None or parsed_line.get("level") in levels)
293
300
  and parsed_line.get("component") in components
294
301
  and (
295
302
  parsed_line.get("cluster") in clusters
@@ -459,7 +466,9 @@ def register_log_reader(name):
459
466
  return outer
460
467
 
461
468
 
462
- def get_log_reader_class(name: str) -> Type["ScribeLogReader"]:
469
+ def get_log_reader_class(
470
+ name: str,
471
+ ) -> Union[Type["ScribeLogReader"], Type["VectorLogsReader"]]:
463
472
  return _log_reader_classes[name]
464
473
 
465
474
 
@@ -467,12 +476,44 @@ def list_log_readers() -> Iterable[str]:
467
476
  return _log_reader_classes.keys()
468
477
 
469
478
 
470
- def get_log_reader() -> "ScribeLogReader":
479
+ def get_default_log_reader() -> "LogReader":
471
480
  log_reader_config = load_system_paasta_config().get_log_reader()
472
481
  log_reader_class = get_log_reader_class(log_reader_config["driver"])
473
482
  return log_reader_class(**log_reader_config.get("options", {}))
474
483
 
475
484
 
485
+ def get_log_reader(components: Set[str]) -> "LogReader":
486
+ log_readers_config = load_system_paasta_config().get_log_readers()
487
+ # ideally we should use a single "driver" for all components, but in cases where more than one is used for different components,
488
+ # we should use the first one that supports all requested components
489
+ # otherwise signal an error and suggest to provide a different list of components
490
+ components_lists = []
491
+ for log_reader_config in log_readers_config:
492
+ supported_components = log_reader_config.get("components", [])
493
+ components_lists.append(supported_components)
494
+ if components.issubset(supported_components):
495
+ log_reader_class = get_log_reader_class(log_reader_config["driver"])
496
+ print(
497
+ PaastaColors.cyan(
498
+ "Using '{}' driver to fetch logs...".format(
499
+ log_reader_config["driver"]
500
+ )
501
+ ),
502
+ file=sys.stderr,
503
+ )
504
+ return log_reader_class(**log_reader_config.get("options", {}))
505
+ print(
506
+ PaastaColors.cyan(
507
+ "Supplied list of components '{}' is not supported by any log reader. Supported components are:\n\t{}".format(
508
+ ", ".join(components),
509
+ "\n\tor ".join([",".join(comp_list) for comp_list in components_lists]),
510
+ )
511
+ ),
512
+ file=sys.stderr,
513
+ )
514
+ sys.exit(1)
515
+
516
+
476
517
  class LogReader:
477
518
  # Tailing, i.e actively viewing logs as they come in
478
519
  SUPPORTS_TAILING = False
@@ -1123,7 +1164,76 @@ class ScribeLogReader(LogReader):
1123
1164
  return env
1124
1165
 
1125
1166
 
1126
- def scribe_env_to_locations(scribe_env):
1167
+ @register_log_reader("vector-logs")
1168
+ class VectorLogsReader(LogReader):
1169
+ SUPPORTS_TIME = True
1170
+
1171
+ def __init__(self, cluster_map: Mapping[str, Any]) -> None:
1172
+ super().__init__()
1173
+
1174
+ if S3LogsReader is None:
1175
+ raise Exception("yelp_clog package must be available to use S3LogsReader")
1176
+
1177
+ self.cluster_map = cluster_map
1178
+
1179
+ def get_superregion_for_cluster(self, cluster: str) -> Optional[str]:
1180
+ return self.cluster_map.get(cluster, None)
1181
+
1182
+ def print_logs_by_time(
1183
+ self,
1184
+ service,
1185
+ start_time: datetime.datetime,
1186
+ end_time: datetime.datetime,
1187
+ levels,
1188
+ components: Iterable[str],
1189
+ clusters,
1190
+ instances,
1191
+ pods,
1192
+ raw_mode,
1193
+ strip_headers,
1194
+ ) -> None:
1195
+ stream_name = get_log_name_for_service(service, prefix="app_output")
1196
+ superregion = self.get_superregion_for_cluster(clusters[0])
1197
+ reader = S3LogsReader(superregion)
1198
+ start_date = start_time.date()
1199
+ end_date = end_time.date()
1200
+ aggregated_logs: List[Dict[str, Any]] = []
1201
+
1202
+ for line in reader.get_log_reader(
1203
+ log_name=stream_name, min_date=start_date, max_date=end_date
1204
+ ):
1205
+ if paasta_log_line_passes_filter(
1206
+ line,
1207
+ levels,
1208
+ service,
1209
+ components,
1210
+ clusters,
1211
+ instances,
1212
+ pods,
1213
+ start_time=start_time,
1214
+ end_time=end_time,
1215
+ ):
1216
+ try:
1217
+ parsed_line = json.loads(line)
1218
+ timestamp = isodate.parse_datetime(parsed_line.get("timestamp"))
1219
+ if not timestamp.tzinfo:
1220
+ timestamp = pytz.utc.localize(timestamp)
1221
+ except ValueError:
1222
+ timestamp = pytz.utc.localize(datetime.datetime.min)
1223
+
1224
+ line = {"raw_line": line, "sort_key": timestamp}
1225
+ aggregated_logs.append(line)
1226
+
1227
+ aggregated_logs = list(
1228
+ {line["raw_line"]: line for line in aggregated_logs}.values()
1229
+ )
1230
+ aggregated_logs.sort(key=lambda log_line: log_line["sort_key"])
1231
+
1232
+ for line in aggregated_logs:
1233
+ print_log(line["raw_line"], levels, raw_mode, strip_headers)
1234
+
1235
+
1236
+ def scribe_env_to_locations(scribe_env) -> Mapping[str, Any]:
1127
1237
  """Converts a scribe environment to a dictionary of locations. The
1128
1238
  return value is meant to be used as kwargs for `scribereader.get_tail_host_and_port`.
1129
1239
  """
@@ -1188,9 +1298,7 @@ def generate_start_end_time(
1188
1298
  return start_time, end_time
1189
1299
 
1190
1300
 
1191
- def validate_filtering_args(
1192
- args: argparse.Namespace, log_reader: ScribeLogReader
1193
- ) -> bool:
1301
+ def validate_filtering_args(args: argparse.Namespace, log_reader: LogReader) -> bool:
1194
1302
  if not log_reader.SUPPORTS_LINE_OFFSET and args.line_offset is not None:
1195
1303
  print(
1196
1304
  PaastaColors.red(
@@ -1254,7 +1362,7 @@ def validate_filtering_args(
1254
1362
 
1255
1363
  def pick_default_log_mode(
1256
1364
  args: argparse.Namespace,
1257
- log_reader: ScribeLogReader,
1365
+ log_reader: LogReader,
1258
1366
  service: str,
1259
1367
  levels: Sequence[str],
1260
1368
  components: Iterable[str],
@@ -1320,6 +1428,14 @@ def pick_default_log_mode(
1320
1428
  return 1
1321
1429
 
1322
1430
 
1431
+ def pick_log_reader(cluster: str, components: Set[str]) -> LogReader:
1432
+ uses_log_readers = load_system_paasta_config().use_multiple_log_readers()
1433
+ if uses_log_readers and cluster in uses_log_readers:
1434
+ return get_log_reader(components)
1435
+ else:
1436
+ return get_default_log_reader()
1437
+
1438
+
1323
1439
  def paasta_logs(args: argparse.Namespace) -> int:
1324
1440
  """Print the logs for as Paasta service.
1325
1441
  :param args: argparse.Namespace obj created from sys.args by cli"""
@@ -1327,7 +1443,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
1327
1443
 
1328
1444
  service = figure_out_service_name(args, soa_dir)
1329
1445
 
1330
- cluster = args.cluster
1446
+ clusters = args.cluster
1331
1447
  if (
1332
1448
  args.cluster is None
1333
1449
  or args.instance is None
@@ -1339,7 +1455,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
1339
1455
  )
1340
1456
  return 1
1341
1457
 
1342
- if verify_instances(args.instance, service, cluster, soa_dir):
1458
+ if verify_instances(args.instance, service, clusters, soa_dir):
1343
1459
  return 1
1344
1460
 
1345
1461
  instance = args.instance
@@ -1362,16 +1478,16 @@ def paasta_logs(args: argparse.Namespace) -> int:
1362
1478
 
1363
1479
  levels = [DEFAULT_LOGLEVEL, "debug"]
1364
1480
 
1365
- log.debug(f"Going to get logs for {service} on cluster {cluster}")
1481
+ log.debug(f"Going to get logs for {service} on cluster {clusters}")
1366
1482
 
1367
- log_reader = get_log_reader()
1483
+ log_reader = pick_log_reader(clusters[0], components)
1368
1484
 
1369
1485
  if not validate_filtering_args(args, log_reader):
1370
1486
  return 1
1371
1487
  # They haven't specified what kind of filtering they want, decide for them
1372
1488
  if args.line_count is None and args.time_from is None and not args.tail:
1373
1489
  return pick_default_log_mode(
1374
- args, log_reader, service, levels, components, cluster, instance, pods
1490
+ args, log_reader, service, levels, components, clusters, instance, pods
1375
1491
  )
1376
1492
  if args.tail:
1377
1493
  print(
@@ -1381,7 +1497,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
1381
1497
  service=service,
1382
1498
  levels=levels,
1383
1499
  components=components,
1384
- clusters=cluster,
1500
+ clusters=clusters,
1385
1501
  instances=[instance],
1386
1502
  pods=pods,
1387
1503
  raw_mode=args.raw_mode,
@@ -1402,7 +1518,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
1402
1518
  line_count=args.line_count,
1403
1519
  levels=levels,
1404
1520
  components=components,
1405
- clusters=cluster,
1521
+ clusters=clusters,
1406
1522
  instances=[instance],
1407
1523
  pods=pods,
1408
1524
  raw_mode=args.raw_mode,
@@ -1416,7 +1532,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
1416
1532
  line_offset=args.line_offset,
1417
1533
  levels=levels,
1418
1534
  components=components,
1419
- clusters=cluster,
1535
+ clusters=clusters,
1420
1536
  instances=[instance],
1421
1537
  pods=pods,
1422
1538
  raw_mode=args.raw_mode,
@@ -1437,7 +1553,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
1437
1553
  end_time=end_time,
1438
1554
  levels=levels,
1439
1555
  components=components,
1440
- clusters=cluster,
1556
+ clusters=clusters,
1441
1557
  instances=[instance],
1442
1558
  pods=pods,
1443
1559
  raw_mode=args.raw_mode,
@@ -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
@@ -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
@@ -627,6 +629,14 @@ class TronActionConfig(InstanceConfig):
627
629
  def get_service_account_name(self) -> Optional[str]:
628
630
  return self.config_dict.get("service_account_name")
629
631
 
632
+ def get_projected_sa_volumes(self) -> Optional[List[ProjectedSAVolume]]:
633
+ projected_volumes = add_volumes_for_authenticating_services(
634
+ service_name=self.service,
635
+ config_volumes=super().get_projected_sa_volumes(),
636
+ soa_dir=self.soa_dir,
637
+ )
638
+ return projected_volumes if projected_volumes else None
639
+
630
640
 
631
641
  class TronJobConfig:
632
642
  """Represents a job in Tron, consisting of action(s) and job-level configuration values."""
@@ -958,6 +968,9 @@ def format_tron_action_dict(action_config: TronActionConfig):
958
968
  dry_run=action_config.for_validation,
959
969
  )
960
970
 
971
+ # service account token volumes for service authentication
972
+ result["projected_sa_volumes"] = action_config.get_projected_sa_volumes()
973
+
961
974
  extra_volumes = action_config.get_extra_volumes()
962
975
  if executor == "spark":
963
976
  is_mrjob = action_config.config_dict.get("mrjob", False)
@@ -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
@@ -1359,6 +1359,7 @@ class LogWriterConfig(TypedDict):
1359
1359
  class LogReaderConfig(TypedDict):
1360
1360
  driver: str
1361
1361
  options: Dict
1362
+ components: Optional[List]
1362
1363
 
1363
1364
 
1364
1365
  # The active log writer.
@@ -1960,6 +1961,7 @@ class SystemPaastaConfigDict(TypedDict, total=False):
1960
1961
  ldap_search_ou: str
1961
1962
  local_run_config: LocalRunConfig
1962
1963
  log_reader: LogReaderConfig
1964
+ log_readers: List[LogReaderConfig]
1963
1965
  log_writer: LogWriterConfig
1964
1966
  mark_for_deployment_max_polling_threads: int
1965
1967
  mark_for_deployment_default_polling_interval: float
@@ -2017,6 +2019,9 @@ class SystemPaastaConfigDict(TypedDict, total=False):
2017
2019
  sidecar_requirements_config: Dict[str, KubeContainerResourceRequest]
2018
2020
  eks_cluster_aliases: Dict[str, str]
2019
2021
  secret_sync_delay_seconds: float
2022
+ use_multiple_log_readers: Optional[List[str]]
2023
+ service_auth_token_settings: ProjectedSAVolume
2024
+ always_authenticating_services: List[str]
2020
2025
 
2021
2026
 
2022
2027
  def load_system_paasta_config(
@@ -2321,6 +2326,25 @@ class SystemPaastaConfig:
2321
2326
  % self.directory
2322
2327
  )
2323
2328
 
2329
+ def get_log_readers(self) -> List[LogReaderConfig]:
2330
+ """Get the log_readers configuration out of global paasta config
2331
+
2332
+ :returns: the log_readers list of dicts.
2333
+ """
2334
+ try:
2335
+ return self.config_dict["log_readers"]
2336
+ except KeyError:
2337
+ raise PaastaNotConfiguredError(
2338
+ "Could not find log_readers in configuration directory: %s"
2339
+ % self.directory
2340
+ )
2341
+
2342
+ def use_multiple_log_readers(self) -> Optional[List[str]]:
2343
+ """
2344
+ Get the list of clusters that are using multiple log readers
2345
+ """
2346
+ return self.config_dict.get("use_multiple_log_readers")
2347
+
2324
2348
  def get_metrics_provider(self) -> Optional[str]:
2325
2349
  """Get the metrics_provider configuration out of global paasta config
2326
2350
 
@@ -2703,6 +2727,12 @@ class SystemPaastaConfig:
2703
2727
  def get_kube_clusters(self) -> Dict:
2704
2728
  return self.config_dict.get("kube_clusters", {})
2705
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
+
2706
2736
 
2707
2737
  def _run(
2708
2738
  command: Union[str, List[str]],
@@ -3315,12 +3345,12 @@ def get_docker_host() -> str:
3315
3345
  return os.environ.get("DOCKER_HOST", "unix://var/run/docker.sock")
3316
3346
 
3317
3347
 
3318
- def get_docker_client() -> Client:
3348
+ def get_docker_client() -> APIClient:
3319
3349
  client_opts = kwargs_from_env(assert_hostname=False)
3320
3350
  if "base_url" in client_opts:
3321
- return Client(**client_opts)
3351
+ return APIClient(**client_opts)
3322
3352
  else:
3323
- return Client(base_url=get_docker_host(), **client_opts)
3353
+ return APIClient(base_url=get_docker_host(), **client_opts)
3324
3354
 
3325
3355
 
3326
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.1.2
3
+ Version: 1.4.0
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