paasta-tools 1.21.3__py3-none-any.whl

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 (348) hide show
  1. k8s_itests/__init__.py +0 -0
  2. k8s_itests/test_autoscaling.py +23 -0
  3. k8s_itests/utils.py +38 -0
  4. paasta_tools/__init__.py +20 -0
  5. paasta_tools/adhoc_tools.py +142 -0
  6. paasta_tools/api/__init__.py +13 -0
  7. paasta_tools/api/api.py +330 -0
  8. paasta_tools/api/api_docs/swagger.json +2323 -0
  9. paasta_tools/api/client.py +106 -0
  10. paasta_tools/api/settings.py +33 -0
  11. paasta_tools/api/tweens/__init__.py +6 -0
  12. paasta_tools/api/tweens/auth.py +125 -0
  13. paasta_tools/api/tweens/profiling.py +108 -0
  14. paasta_tools/api/tweens/request_logger.py +124 -0
  15. paasta_tools/api/views/__init__.py +13 -0
  16. paasta_tools/api/views/autoscaler.py +100 -0
  17. paasta_tools/api/views/exception.py +45 -0
  18. paasta_tools/api/views/flink.py +73 -0
  19. paasta_tools/api/views/instance.py +395 -0
  20. paasta_tools/api/views/pause_autoscaler.py +71 -0
  21. paasta_tools/api/views/remote_run.py +113 -0
  22. paasta_tools/api/views/resources.py +76 -0
  23. paasta_tools/api/views/service.py +35 -0
  24. paasta_tools/api/views/version.py +25 -0
  25. paasta_tools/apply_external_resources.py +79 -0
  26. paasta_tools/async_utils.py +109 -0
  27. paasta_tools/autoscaling/__init__.py +0 -0
  28. paasta_tools/autoscaling/autoscaling_service_lib.py +57 -0
  29. paasta_tools/autoscaling/forecasting.py +106 -0
  30. paasta_tools/autoscaling/max_all_k8s_services.py +41 -0
  31. paasta_tools/autoscaling/pause_service_autoscaler.py +77 -0
  32. paasta_tools/autoscaling/utils.py +52 -0
  33. paasta_tools/bounce_lib.py +184 -0
  34. paasta_tools/broadcast_log_to_services.py +62 -0
  35. paasta_tools/cassandracluster_tools.py +210 -0
  36. paasta_tools/check_autoscaler_max_instances.py +212 -0
  37. paasta_tools/check_cassandracluster_services_replication.py +35 -0
  38. paasta_tools/check_flink_services_health.py +203 -0
  39. paasta_tools/check_kubernetes_api.py +57 -0
  40. paasta_tools/check_kubernetes_services_replication.py +141 -0
  41. paasta_tools/check_oom_events.py +244 -0
  42. paasta_tools/check_services_replication_tools.py +324 -0
  43. paasta_tools/check_spark_jobs.py +234 -0
  44. paasta_tools/cleanup_kubernetes_cr.py +138 -0
  45. paasta_tools/cleanup_kubernetes_crd.py +145 -0
  46. paasta_tools/cleanup_kubernetes_jobs.py +344 -0
  47. paasta_tools/cleanup_tron_namespaces.py +96 -0
  48. paasta_tools/cli/__init__.py +13 -0
  49. paasta_tools/cli/authentication.py +85 -0
  50. paasta_tools/cli/cli.py +260 -0
  51. paasta_tools/cli/cmds/__init__.py +13 -0
  52. paasta_tools/cli/cmds/autoscale.py +143 -0
  53. paasta_tools/cli/cmds/check.py +334 -0
  54. paasta_tools/cli/cmds/cook_image.py +147 -0
  55. paasta_tools/cli/cmds/get_docker_image.py +76 -0
  56. paasta_tools/cli/cmds/get_image_version.py +172 -0
  57. paasta_tools/cli/cmds/get_latest_deployment.py +93 -0
  58. paasta_tools/cli/cmds/info.py +155 -0
  59. paasta_tools/cli/cmds/itest.py +117 -0
  60. paasta_tools/cli/cmds/list.py +66 -0
  61. paasta_tools/cli/cmds/list_clusters.py +42 -0
  62. paasta_tools/cli/cmds/list_deploy_queue.py +171 -0
  63. paasta_tools/cli/cmds/list_namespaces.py +84 -0
  64. paasta_tools/cli/cmds/local_run.py +1396 -0
  65. paasta_tools/cli/cmds/logs.py +1601 -0
  66. paasta_tools/cli/cmds/mark_for_deployment.py +1988 -0
  67. paasta_tools/cli/cmds/mesh_status.py +174 -0
  68. paasta_tools/cli/cmds/pause_service_autoscaler.py +107 -0
  69. paasta_tools/cli/cmds/push_to_registry.py +275 -0
  70. paasta_tools/cli/cmds/remote_run.py +252 -0
  71. paasta_tools/cli/cmds/rollback.py +347 -0
  72. paasta_tools/cli/cmds/secret.py +549 -0
  73. paasta_tools/cli/cmds/security_check.py +59 -0
  74. paasta_tools/cli/cmds/spark_run.py +1400 -0
  75. paasta_tools/cli/cmds/start_stop_restart.py +401 -0
  76. paasta_tools/cli/cmds/status.py +2302 -0
  77. paasta_tools/cli/cmds/validate.py +1012 -0
  78. paasta_tools/cli/cmds/wait_for_deployment.py +275 -0
  79. paasta_tools/cli/fsm/__init__.py +13 -0
  80. paasta_tools/cli/fsm/autosuggest.py +82 -0
  81. paasta_tools/cli/fsm/template/README.md +8 -0
  82. paasta_tools/cli/fsm/template/cookiecutter.json +7 -0
  83. paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +91 -0
  84. paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +20 -0
  85. paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +8 -0
  86. paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +6 -0
  87. paasta_tools/cli/fsm_cmd.py +121 -0
  88. paasta_tools/cli/paasta_tabcomplete.sh +23 -0
  89. paasta_tools/cli/schemas/adhoc_schema.json +199 -0
  90. paasta_tools/cli/schemas/autoscaling_schema.json +91 -0
  91. paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +37 -0
  92. paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +89 -0
  93. paasta_tools/cli/schemas/deploy_schema.json +173 -0
  94. paasta_tools/cli/schemas/eks_schema.json +970 -0
  95. paasta_tools/cli/schemas/kubernetes_schema.json +970 -0
  96. paasta_tools/cli/schemas/rollback_schema.json +160 -0
  97. paasta_tools/cli/schemas/service_schema.json +25 -0
  98. paasta_tools/cli/schemas/smartstack_schema.json +322 -0
  99. paasta_tools/cli/schemas/tron_schema.json +699 -0
  100. paasta_tools/cli/utils.py +1118 -0
  101. paasta_tools/clusterman.py +21 -0
  102. paasta_tools/config_utils.py +385 -0
  103. paasta_tools/contrib/__init__.py +0 -0
  104. paasta_tools/contrib/bounce_log_latency_parser.py +68 -0
  105. paasta_tools/contrib/check_manual_oapi_changes.sh +24 -0
  106. paasta_tools/contrib/check_orphans.py +306 -0
  107. paasta_tools/contrib/create_dynamodb_table.py +35 -0
  108. paasta_tools/contrib/create_paasta_playground.py +105 -0
  109. paasta_tools/contrib/emit_allocated_cpu_metrics.py +50 -0
  110. paasta_tools/contrib/get_running_task_allocation.py +346 -0
  111. paasta_tools/contrib/habitat_fixer.py +86 -0
  112. paasta_tools/contrib/ide_helper.py +316 -0
  113. paasta_tools/contrib/is_pod_healthy_in_proxy.py +139 -0
  114. paasta_tools/contrib/is_pod_healthy_in_smartstack.py +50 -0
  115. paasta_tools/contrib/kill_bad_containers.py +109 -0
  116. paasta_tools/contrib/mass-deploy-tag.sh +44 -0
  117. paasta_tools/contrib/mock_patch_checker.py +86 -0
  118. paasta_tools/contrib/paasta_update_soa_memcpu.py +520 -0
  119. paasta_tools/contrib/render_template.py +129 -0
  120. paasta_tools/contrib/rightsizer_soaconfigs_update.py +348 -0
  121. paasta_tools/contrib/service_shard_remove.py +157 -0
  122. paasta_tools/contrib/service_shard_update.py +373 -0
  123. paasta_tools/contrib/shared_ip_check.py +77 -0
  124. paasta_tools/contrib/timeouts_metrics_prom.py +64 -0
  125. paasta_tools/delete_kubernetes_deployments.py +89 -0
  126. paasta_tools/deployment_utils.py +44 -0
  127. paasta_tools/docker_wrapper.py +234 -0
  128. paasta_tools/docker_wrapper_imports.py +13 -0
  129. paasta_tools/drain_lib.py +351 -0
  130. paasta_tools/dump_locally_running_services.py +71 -0
  131. paasta_tools/eks_tools.py +119 -0
  132. paasta_tools/envoy_tools.py +373 -0
  133. paasta_tools/firewall.py +504 -0
  134. paasta_tools/firewall_logging.py +154 -0
  135. paasta_tools/firewall_update.py +172 -0
  136. paasta_tools/flink_tools.py +345 -0
  137. paasta_tools/flinkeks_tools.py +90 -0
  138. paasta_tools/frameworks/__init__.py +0 -0
  139. paasta_tools/frameworks/adhoc_scheduler.py +71 -0
  140. paasta_tools/frameworks/constraints.py +87 -0
  141. paasta_tools/frameworks/native_scheduler.py +652 -0
  142. paasta_tools/frameworks/native_service_config.py +301 -0
  143. paasta_tools/frameworks/task_store.py +245 -0
  144. paasta_tools/generate_all_deployments +9 -0
  145. paasta_tools/generate_authenticating_services.py +94 -0
  146. paasta_tools/generate_deployments_for_service.py +255 -0
  147. paasta_tools/generate_services_file.py +114 -0
  148. paasta_tools/generate_services_yaml.py +30 -0
  149. paasta_tools/hacheck.py +76 -0
  150. paasta_tools/instance/__init__.py +0 -0
  151. paasta_tools/instance/hpa_metrics_parser.py +122 -0
  152. paasta_tools/instance/kubernetes.py +1362 -0
  153. paasta_tools/iptables.py +240 -0
  154. paasta_tools/kafkacluster_tools.py +143 -0
  155. paasta_tools/kubernetes/__init__.py +0 -0
  156. paasta_tools/kubernetes/application/__init__.py +0 -0
  157. paasta_tools/kubernetes/application/controller_wrappers.py +476 -0
  158. paasta_tools/kubernetes/application/tools.py +90 -0
  159. paasta_tools/kubernetes/bin/__init__.py +0 -0
  160. paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +164 -0
  161. paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py +135 -0
  162. paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +181 -0
  163. paasta_tools/kubernetes/bin/paasta_secrets_sync.py +758 -0
  164. paasta_tools/kubernetes/remote_run.py +558 -0
  165. paasta_tools/kubernetes_tools.py +4679 -0
  166. paasta_tools/list_kubernetes_service_instances.py +128 -0
  167. paasta_tools/list_tron_namespaces.py +60 -0
  168. paasta_tools/long_running_service_tools.py +678 -0
  169. paasta_tools/mac_address.py +44 -0
  170. paasta_tools/marathon_dashboard.py +0 -0
  171. paasta_tools/mesos/__init__.py +0 -0
  172. paasta_tools/mesos/cfg.py +46 -0
  173. paasta_tools/mesos/cluster.py +60 -0
  174. paasta_tools/mesos/exceptions.py +59 -0
  175. paasta_tools/mesos/framework.py +77 -0
  176. paasta_tools/mesos/log.py +48 -0
  177. paasta_tools/mesos/master.py +306 -0
  178. paasta_tools/mesos/mesos_file.py +169 -0
  179. paasta_tools/mesos/parallel.py +52 -0
  180. paasta_tools/mesos/slave.py +115 -0
  181. paasta_tools/mesos/task.py +94 -0
  182. paasta_tools/mesos/util.py +69 -0
  183. paasta_tools/mesos/zookeeper.py +37 -0
  184. paasta_tools/mesos_maintenance.py +848 -0
  185. paasta_tools/mesos_tools.py +1051 -0
  186. paasta_tools/metrics/__init__.py +0 -0
  187. paasta_tools/metrics/metastatus_lib.py +1110 -0
  188. paasta_tools/metrics/metrics_lib.py +217 -0
  189. paasta_tools/monitoring/__init__.py +13 -0
  190. paasta_tools/monitoring/check_k8s_api_performance.py +110 -0
  191. paasta_tools/monitoring_tools.py +652 -0
  192. paasta_tools/monkrelaycluster_tools.py +146 -0
  193. paasta_tools/nrtsearchservice_tools.py +143 -0
  194. paasta_tools/nrtsearchserviceeks_tools.py +68 -0
  195. paasta_tools/oom_logger.py +321 -0
  196. paasta_tools/paasta_deploy_tron_jobs +3 -0
  197. paasta_tools/paasta_execute_docker_command.py +123 -0
  198. paasta_tools/paasta_native_serviceinit.py +21 -0
  199. paasta_tools/paasta_service_config_loader.py +201 -0
  200. paasta_tools/paastaapi/__init__.py +29 -0
  201. paasta_tools/paastaapi/api/__init__.py +3 -0
  202. paasta_tools/paastaapi/api/autoscaler_api.py +302 -0
  203. paasta_tools/paastaapi/api/default_api.py +569 -0
  204. paasta_tools/paastaapi/api/remote_run_api.py +604 -0
  205. paasta_tools/paastaapi/api/resources_api.py +157 -0
  206. paasta_tools/paastaapi/api/service_api.py +1736 -0
  207. paasta_tools/paastaapi/api_client.py +818 -0
  208. paasta_tools/paastaapi/apis/__init__.py +22 -0
  209. paasta_tools/paastaapi/configuration.py +455 -0
  210. paasta_tools/paastaapi/exceptions.py +137 -0
  211. paasta_tools/paastaapi/model/__init__.py +5 -0
  212. paasta_tools/paastaapi/model/adhoc_launch_history.py +176 -0
  213. paasta_tools/paastaapi/model/autoscaler_count_msg.py +176 -0
  214. paasta_tools/paastaapi/model/deploy_queue.py +178 -0
  215. paasta_tools/paastaapi/model/deploy_queue_service_instance.py +194 -0
  216. paasta_tools/paastaapi/model/envoy_backend.py +185 -0
  217. paasta_tools/paastaapi/model/envoy_location.py +184 -0
  218. paasta_tools/paastaapi/model/envoy_status.py +181 -0
  219. paasta_tools/paastaapi/model/flink_cluster_overview.py +188 -0
  220. paasta_tools/paastaapi/model/flink_config.py +173 -0
  221. paasta_tools/paastaapi/model/flink_job.py +186 -0
  222. paasta_tools/paastaapi/model/flink_job_details.py +192 -0
  223. paasta_tools/paastaapi/model/flink_jobs.py +175 -0
  224. paasta_tools/paastaapi/model/float_and_error.py +173 -0
  225. paasta_tools/paastaapi/model/hpa_metric.py +176 -0
  226. paasta_tools/paastaapi/model/inline_object.py +170 -0
  227. paasta_tools/paastaapi/model/inline_response200.py +170 -0
  228. paasta_tools/paastaapi/model/inline_response2001.py +170 -0
  229. paasta_tools/paastaapi/model/instance_bounce_status.py +200 -0
  230. paasta_tools/paastaapi/model/instance_mesh_status.py +186 -0
  231. paasta_tools/paastaapi/model/instance_status.py +220 -0
  232. paasta_tools/paastaapi/model/instance_status_adhoc.py +187 -0
  233. paasta_tools/paastaapi/model/instance_status_cassandracluster.py +173 -0
  234. paasta_tools/paastaapi/model/instance_status_flink.py +173 -0
  235. paasta_tools/paastaapi/model/instance_status_kafkacluster.py +173 -0
  236. paasta_tools/paastaapi/model/instance_status_kubernetes.py +263 -0
  237. paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +187 -0
  238. paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +197 -0
  239. paasta_tools/paastaapi/model/instance_status_tron.py +204 -0
  240. paasta_tools/paastaapi/model/instance_tasks.py +182 -0
  241. paasta_tools/paastaapi/model/integer_and_error.py +173 -0
  242. paasta_tools/paastaapi/model/kubernetes_container.py +178 -0
  243. paasta_tools/paastaapi/model/kubernetes_container_v2.py +219 -0
  244. paasta_tools/paastaapi/model/kubernetes_healthcheck.py +176 -0
  245. paasta_tools/paastaapi/model/kubernetes_pod.py +201 -0
  246. paasta_tools/paastaapi/model/kubernetes_pod_event.py +176 -0
  247. paasta_tools/paastaapi/model/kubernetes_pod_v2.py +213 -0
  248. paasta_tools/paastaapi/model/kubernetes_replica_set.py +185 -0
  249. paasta_tools/paastaapi/model/kubernetes_version.py +202 -0
  250. paasta_tools/paastaapi/model/remote_run_outcome.py +189 -0
  251. paasta_tools/paastaapi/model/remote_run_start.py +185 -0
  252. paasta_tools/paastaapi/model/remote_run_stop.py +176 -0
  253. paasta_tools/paastaapi/model/remote_run_token.py +173 -0
  254. paasta_tools/paastaapi/model/resource.py +187 -0
  255. paasta_tools/paastaapi/model/resource_item.py +187 -0
  256. paasta_tools/paastaapi/model/resource_value.py +176 -0
  257. paasta_tools/paastaapi/model/smartstack_backend.py +191 -0
  258. paasta_tools/paastaapi/model/smartstack_location.py +181 -0
  259. paasta_tools/paastaapi/model/smartstack_status.py +181 -0
  260. paasta_tools/paastaapi/model/task_tail_lines.py +176 -0
  261. paasta_tools/paastaapi/model_utils.py +1879 -0
  262. paasta_tools/paastaapi/models/__init__.py +62 -0
  263. paasta_tools/paastaapi/rest.py +287 -0
  264. paasta_tools/prune_completed_pods.py +220 -0
  265. paasta_tools/puppet_service_tools.py +59 -0
  266. paasta_tools/py.typed +1 -0
  267. paasta_tools/remote_git.py +127 -0
  268. paasta_tools/run-paasta-api-in-dev-mode.py +57 -0
  269. paasta_tools/run-paasta-api-playground.py +51 -0
  270. paasta_tools/secret_providers/__init__.py +66 -0
  271. paasta_tools/secret_providers/vault.py +214 -0
  272. paasta_tools/secret_tools.py +277 -0
  273. paasta_tools/setup_istio_mesh.py +353 -0
  274. paasta_tools/setup_kubernetes_cr.py +412 -0
  275. paasta_tools/setup_kubernetes_crd.py +138 -0
  276. paasta_tools/setup_kubernetes_internal_crd.py +154 -0
  277. paasta_tools/setup_kubernetes_job.py +353 -0
  278. paasta_tools/setup_prometheus_adapter_config.py +1028 -0
  279. paasta_tools/setup_tron_namespace.py +248 -0
  280. paasta_tools/slack.py +75 -0
  281. paasta_tools/smartstack_tools.py +676 -0
  282. paasta_tools/spark_tools.py +283 -0
  283. paasta_tools/synapse_srv_namespaces_fact.py +42 -0
  284. paasta_tools/tron/__init__.py +0 -0
  285. paasta_tools/tron/client.py +158 -0
  286. paasta_tools/tron/tron_command_context.py +194 -0
  287. paasta_tools/tron/tron_timeutils.py +101 -0
  288. paasta_tools/tron_tools.py +1448 -0
  289. paasta_tools/utils.py +4307 -0
  290. paasta_tools/yaml_tools.py +44 -0
  291. paasta_tools-1.21.3.data/scripts/apply_external_resources.py +79 -0
  292. paasta_tools-1.21.3.data/scripts/bounce_log_latency_parser.py +68 -0
  293. paasta_tools-1.21.3.data/scripts/check_autoscaler_max_instances.py +212 -0
  294. paasta_tools-1.21.3.data/scripts/check_cassandracluster_services_replication.py +35 -0
  295. paasta_tools-1.21.3.data/scripts/check_flink_services_health.py +203 -0
  296. paasta_tools-1.21.3.data/scripts/check_kubernetes_api.py +57 -0
  297. paasta_tools-1.21.3.data/scripts/check_kubernetes_services_replication.py +141 -0
  298. paasta_tools-1.21.3.data/scripts/check_manual_oapi_changes.sh +24 -0
  299. paasta_tools-1.21.3.data/scripts/check_oom_events.py +244 -0
  300. paasta_tools-1.21.3.data/scripts/check_orphans.py +306 -0
  301. paasta_tools-1.21.3.data/scripts/check_spark_jobs.py +234 -0
  302. paasta_tools-1.21.3.data/scripts/cleanup_kubernetes_cr.py +138 -0
  303. paasta_tools-1.21.3.data/scripts/cleanup_kubernetes_crd.py +145 -0
  304. paasta_tools-1.21.3.data/scripts/cleanup_kubernetes_jobs.py +344 -0
  305. paasta_tools-1.21.3.data/scripts/create_dynamodb_table.py +35 -0
  306. paasta_tools-1.21.3.data/scripts/create_paasta_playground.py +105 -0
  307. paasta_tools-1.21.3.data/scripts/delete_kubernetes_deployments.py +89 -0
  308. paasta_tools-1.21.3.data/scripts/emit_allocated_cpu_metrics.py +50 -0
  309. paasta_tools-1.21.3.data/scripts/generate_all_deployments +9 -0
  310. paasta_tools-1.21.3.data/scripts/generate_authenticating_services.py +94 -0
  311. paasta_tools-1.21.3.data/scripts/generate_deployments_for_service.py +255 -0
  312. paasta_tools-1.21.3.data/scripts/generate_services_file.py +114 -0
  313. paasta_tools-1.21.3.data/scripts/generate_services_yaml.py +30 -0
  314. paasta_tools-1.21.3.data/scripts/get_running_task_allocation.py +346 -0
  315. paasta_tools-1.21.3.data/scripts/habitat_fixer.py +86 -0
  316. paasta_tools-1.21.3.data/scripts/ide_helper.py +316 -0
  317. paasta_tools-1.21.3.data/scripts/is_pod_healthy_in_proxy.py +139 -0
  318. paasta_tools-1.21.3.data/scripts/is_pod_healthy_in_smartstack.py +50 -0
  319. paasta_tools-1.21.3.data/scripts/kill_bad_containers.py +109 -0
  320. paasta_tools-1.21.3.data/scripts/kubernetes_remove_evicted_pods.py +164 -0
  321. paasta_tools-1.21.3.data/scripts/mass-deploy-tag.sh +44 -0
  322. paasta_tools-1.21.3.data/scripts/mock_patch_checker.py +86 -0
  323. paasta_tools-1.21.3.data/scripts/paasta_cleanup_remote_run_resources.py +135 -0
  324. paasta_tools-1.21.3.data/scripts/paasta_cleanup_stale_nodes.py +181 -0
  325. paasta_tools-1.21.3.data/scripts/paasta_deploy_tron_jobs +3 -0
  326. paasta_tools-1.21.3.data/scripts/paasta_execute_docker_command.py +123 -0
  327. paasta_tools-1.21.3.data/scripts/paasta_secrets_sync.py +758 -0
  328. paasta_tools-1.21.3.data/scripts/paasta_tabcomplete.sh +23 -0
  329. paasta_tools-1.21.3.data/scripts/paasta_update_soa_memcpu.py +520 -0
  330. paasta_tools-1.21.3.data/scripts/render_template.py +129 -0
  331. paasta_tools-1.21.3.data/scripts/rightsizer_soaconfigs_update.py +348 -0
  332. paasta_tools-1.21.3.data/scripts/service_shard_remove.py +157 -0
  333. paasta_tools-1.21.3.data/scripts/service_shard_update.py +373 -0
  334. paasta_tools-1.21.3.data/scripts/setup_istio_mesh.py +353 -0
  335. paasta_tools-1.21.3.data/scripts/setup_kubernetes_cr.py +412 -0
  336. paasta_tools-1.21.3.data/scripts/setup_kubernetes_crd.py +138 -0
  337. paasta_tools-1.21.3.data/scripts/setup_kubernetes_internal_crd.py +154 -0
  338. paasta_tools-1.21.3.data/scripts/setup_kubernetes_job.py +353 -0
  339. paasta_tools-1.21.3.data/scripts/setup_prometheus_adapter_config.py +1028 -0
  340. paasta_tools-1.21.3.data/scripts/shared_ip_check.py +77 -0
  341. paasta_tools-1.21.3.data/scripts/synapse_srv_namespaces_fact.py +42 -0
  342. paasta_tools-1.21.3.data/scripts/timeouts_metrics_prom.py +64 -0
  343. paasta_tools-1.21.3.dist-info/LICENSE +201 -0
  344. paasta_tools-1.21.3.dist-info/METADATA +74 -0
  345. paasta_tools-1.21.3.dist-info/RECORD +348 -0
  346. paasta_tools-1.21.3.dist-info/WHEEL +5 -0
  347. paasta_tools-1.21.3.dist-info/entry_points.txt +20 -0
  348. paasta_tools-1.21.3.dist-info/top_level.txt +2 -0
