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,970 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "description": "http://paasta.readthedocs.io/en/latest/yelpsoa_configs.html#kubernetes-clustername-yaml",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "minProperties": 1,
7
+ "patternProperties": {
8
+ "^_.*$": {
9
+ "type": "object",
10
+ "additionalProperties": true
11
+ },
12
+ "^([a-z0-9]|[a-z0-9][a-z0-9_-]*[a-z0-9])*$": {
13
+ "type": "object",
14
+ "additionalProperties": false,
15
+ "minProperties": 1,
16
+ "allOf": [
17
+ {
18
+ "oneOf": [
19
+ {
20
+ "properties": {
21
+ "healthcheck_mode": {
22
+ "enum": [
23
+ "tcp",
24
+ "http",
25
+ "https"
26
+ ]
27
+ }
28
+ }
29
+ },
30
+ {
31
+ "properties": {
32
+ "healthcheck_mode": {
33
+ "enum": [
34
+ "cmd"
35
+ ]
36
+ },
37
+ "healthcheck_cmd": {
38
+ "type": "string"
39
+ }
40
+ },
41
+ "required": [
42
+ "healthcheck_cmd"
43
+ ]
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "oneOf": [
49
+ {
50
+ "properties": {
51
+ "drain_method": {
52
+ "enum": [
53
+ "noop",
54
+ "hacheck",
55
+ "test"
56
+ ]
57
+ }
58
+ }
59
+ },
60
+ {
61
+ "properties": {
62
+ "drain_method": {
63
+ "enum": [
64
+ "http"
65
+ ]
66
+ },
67
+ "drain_method_params": {
68
+ "type": "object",
69
+ "properties": {
70
+ "drain": {
71
+ "type": "object"
72
+ },
73
+ "stop_draining": {
74
+ "type": "object"
75
+ },
76
+ "is_draining": {
77
+ "type": "object"
78
+ },
79
+ "is_safe_to_kill": {
80
+ "type": "object"
81
+ }
82
+ },
83
+ "required": [
84
+ "drain",
85
+ "stop_draining",
86
+ "is_draining",
87
+ "is_safe_to_kill"
88
+ ]
89
+ }
90
+ },
91
+ "required": [
92
+ "drain_method_params"
93
+ ]
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ "not": {
99
+ "required": [
100
+ "service_account_name",
101
+ "iam_role"
102
+ ]
103
+ }
104
+ }
105
+ ],
106
+ "properties": {
107
+ "cpus": {
108
+ "type": "number",
109
+ "minimum": 0,
110
+ "exclusiveMinimum": true,
111
+ "default": 0.25
112
+ },
113
+ "mem": {
114
+ "type": "number",
115
+ "minimum": 32,
116
+ "exclusiveMinimum": false,
117
+ "default": 1024
118
+ },
119
+ "disk": {
120
+ "type": "number",
121
+ "minimum": 0,
122
+ "exclusiveMinimum": true,
123
+ "default": 1024
124
+ },
125
+ "gpus": {
126
+ "type": "integer",
127
+ "minimum": 0,
128
+ "exclusiveMinimum": false
129
+ },
130
+ "instances": {
131
+ "type": "integer",
132
+ "minimum": 0,
133
+ "exclusiveMinimum": false
134
+ },
135
+ "min_instances": {
136
+ "type": "integer",
137
+ "minimum": 0,
138
+ "exclusiveMinimum": false
139
+ },
140
+ "max_instances": {
141
+ "type": "integer",
142
+ "minimum": 0,
143
+ "exclusiveMinimum": false
144
+ },
145
+ "backoff_factor": {
146
+ "type": "integer",
147
+ "default": 2
148
+ },
149
+ "max_launch_delay_seconds": {
150
+ "type": "integer",
151
+ "default": 300
152
+ },
153
+ "registrations": {
154
+ "type": "array",
155
+ "items": {
156
+ "type": "string"
157
+ },
158
+ "uniqueItems": true
159
+ },
160
+ "bounce_method": {
161
+ "enum": [
162
+ "crossover",
163
+ "brutal",
164
+ "downthenup"
165
+ ]
166
+ },
167
+ "bounce_health_params": {
168
+ "type": "object",
169
+ "properties": {
170
+ "check_haproxy": {
171
+ "type": "boolean",
172
+ "default": true
173
+ },
174
+ "min_task_uptime": {
175
+ "type": "number"
176
+ },
177
+ "haproxy_min_fraction_up": {
178
+ "type": "number",
179
+ "minimum": 0.0,
180
+ "maximum": 1.0,
181
+ "exclusiveMinimum": true,
182
+ "exclusiveMaximum": false
183
+ }
184
+ }
185
+ },
186
+ "bounce_margin_factor": {
187
+ "type": "number",
188
+ "default": 1,
189
+ "minimum": 0,
190
+ "maximum": 1,
191
+ "exclusiveMinimum": false,
192
+ "exclusiveMaximum": false
193
+ },
194
+ "bounce_priority": {
195
+ "type": "integer"
196
+ },
197
+ "deploy_group": {
198
+ "type": "string"
199
+ },
200
+ "autoscaling": {
201
+ "$ref": "autoscaling_schema.json#autoscaling_params"
202
+ },
203
+ "sfn_autoscaling": {
204
+ "type": "object"
205
+ },
206
+ "service_account_name": {
207
+ "type": "string"
208
+ },
209
+ "drain_method": {
210
+ "enum": [
211
+ "noop",
212
+ "hacheck",
213
+ "http",
214
+ "test"
215
+ ],
216
+ "default": "noop"
217
+ },
218
+ "drain_method_params": {
219
+ "type": "object"
220
+ },
221
+ "constraints": {
222
+ "type": "array",
223
+ "items": {
224
+ "type": "array"
225
+ },
226
+ "uniqueItems": true
227
+ },
228
+ "extra_constraints": {
229
+ "type": "array",
230
+ "items": {
231
+ "type": "array"
232
+ },
233
+ "uniqueItems": true
234
+ },
235
+ "node_selectors": {
236
+ "type": "object",
237
+ "additionalProperties": false,
238
+ "patternProperties": {
239
+ "^[a-zA-Z0-9]+[a-zA-Z0-9-_./]*[a-zA-Z0-9]+$": {
240
+ "anyOf": [
241
+ {
242
+ "type": "string"
243
+ },
244
+ {
245
+ "type": "array",
246
+ "items": {
247
+ "type": "string"
248
+ },
249
+ "uniqueItems": true
250
+ },
251
+ {
252
+ "type": "array",
253
+ "items": {
254
+ "anyOf": [
255
+ {
256
+ "type": "object",
257
+ "additionalProperties": false,
258
+ "properties": {
259
+ "operator": {
260
+ "enum": [
261
+ "In",
262
+ "NotIn"
263
+ ]
264
+ },
265
+ "values": {
266
+ "type": "array",
267
+ "items": {
268
+ "type": "string"
269
+ },
270
+ "uniqueItems": true
271
+ }
272
+ },
273
+ "required": [
274
+ "operator",
275
+ "values"
276
+ ]
277
+ },
278
+ {
279
+ "type": "object",
280
+ "additionalProperties": false,
281
+ "properties": {
282
+ "operator": {
283
+ "enum": [
284
+ "Exists",
285
+ "DoesNotExist"
286
+ ]
287
+ }
288
+ },
289
+ "required": [
290
+ "operator"
291
+ ]
292
+ },
293
+ {
294
+ "type": "object",
295
+ "additionalProperties": false,
296
+ "properties": {
297
+ "operator": {
298
+ "enum": [
299
+ "Gt",
300
+ "Lt"
301
+ ]
302
+ },
303
+ "value": {
304
+ "type": "integer"
305
+ }
306
+ },
307
+ "required": [
308
+ "operator",
309
+ "value"
310
+ ]
311
+ }
312
+ ]
313
+ }
314
+ }
315
+ ]
316
+ }
317
+ }
318
+ },
319
+ "node_selectors_preferred": {
320
+ "type": "array",
321
+ "items": {
322
+ "type": "object",
323
+ "properties": {
324
+ "weight": {
325
+ "type": "integer"
326
+ },
327
+ "preferences": {
328
+ "type": "object",
329
+ "additionalProperties": false,
330
+ "patternProperties": {
331
+ "^[a-zA-Z0-9]+[a-zA-Z0-9-_./]*[a-zA-Z0-9]+$": {
332
+ "anyOf": [
333
+ {
334
+ "type": "string"
335
+ },
336
+ {
337
+ "type": "array",
338
+ "items": {
339
+ "type": "string"
340
+ },
341
+ "uniqueItems": true
342
+ },
343
+ {
344
+ "type": "array",
345
+ "items": {
346
+ "anyOf": [
347
+ {
348
+ "type": "object",
349
+ "additionalProperties": false,
350
+ "properties": {
351
+ "operator": {
352
+ "enum": [
353
+ "In",
354
+ "NotIn"
355
+ ]
356
+ },
357
+ "values": {
358
+ "type": "array",
359
+ "items": {
360
+ "type": "string"
361
+ },
362
+ "uniqueItems": true
363
+ }
364
+ },
365
+ "required": [
366
+ "operator",
367
+ "values"
368
+ ]
369
+ },
370
+ {
371
+ "type": "object",
372
+ "additionalProperties": false,
373
+ "properties": {
374
+ "operator": {
375
+ "enum": [
376
+ "Exists",
377
+ "DoesNotExist"
378
+ ]
379
+ }
380
+ },
381
+ "required": [
382
+ "operator"
383
+ ]
384
+ },
385
+ {
386
+ "type": "object",
387
+ "additionalProperties": false,
388
+ "properties": {
389
+ "operator": {
390
+ "enum": [
391
+ "Gt",
392
+ "Lt"
393
+ ]
394
+ },
395
+ "value": {
396
+ "type": "integer"
397
+ }
398
+ },
399
+ "required": [
400
+ "operator",
401
+ "value"
402
+ ]
403
+ }
404
+ ]
405
+ }
406
+ }
407
+ ]
408
+ }
409
+ }
410
+ }
411
+ }
412
+ }
413
+ },
414
+ "pool": {
415
+ "type": "string"
416
+ },
417
+ "cmd": {
418
+ "oneOf": [
419
+ {
420
+ "type": "string"
421
+ },
422
+ {
423
+ "type": "array"
424
+ }
425
+ ]
426
+ },
427
+ "args": {
428
+ "type": "array",
429
+ "items": {
430
+ "type": "string"
431
+ }
432
+ },
433
+ "env": {
434
+ "type": "object",
435
+ "patternProperties": {
436
+ "^[a-zA-Z_]+[a-zA-Z0-9_]*$": {
437
+ "type": "string"
438
+ }
439
+ },
440
+ "additionalProperties": false
441
+ },
442
+ "cap_add": {
443
+ "type": "array",
444
+ "items": {
445
+ "type": "string"
446
+ }
447
+ },
448
+ "boto_keys": {
449
+ "type": "array",
450
+ "items": {
451
+ "type": "string"
452
+ }
453
+ },
454
+ "crypto_keys": {
455
+ "type": "object",
456
+ "additionalProperties": false,
457
+ "properties": {
458
+ "encrypt": {
459
+ "type": "array",
460
+ "items": {
461
+ "type": "string",
462
+ "pattern": "^[a-zA-Z0-9_.-]+$"
463
+ },
464
+ "uniqueItems": true
465
+ },
466
+ "decrypt": {
467
+ "type": "array",
468
+ "items": {
469
+ "type": "string",
470
+ "pattern": "^[a-zA-Z0-9_.-]+$"
471
+ },
472
+ "uniqueItems": true
473
+ }
474
+ }
475
+ },
476
+ "datastore_credentials": {
477
+ "type": "object",
478
+ "additionalProperties": false,
479
+ "properties": {
480
+ "mysql": {
481
+ "type": "array",
482
+ "items": {
483
+ "type": "string",
484
+ "pattern": "^[a-zA-Z0-9_-]+$"
485
+ },
486
+ "uniqueItems": true
487
+ }
488
+ }
489
+ },
490
+ "extra_volumes": {
491
+ "type": "array",
492
+ "items": {
493
+ "type": "object"
494
+ },
495
+ "uniqueItems": true
496
+ },
497
+ "monitoring": {
498
+ "type": "object",
499
+ "properties": {
500
+ "team": {
501
+ "type": "string"
502
+ },
503
+ "page": {
504
+ "type": "boolean"
505
+ },
506
+ "alert_after": {
507
+ "oneOf": [
508
+ {
509
+ "type": "string",
510
+ "pattern": "^[1-9]+[0-9]*[YMWDhms]$",
511
+ "$comment": "See https://pysensu-yelp.readthedocs.io/en/latest/#pysensu_yelp.human_to_seconds"
512
+ },
513
+ {
514
+ "type": "integer",
515
+ "minimum": 0
516
+ }
517
+ ]
518
+ }
519
+ },
520
+ "additionalProperties": true
521
+ },
522
+ "aws_ebs_volumes": {
523
+ "type": "array",
524
+ "items": {
525
+ "type": "object"
526
+ },
527
+ "uniqueItems": true
528
+ },
529
+ "persistent_volumes": {
530
+ "type": "array",
531
+ "items": {
532
+ "type": "object",
533
+ "properties": {
534
+ "container_path": {
535
+ "type": "string"
536
+ },
537
+ "size": {
538
+ "type": "integer"
539
+ },
540
+ "mode": {
541
+ "type": "string"
542
+ },
543
+ "storage_class_name": {
544
+ "type": "string"
545
+ }
546
+ },
547
+ "additionalProperties": false
548
+ },
549
+ "uniqueItems": true
550
+ },
551
+ "secret_volumes": {
552
+ "type": "array",
553
+ "items": {
554
+ "type": "object",
555
+ "properties": {
556
+ "container_path": {
557
+ "type": "string"
558
+ },
559
+ "secret_name": {
560
+ "type": "string"
561
+ },
562
+ "default_mode": {
563
+ "type": "string"
564
+ },
565
+ "items": {
566
+ "type": "array",
567
+ "maxItems": 1,
568
+ "items": {
569
+ "type": "object",
570
+ "properties": {
571
+ "key": {
572
+ "type": "string"
573
+ },
574
+ "path": {
575
+ "type": "string"
576
+ },
577
+ "mode": {
578
+ "type": "string"
579
+ }
580
+ },
581
+ "required": [
582
+ "key",
583
+ "path"
584
+ ]
585
+ },
586
+ "uniqueItems": true
587
+ }
588
+ },
589
+ "required": [
590
+ "container_path",
591
+ "secret_name"
592
+ ]
593
+ },
594
+ "uniqueItems": true
595
+ },
596
+ "projected_sa_volumes": {
597
+ "type": "array",
598
+ "items": {
599
+ "type": "object",
600
+ "properties": {
601
+ "container_path": {
602
+ "type": "string"
603
+ },
604
+ "audience": {
605
+ "type": "string"
606
+ },
607
+ "expiration_seconds": {
608
+ "type": "integer"
609
+ }
610
+ },
611
+ "required": [
612
+ "container_path",
613
+ "audience"
614
+ ]
615
+ },
616
+ "uniqueItems": true
617
+ },
618
+ "replication_threshold": {
619
+ "type": "integer",
620
+ "minimum": 0
621
+ },
622
+ "cfs_period_us": {
623
+ "type": "integer",
624
+ "minimum": 1000,
625
+ "maximum": 1000000,
626
+ "exclusiveMinimum": false
627
+ },
628
+ "container_port": {
629
+ "type": "number"
630
+ },
631
+ "deploy_blacklist": {
632
+ "type": "array"
633
+ },
634
+ "deploy_whitelist": {
635
+ "type": "array"
636
+ },
637
+ "monitoring_blacklist": {
638
+ "type": "array"
639
+ },
640
+ "iam_role": {
641
+ "type": "string",
642
+ "pattern": "^arn:aws:iam::[0-9]+:role/[a-zA-Z0-9+=,.@_-]+$",
643
+ "$comment": "This should be a valid AWS IAM role ARN, see https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names"
644
+ },
645
+ "iam_role_provider": {
646
+ "enum": [
647
+ "aws"
648
+ ]
649
+ },
650
+ "fs_group": {
651
+ "type": "integer"
652
+ },
653
+ "healthcheck_mode": {
654
+ "enum": [
655
+ "cmd",
656
+ "tcp",
657
+ "http",
658
+ "https"
659
+ ]
660
+ },
661
+ "healthcheck_cmd": {
662
+ "type": "string",
663
+ "default": "/bin/true"
664
+ },
665
+ "healthcheck_grace_period_seconds": {
666
+ "type": "number",
667
+ "default": 60
668
+ },
669
+ "healthcheck_interval_seconds": {
670
+ "type": "number",
671
+ "default": 10
672
+ },
673
+ "healthcheck_timeout_seconds": {
674
+ "type": "number",
675
+ "default": 10
676
+ },
677
+ "healthcheck_max_consecutive_failures": {
678
+ "type": "integer",
679
+ "default": 30
680
+ },
681
+ "healthcheck_uri": {
682
+ "type": "string",
683
+ "default": "/status"
684
+ },
685
+ "cpu_burst_add": {
686
+ "type": "number",
687
+ "minimum": 0.0,
688
+ "exclusiveMinimum": false
689
+ },
690
+ "host_port": {
691
+ "type": "integer",
692
+ "default": 0,
693
+ "minimum": 0,
694
+ "maximum": 65535,
695
+ "exclusiveMinimum": false
696
+ },
697
+ "dependencies_reference": {
698
+ "type": "string"
699
+ },
700
+ "extra_docker_args": {
701
+ "type": "object",
702
+ "additionalProperties": {
703
+ "type": "string"
704
+ }
705
+ },
706
+ "security": {
707
+ "type": "object",
708
+ "properties": {
709
+ "outbound_firewall": {
710
+ "enum": [
711
+ "block",
712
+ "monitor"
713
+ ]
714
+ }
715
+ }
716
+ },
717
+ "sidecar_resource_requirements": {
718
+ "type": "object",
719
+ "additionalProperties": false,
720
+ "properties": {
721
+ "hacheck": {
722
+ "type": "object",
723
+ "properties": {
724
+ "requests": {
725
+ "type": "object",
726
+ "additionalProperties": false,
727
+ "properties": {
728
+ "cpu": {
729
+ "type": "number",
730
+ "minimum": 0.0
731
+ },
732
+ "memory": {
733
+ "type": "string"
734
+ },
735
+ "ephemeral-storage": {
736
+ "type": "string"
737
+ }
738
+ }
739
+ },
740
+ "limits": {
741
+ "type": "object",
742
+ "additionalProperties": false,
743
+ "properties": {
744
+ "cpu": {
745
+ "type": "number",
746
+ "minimum": 0.0
747
+ },
748
+ "memory": {
749
+ "type": "string"
750
+ },
751
+ "ephemeral-storage": {
752
+ "type": "string"
753
+ }
754
+ }
755
+ }
756
+ }
757
+ }
758
+ }
759
+ },
760
+ "anti_affinity": {
761
+ "oneOf": [
762
+ {
763
+ "type": "object",
764
+ "properties": {
765
+ "service": {
766
+ "type": "string"
767
+ },
768
+ "instance": {
769
+ "type": "string"
770
+ }
771
+ }
772
+ },
773
+ {
774
+ "type": "array",
775
+ "items": {
776
+ "type": "object",
777
+ "properties": {
778
+ "service": {
779
+ "type": "string"
780
+ },
781
+ "instance": {
782
+ "type": "string"
783
+ }
784
+ }
785
+ },
786
+ "uniqueItems": true
787
+ }
788
+ ]
789
+ },
790
+ "anti_affinity_preferred": {
791
+ "oneOf": [
792
+ {
793
+ "type": "object",
794
+ "properties": {
795
+ "service": {
796
+ "type": "string"
797
+ },
798
+ "instance": {
799
+ "type": "string"
800
+ }
801
+ }
802
+ },
803
+ {
804
+ "type": "array",
805
+ "items": {
806
+ "type": "object",
807
+ "properties": {
808
+ "service": {
809
+ "type": "string"
810
+ },
811
+ "instance": {
812
+ "type": "string"
813
+ },
814
+ "weight": {
815
+ "type": "integer",
816
+ "minimum": 1,
817
+ "maximum": 100,
818
+ "exclusiveMinimum": false,
819
+ "exclusiveMaximum": false
820
+ }
821
+ }
822
+ },
823
+ "uniqueItems": true
824
+ }
825
+ ]
826
+ },
827
+ "prometheus_shard": {
828
+ "type": "string"
829
+ },
830
+ "prometheus_path": {
831
+ "type": "string"
832
+ },
833
+ "prometheus_port": {
834
+ "type": "integer",
835
+ "minimum": 0
836
+ },
837
+ "routable_ip": {
838
+ "type": "boolean"
839
+ },
840
+ "enable_aws_lb_readiness_gate": {
841
+ "type": "boolean"
842
+ },
843
+ "lifecycle": {
844
+ "type": "object",
845
+ "properties": {
846
+ "termination_grace_period_seconds": {
847
+ "type": "integer",
848
+ "minimum": 0
849
+ },
850
+ "pre_stop_command": {
851
+ "oneOf": [
852
+ {
853
+ "type": "string"
854
+ },
855
+ {
856
+ "type": "array",
857
+ "items": {
858
+ "type": "string"
859
+ }
860
+ }
861
+ ]
862
+ },
863
+ "pre_stop_drain_seconds": {
864
+ "type": "integer",
865
+ "minimum": 0
866
+ },
867
+ "pre_stop_wait_for_connections_to_complete": {
868
+ "type": "boolean"
869
+ }
870
+ }
871
+ },
872
+ "pod_management_policy": {
873
+ "enum": [
874
+ "OrderedReady",
875
+ "Parallel"
876
+ ]
877
+ },
878
+ "is_istio_sidecar_injection_enabled": {
879
+ "type": "boolean"
880
+ },
881
+ "weight": {
882
+ "type": "integer",
883
+ "minimum": 1
884
+ },
885
+ "namespace": {
886
+ "type": "string",
887
+ "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
888
+ "maxLength": 63
889
+ },
890
+ "autotune_limits": {
891
+ "type": "object",
892
+ "properties": {
893
+ "cpus": {
894
+ "type": "object",
895
+ "properties": {
896
+ "min": {
897
+ "type": "number",
898
+ "minimum": 0,
899
+ "exclusiveMinimum": true
900
+ },
901
+ "max": {
902
+ "type": "number",
903
+ "minimum": 0,
904
+ "exclusiveMinimum": true
905
+ }
906
+ }
907
+ },
908
+ "mem": {
909
+ "type": "object",
910
+ "properties": {
911
+ "min": {
912
+ "type": "integer",
913
+ "minimum": 32,
914
+ "exclusiveMinimum": false
915
+ },
916
+ "max": {
917
+ "type": "integer",
918
+ "minimum": 32,
919
+ "exclusiveMinimum": false
920
+ }
921
+ }
922
+ },
923
+ "disk": {
924
+ "type": "object",
925
+ "properties": {
926
+ "min": {
927
+ "type": "integer",
928
+ "minimum": 128,
929
+ "exclusiveMinimum": false
930
+ },
931
+ "max": {
932
+ "type": "integer",
933
+ "minimum": 128,
934
+ "exclusiveMinimum": false
935
+ }
936
+ }
937
+ }
938
+ }
939
+ },
940
+ "topology_spread_constraints": {
941
+ "type": "array",
942
+ "items": {
943
+ "type": "object",
944
+ "properties": {
945
+ "topology_key": {
946
+ "type": "string"
947
+ },
948
+ "when_unsatisfiable": {
949
+ "type": "string",
950
+ "enum": [
951
+ "ScheduleAnyway",
952
+ "DoNotSchedule"
953
+ ]
954
+ },
955
+ "max_skew": {
956
+ "type": "integer"
957
+ }
958
+ },
959
+ "required": []
960
+ },
961
+ "uniqueItems": true
962
+ },
963
+ "uses_bulkdata": {
964
+ "type": "boolean",
965
+ "default": true
966
+ }
967
+ }
968
+ }
969
+ }
970
+ }