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,373 @@
1
+ import argparse
2
+ import logging
3
+ import sys
4
+
5
+ from paasta_tools.cli.utils import trigger_deploys
6
+ from paasta_tools.config_utils import AutoConfigUpdater
7
+ from paasta_tools.utils import DEFAULT_SOA_CONFIGS_GIT_URL
8
+ from paasta_tools.utils import format_git_url
9
+ from paasta_tools.utils import load_system_paasta_config
10
+
11
+ log = logging.getLogger(__name__)
12
+
13
+
14
+ def parse_args():
15
+ parser = argparse.ArgumentParser(description="")
16
+ parser.add_argument(
17
+ "--git-remote",
18
+ help="Master git repo for soaconfigs",
19
+ default=None,
20
+ dest="git_remote",
21
+ )
22
+ parser.add_argument(
23
+ "--branch",
24
+ help="Branch name to push to",
25
+ required=True,
26
+ dest="branch",
27
+ )
28
+ parser.add_argument(
29
+ "--local-dir",
30
+ help="Act on configs in the local directory rather than cloning the git_remote",
31
+ required=False,
32
+ default=None,
33
+ dest="local_dir",
34
+ )
35
+ parser.add_argument(
36
+ "-v",
37
+ "--verbose",
38
+ help="Logging verbosity",
39
+ action="store_true",
40
+ dest="verbose",
41
+ )
42
+ parser.add_argument(
43
+ "-d",
44
+ "--dry-run",
45
+ help="Do not commit changes to git",
46
+ action="store_true",
47
+ dest="dry_run",
48
+ )
49
+ parser.add_argument(
50
+ "--source-id",
51
+ help="String to attribute the changes in the commit message.",
52
+ required=False,
53
+ default=None,
54
+ dest="source_id",
55
+ )
56
+ parser.add_argument(
57
+ "--service",
58
+ help="Service to modify",
59
+ required=True,
60
+ dest="service",
61
+ )
62
+ parser.add_argument(
63
+ "--min-instance-count",
64
+ help="If a deploy group is added, the min_instance count to create it with",
65
+ required=False,
66
+ default=1,
67
+ dest="min_instance_count",
68
+ )
69
+ parser.add_argument(
70
+ "--prod-max-instance-count",
71
+ help="If a deploy group is added, the prod max_instance count to create it with",
72
+ required=False,
73
+ default=100,
74
+ type=int,
75
+ dest="prod_max_instance_count",
76
+ )
77
+ parser.add_argument(
78
+ "--non-prod-max-instance-count",
79
+ help="If a deploy group is added, the non-prod max_instance count to create it with",
80
+ required=False,
81
+ default=5,
82
+ type=int,
83
+ dest="non_prod_max_instance_count",
84
+ )
85
+ parser.add_argument(
86
+ "--cpus",
87
+ help="If a deploy group is added, the cpu value to create it with",
88
+ required=False,
89
+ type=float,
90
+ dest="cpus",
91
+ )
92
+ parser.add_argument(
93
+ "--mem",
94
+ help="If a deploy group is added, the mem value to create it with",
95
+ required=False,
96
+ type=int,
97
+ dest="mem",
98
+ )
99
+ parser.add_argument(
100
+ "--setpoint",
101
+ help="If a deploy group is added, the autoscaling.setpoint value to create it with",
102
+ required=False,
103
+ type=float,
104
+ dest="setpoint",
105
+ )
106
+ parser.add_argument(
107
+ "--shard-name",
108
+ help="Shard name to add if it does not exist",
109
+ required=True,
110
+ dest="shard_name",
111
+ )
112
+ parser.add_argument(
113
+ "--metrics-provider",
114
+ help="Autoscaling metrics provider",
115
+ required=False,
116
+ dest="metrics_provider",
117
+ )
118
+ parser.add_argument(
119
+ "--timeout-server-ms",
120
+ help="smartstack server timeout",
121
+ required=False,
122
+ type=int,
123
+ dest="timeout_server_ms",
124
+ )
125
+ parser.add_argument(
126
+ "--autotune-min-cpus",
127
+ help="Minimum number of CPUs Autotune should give the shard",
128
+ required=False,
129
+ type=float,
130
+ dest="autotune_min_cpus",
131
+ )
132
+ parser.add_argument(
133
+ "--autotune-max-cpus",
134
+ help="Maximum number of CPUs Autotune should give the shard",
135
+ required=False,
136
+ type=float,
137
+ dest="autotune_max_cpus",
138
+ )
139
+ parser.add_argument(
140
+ "--autotune-min-mem",
141
+ help="Minimum amount of memory Autotune should give the shard",
142
+ required=False,
143
+ type=int,
144
+ dest="autotune_min_mem",
145
+ )
146
+ parser.add_argument(
147
+ "--autotune-max-mem",
148
+ help="Maximum amount of memory Autotune should give the shard",
149
+ required=False,
150
+ type=int,
151
+ dest="autotune_max_mem",
152
+ )
153
+ parser.add_argument(
154
+ "--autotune-min-disk",
155
+ help="Minimum amount of disk Autotune should give the shard",
156
+ required=False,
157
+ type=int,
158
+ dest="autotune_min_disk",
159
+ )
160
+ parser.add_argument(
161
+ "--autotune-max-disk",
162
+ help="Maximum amount of disk Autotune should give the shard",
163
+ required=False,
164
+ type=int,
165
+ dest="autotune_max_disk",
166
+ )
167
+ parser.add_argument(
168
+ "--iam-role",
169
+ help="IAM role to use for the shard",
170
+ required=False,
171
+ type=str,
172
+ dest="iam_role",
173
+ )
174
+ parser.add_argument(
175
+ "--environment",
176
+ help="Environment to deploy in, defaults to all environments if not specified",
177
+ required=False,
178
+ choices=DEPLOY_MAPPINGS.keys(),
179
+ dest="environment",
180
+ )
181
+ return parser.parse_args()
182
+
183
+
184
+ def get_default_git_remote():
185
+ system_paasta_config = load_system_paasta_config()
186
+ repo_config = system_paasta_config.get_git_repo_config("yelpsoa-configs")
187
+ default_git_remote = format_git_url(
188
+ system_paasta_config.get_git_config()["git_user"],
189
+ repo_config.get("git_server", DEFAULT_SOA_CONFIGS_GIT_URL),
190
+ repo_config["repo_name"],
191
+ )
192
+ return default_git_remote
193
+
194
+
195
+ DEPLOY_MAPPINGS = {
196
+ "dev": ["norcal-devc"],
197
+ "stage": ["norcal-stagef", "norcal-stageg"],
198
+ "prod": ["nova-prod", "pnw-prod"],
199
+ }
200
+
201
+
202
+ def main(args):
203
+ changes_made = False
204
+ updater = AutoConfigUpdater(
205
+ config_source=args.source_id,
206
+ git_remote=args.git_remote or get_default_git_remote(),
207
+ branch=args.branch,
208
+ working_dir=args.local_dir or "/nail/tmp",
209
+ do_clone=args.local_dir is None,
210
+ )
211
+ deploy_environments = (
212
+ {args.environment: DEPLOY_MAPPINGS[args.environment]}
213
+ if args.environment
214
+ else DEPLOY_MAPPINGS
215
+ )
216
+
217
+ with updater:
218
+ deploy_file = updater.get_existing_configs(args.service, "deploy")
219
+ smartstack_file = updater.get_existing_configs(args.service, "smartstack")
220
+ shard_deploy_groups = {
221
+ f"{prefix}.{args.shard_name}" for prefix in deploy_environments.keys()
222
+ }
223
+ pipeline_steps = {step["step"] for step in deploy_file["pipeline"]}
224
+
225
+ if not shard_deploy_groups.issubset(pipeline_steps):
226
+ changes_made = True
227
+ steps_to_add = shard_deploy_groups - pipeline_steps
228
+
229
+ # If the pipeline does not contain deploy groups for the service shard
230
+ # Add the missing steps and write to deploy config
231
+ for step in steps_to_add:
232
+ deploy_file["pipeline"].append(
233
+ {
234
+ "step": step,
235
+ "wait_for_deployment": True,
236
+ "disabled": True,
237
+ }
238
+ )
239
+ log.info(f"{step} added to deploy config")
240
+ updater.write_configs(args.service, "deploy", deploy_file)
241
+
242
+ for deploy_prefix, config_paths in deploy_environments.items():
243
+ for config_path in config_paths:
244
+ # Determine configuration suffix (PAASTA-18216)
245
+ eks_config = updater.get_existing_configs(
246
+ args.service, f"eks-{config_path}"
247
+ )
248
+ kube_config = updater.get_existing_configs(
249
+ args.service, f"kubernetes-{config_path}"
250
+ )
251
+
252
+ if eks_config:
253
+ config_file = eks_config
254
+ config_prefix = "eks-"
255
+ elif kube_config:
256
+ config_file = kube_config
257
+ config_prefix = "kubernetes-"
258
+ else:
259
+ log.error(
260
+ f"No EKS or Kubernetes config found for {args.service}"
261
+ )
262
+ continue
263
+
264
+ instance_config = {
265
+ "deploy_group": f"{deploy_prefix}.{args.shard_name}",
266
+ "min_instances": args.min_instance_count,
267
+ "max_instances": (
268
+ args.prod_max_instance_count
269
+ if deploy_prefix == "prod"
270
+ else args.non_prod_max_instance_count
271
+ ),
272
+ "env": {
273
+ "PAASTA_SECRET_BUGSNAG_API_KEY": "SECRET(bugsnag_api_key)",
274
+ },
275
+ }
276
+ if args.metrics_provider is not None or args.setpoint is not None:
277
+ instance_config["autoscaling"] = {"metrics_providers": []}
278
+ metrics_provider_config = {}
279
+ if args.metrics_provider is not None:
280
+ metrics_provider_config["type"] = args.metrics_provider
281
+ if args.setpoint is not None:
282
+ metrics_provider_config["setpoint"] = args.setpoint
283
+ instance_config["autoscaling"]["metrics_providers"].append(
284
+ metrics_provider_config
285
+ )
286
+
287
+ if args.iam_role is not None:
288
+ instance_config["iam_role"] = args.iam_role
289
+ if args.cpus is not None:
290
+ instance_config["cpus"] = args.cpus
291
+ if args.mem is not None:
292
+ instance_config["mem"] = args.mem
293
+ if any(
294
+ (
295
+ args.autotune_min_cpus,
296
+ args.autotune_max_cpus,
297
+ args.autotune_min_mem,
298
+ args.autotune_max_mem,
299
+ args.autotune_min_disk,
300
+ args.autotune_max_disk,
301
+ )
302
+ ):
303
+ limit_config = {}
304
+ limit_config["cpus"] = {
305
+ "min": args.autotune_min_cpus,
306
+ "max": args.autotune_max_cpus,
307
+ }
308
+ limit_config["mem"] = {
309
+ "min": args.autotune_min_mem,
310
+ "max": args.autotune_max_mem,
311
+ }
312
+ limit_config["disk"] = {
313
+ "min": args.autotune_min_disk,
314
+ "max": args.autotune_max_disk,
315
+ }
316
+
317
+ # remove any None values to keep the config clean
318
+ for resource in list(limit_config):
319
+ for key in list(limit_config[resource]):
320
+ if limit_config[resource][key] is None:
321
+ del limit_config[resource][key]
322
+ if len(limit_config[resource]) == 0:
323
+ del limit_config[resource]
324
+
325
+ if len(limit_config) > 0:
326
+ instance_config["autotune_limits"] = limit_config
327
+ # If the service config does not contain definitions for the shard in each ecosystem
328
+ # Add the missing definition and write to the corresponding config
329
+ if args.shard_name not in config_file.keys():
330
+ config_file[args.shard_name] = instance_config
331
+
332
+ updater.write_configs(
333
+ args.service, f"{config_prefix}{config_path}", config_file
334
+ )
335
+ log.info(
336
+ f"{deploy_prefix}.{args.shard_name} added to {config_prefix}{config_path}"
337
+ )
338
+ else:
339
+ log.info(f"{args.shard_name} is in deploy config already.")
340
+
341
+ # If the service shard is not defined in smartstack
342
+ # Add the definition with a suggested proxy port
343
+ if args.shard_name not in smartstack_file.keys():
344
+ changes_made = True
345
+ smartstack_file[args.shard_name] = {
346
+ "proxy_port": None,
347
+ "extra_advertise": {"ecosystem:devc": ["ecosystem:devc"]},
348
+ }
349
+ if args.timeout_server_ms:
350
+ smartstack_file[args.shard_name][
351
+ "timeout_server_ms"
352
+ ] = args.timeout_server_ms
353
+ updater.write_configs(args.service, "smartstack", smartstack_file)
354
+ else:
355
+ log.info(f"{args.shard_name} is in smartstack config already, skipping.")
356
+
357
+ # Only commit to remote if changes were made
358
+ if changes_made and not args.dry_run:
359
+ updater.commit_to_remote()
360
+ trigger_deploys(args.service)
361
+ else:
362
+ # exit with code to indicate nothing was changed
363
+ sys.exit(129)
364
+
365
+
366
+ if __name__ == "__main__":
367
+ args = parse_args()
368
+ if args.verbose:
369
+ logging.basicConfig(level=logging.DEBUG)
370
+ else:
371
+ logging.basicConfig(level=logging.WARNING)
372
+
373
+ main(args)