@@ -0,0 +1,260 @@
1
+ #!/usr/bin/env python
2
+ # Copyright 2015-2016 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
+ # PYTHON_ARGCOMPLETE_OK
16
+ """A command line tool for viewing information from the PaaSTA stack."""
17
+ import argparse
18
+ import logging
19
+ import os
20
+ import pkgutil
21
+ import subprocess
22
+ import sys
23
+ import warnings
24
+ from typing import Any
25
+ from typing import List
26
+ from typing import Tuple
27
+
28
+ import argcomplete
29
+
30
+ import paasta_tools
31
+ from paasta_tools.cli import cmds
32
+
33
+
34
+ def load_method(module_name, method_name):
35
+ """Return a function given a module and method name.
36
+
37
+ :param module_name: a string
38
+ :param method_name: a string
39
+ :return: a function
40
+ """
41
+ module = __import__(module_name, fromlist=[method_name])
42
+ method = getattr(module, method_name)
43
+ return method
44
+
45
+
46
+ def modules_in_pkg(pkg):
47
+ """Return the list of modules in a python package (a module with a
48
+ __init__.py file.)
49
+
50
+ :return: a list of strings such as `['list', 'check']` that correspond to
51
+ the module names in the package.
52
+ """
53
+ for _, module_name, _ in pkgutil.walk_packages(pkg.__path__):
54
+ yield module_name
55
+
56
+
57
+ class PrintsHelpOnErrorArgumentParser(argparse.ArgumentParser):
58
+ """Overriding the error method allows us to print the whole help page,
59
+ otherwise the python arg parser prints a not-so-useful usage message that
60
+ is way too terse"""
61
+
62
+ def error(self, message):
63
+ print(f"Argument parse error: {message}\n")
64
+ self.print_help()
65
+ sys.exit(1)
66
+
67
+
68
+ def list_external_commands():
69
+ p = subprocess.check_output(["/bin/bash", "-p", "-c", "compgen -A command paasta-"])
70
+ lines = p.decode("utf-8").strip().split("\n")
71
+ return {l.replace("paasta-", "", 1) for l in lines}
72
+
73
+
74
+ def calling_external_command():
75
+ if len(sys.argv) > 1:
76
+ return sys.argv[1] in list_external_commands()
77
+ else:
78
+ return False
79
+
80
+
81
+ def exec_subcommand(argv):
82
+ command = sys.argv[1]
83
+ os.execlp(f"paasta-{command}", *argv[1:])
84
+
85
+
86
+ def add_subparser(command, subparsers):
87
+ """Given a command name, paasta_cmd, execute the add_subparser method
88
+ implemented in paasta_cmd.py.
89
+
90
+ Each paasta client command must implement a method called add_subparser.
91
+ This allows the client to dynamically add subparsers to its subparser, which
92
+ provides the benefits of argcomplete/argparse but gets it done in a modular
93
+ fashion.
94
+
95
+ :param command: a simple string - e.g. 'list'
96
+ :param subparsers: an ArgumentParser object"""
97
+ module_name = "paasta_tools.cli.cmds.%s" % command
98
+ add_subparser_fn = load_method(module_name, "add_subparser")
99
+ add_subparser_fn(subparsers)
100
+
101
+
102
+ PAASTA_SUBCOMMANDS = {
103
+ "autoscale": "autoscale",
104
+ "check": "check",
105
+ "cook-image": "cook_image",
106
+ "get-docker-image": "get_docker_image",
107
+ "get-image-version": "get_image_version",
108
+ "get-latest-deployment": "get_latest_deployment",
109
+ "info": "info",
110
+ "itest": "itest",
111
+ "list-clusters": "list_clusters",
112
+ "list-deploy-queue": "list_deploy_queue",
113
+ "list-namespaces": "list_namespaces",
114
+ "list": "list",
115
+ "local-run": "local_run",
116
+ "logs": "logs",
117
+ "mark-for-deployment": "mark_for_deployment",
118
+ "mesh-status": "mesh_status",
119
+ "pause_service_autoscaler": "pause_service_autoscaler",
120
+ "push-to-registry": "push_to_registry",
121
+ "remote-run": "remote_run",
122
+ "rollback": "rollback",
123
+ "secret": "secret",
124
+ "security-check": "security_check",
125
+ "spark-run": "spark_run",
126
+ "start": "start_stop_restart",
127
+ "stop": "start_stop_restart",
128
+ "restart": "start_stop_restart",
129
+ "status": "status",
130
+ "validate": "validate",
131
+ "wait-for-deployment": "wait_for_deployment",
132
+ }
133
+
134
+
135
+ def get_argparser(commands=None):
136
+ """Create and return argument parser for a set of subcommands.
137
+
138
+ :param commands: Union[None, List[str]] If `commands` argument is `None`,
139
+ add full parsers for all subcommands, if `commands` is empty list -
140
+ add thin parsers for all subcommands, otherwise - add full parsers for
141
+ subcommands in the argument.
142
+ """
143
+
144
+ parser = PrintsHelpOnErrorArgumentParser(
145
+ description=(
146
+ "The PaaSTA command line tool. The 'paasta' command is the entry point "
147
+ "to multiple subcommands, see below.\n\n"
148
+ "You can see more help for individual commands by appending them with '--help', "
149
+ "for example, 'paasta status --help' or see the man page with 'man paasta status'."
150
+ ),
151
+ epilog=(
152
+ "The 'paasta' command line tool is designed to be used by humans, and therefore has "
153
+ "command line completion for almost all options and uses pretty formatting when "
154
+ "possible."
155
+ ),
156
+ # Suppressing usage prevents it from being printed twice upon print_help
157
+ usage=argparse.SUPPRESS,
158
+ )
159
+
160
+ # http://stackoverflow.com/a/8521644/812183
161
+ parser.add_argument(
162
+ "-V",
163
+ "--version",
164
+ action="version",
165
+ version=f"paasta-tools {paasta_tools.__version__}",
166
+ )
167
+
168
+ subparsers = parser.add_subparsers(dest="command", metavar="")
169
+ subparsers.required = True
170
+
171
+ # Adding a separate help subparser allows us to respond to "help" without --help
172
+ help_parser = subparsers.add_parser(
173
+ "help", help=f"run `paasta <subcommand> -h` for help"
174
+ )
175
+ help_parser.set_defaults(command=None)
176
+
177
+ # Build a list of subcommands to add them in alphabetical order later
178
+ command_choices: List[Tuple[str, Any]] = []
179
+ if commands is None:
180
+ for command in sorted(modules_in_pkg(cmds)):
181
+ command_choices.append(
182
+ (command, (add_subparser, [command, subparsers], {}))
183
+ )
184
+ elif commands:
185
+ for command in commands:
186
+ if command not in PAASTA_SUBCOMMANDS:
187
+ # could be external subcommand
188
+ continue
189
+ command_choices.append(
190
+ (
191
+ command,
192
+ (add_subparser, [PAASTA_SUBCOMMANDS[command], subparsers], {}),
193
+ )
194
+ )
195
+ else:
196
+ for command in PAASTA_SUBCOMMANDS.keys():
197
+ command_choices.append(
198
+ (
199
+ command,
200
+ (subparsers.add_parser, [command], dict(help="", add_help=False)),
201
+ )
202
+ )
203
+
204
+ for command in list_external_commands():
205
+ command_choices.append(
206
+ (command, (subparsers.add_parser, [command], dict(help="")))
207
+ )
208
+
209
+ for (_, (fn, args, kwds)) in sorted(command_choices, key=lambda e: e[0]):
210
+ fn(*args, **kwds)
211
+
212
+ return parser
213
+
214
+
215
+ def parse_args(argv):
216
+ """Initialize autocompletion and configure the argument parser.
217
+
218
+ :return: an argparse.Namespace object mapping parameter names to the inputs
219
+ from sys.argv
220
+ """
221
+ parser = get_argparser(commands=[])
222
+ argcomplete.autocomplete(parser)
223
+
224
+ args, _ = parser.parse_known_args(argv)
225
+ if args.command:
226
+ parser = get_argparser(commands=[args.command])
227
+
228
+ argcomplete.autocomplete(parser)
229
+ return parser.parse_args(argv), parser
230
+
231
+
232
+ def main(argv=None):
233
+ """Perform a paasta call. Read args from sys.argv and pass parsed args onto
234
+ appropriate command in paasta_cli/cmds directory.
235
+
236
+ Ensure we kill any child pids before we quit
237
+ """
238
+ logging.basicConfig()
239
+ warnings.filterwarnings("ignore", category=DeprecationWarning)
240
+
241
+ # if we are an external command, we need to exec out early.
242
+ # The reason we exec out early is so we don't bother trying to parse
243
+ # "foreign" arguments, which would cause a stack trace.
244
+ if calling_external_command():
245
+ exec_subcommand(sys.argv)
246
+
247
+ try:
248
+ args, parser = parse_args(argv)
249
+ if args.command is None:
250
+ parser.print_help()
251
+ return_code = 0
252
+ else:
253
+ return_code = args.command(args)
254
+ except KeyboardInterrupt:
255
+ return_code = 130
256
+ sys.exit(return_code)
257
+
258
+
259
+ if __name__ == "__main__":
260
+ main()
@@ -0,0 +1,13 @@
1
+ # Copyright 2015-2016 Yelp Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env python
2
+ # Copyright 2015-2016 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 logging
16
+
17
+ import paasta_tools.paastaapi.models as paastamodels
18
+ from paasta_tools.api import client
19
+ from paasta_tools.cli.utils import figure_out_service_name
20
+ from paasta_tools.cli.utils import get_instance_configs_for_service
21
+ from paasta_tools.cli.utils import get_paasta_oapi_api_clustername
22
+ from paasta_tools.cli.utils import lazy_choices_completer
23
+ from paasta_tools.cli.utils import list_instances
24
+ from paasta_tools.eks_tools import EksDeploymentConfig
25
+ from paasta_tools.utils import _log_audit
26
+ from paasta_tools.utils import DEFAULT_SOA_DIR
27
+ from paasta_tools.utils import list_clusters
28
+ from paasta_tools.utils import list_services
29
+ from paasta_tools.utils import PaastaColors
30
+
31
+
32
+ log = logging.getLogger(__name__)
33
+
34
+
35
+ def add_subparser(subparsers):
36
+ autoscale_parser = subparsers.add_parser(
37
+ "autoscale",
38
+ help="Manually scale a service up and down manually, bypassing the normal autoscaler",
39
+ )
40
+
41
+ autoscale_parser.add_argument(
42
+ "-s",
43
+ "--service",
44
+ help="Service that you want to autoscale. Like 'example_service'.",
45
+ ).completer = lazy_choices_completer(list_services)
46
+ autoscale_parser.add_argument(
47
+ "-i",
48
+ "--instance",
49
+ help="Instance of the service that you want to autoscale. Like 'main' or 'canary'.",
50
+ required=True,
51
+ ).completer = lazy_choices_completer(list_instances)
52
+ autoscale_parser.add_argument(
53
+ "-c",
54
+ "--cluster",
55
+ help="The PaaSTA cluster that has the service instance you want to autoscale. Like 'pnw-prod'.",
56
+ required=True,
57
+ ).completer = lazy_choices_completer(list_clusters)
58
+ autoscale_parser.add_argument(
59
+ "--set", help="Set the number to scale to. Must be an Int.", type=int
60
+ )
61
+ autoscale_parser.add_argument(
62
+ "-d",
63
+ "--soa-dir",
64
+ dest="soa_dir",
65
+ metavar="SOA_DIR",
66
+ default=DEFAULT_SOA_DIR,
67
+ help="define a different soa config directory",
68
+ )
69
+ autoscale_parser.set_defaults(command=paasta_autoscale)
70
+
71
+
72
+ def paasta_autoscale(args):
73
+ log.setLevel(logging.DEBUG)
74
+ service = figure_out_service_name(args)
75
+ instance_config = next(
76
+ get_instance_configs_for_service(
77
+ service=service,
78
+ soa_dir=args.soa_dir,
79
+ clusters=[args.cluster],
80
+ instances=[args.instance],
81
+ ),
82
+ None,
83
+ )
84
+ if not instance_config:
85
+ print(
86
+ "Could not find config files for this service instance in soaconfigs. Maybe you mispelled an argument?"
87
+ )
88
+ return 1
89
+
90
+ api = client.get_paasta_oapi_client(
91
+ cluster=get_paasta_oapi_api_clustername(
92
+ cluster=args.cluster,
93
+ is_eks=(instance_config.__class__ == EksDeploymentConfig),
94
+ ),
95
+ http_res=True,
96
+ )
97
+ if not api:
98
+ print("Could not connect to paasta api. Maybe you misspelled the cluster?")
99
+ return 1
100
+
101
+ try:
102
+ if args.set is None:
103
+ log.debug("Getting the current autoscaler count...")
104
+ res, status, _ = api.autoscaler.get_autoscaler_count(
105
+ service=service, instance=args.instance, _return_http_data_only=False
106
+ )
107
+ else:
108
+ log.debug(f"Setting desired instances to {args.set}.")
109
+ msg = paastamodels.AutoscalerCountMsg(desired_instances=int(args.set))
110
+ res, status, _ = api.autoscaler.update_autoscaler_count(
111
+ service=service,
112
+ instance=args.instance,
113
+ autoscaler_count_msg=msg,
114
+ _return_http_data_only=False,
115
+ )
116
+
117
+ _log_audit(
118
+ action="manual-scale",
119
+ action_details=str(msg),
120
+ service=service,
121
+ instance=args.instance,
122
+ cluster=args.cluster,
123
+ )
124
+ except api.api_error as exc:
125
+ status = exc.status
126
+
127
+ if not 200 <= status <= 299:
128
+ print(
129
+ PaastaColors.red(
130
+ f"ERROR: '{args.instance}' is not configured to autoscale, "
131
+ f"so paasta autoscale could not scale it up on demand. "
132
+ f"If you want to be able to boost this service, please configure autoscaling for the service "
133
+ f"in its config file by setting min and max instances. Example: \n"
134
+ f"{args.instance}:\n"
135
+ f" min_instances: 5\n"
136
+ f" max_instances: 50"
137
+ )
138
+ )
139
+ return 0
140
+
141
+ log.debug(f"Res: {res} Http: {status}")
142
+ print(res.desired_instances)
143
+ return 0