paasta-tools 1.27.0__py3-none-any.whl → 1.35.8__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.

Potentially problematic release.


This version of paasta-tools might be problematic. Click here for more details.

Files changed (192) hide show
  1. paasta_tools/__init__.py +1 -1
  2. paasta_tools/api/api_docs/swagger.json +9 -1
  3. paasta_tools/api/tweens/auth.py +2 -1
  4. paasta_tools/api/views/instance.py +9 -2
  5. paasta_tools/api/views/remote_run.py +2 -0
  6. paasta_tools/async_utils.py +4 -1
  7. paasta_tools/bounce_lib.py +8 -5
  8. paasta_tools/check_services_replication_tools.py +10 -4
  9. paasta_tools/check_spark_jobs.py +1 -1
  10. paasta_tools/cli/cli.py +4 -4
  11. paasta_tools/cli/cmds/autoscale.py +2 -0
  12. paasta_tools/cli/cmds/check.py +2 -0
  13. paasta_tools/cli/cmds/cook_image.py +2 -0
  14. paasta_tools/cli/cmds/get_docker_image.py +2 -0
  15. paasta_tools/cli/cmds/get_image_version.py +2 -0
  16. paasta_tools/cli/cmds/get_latest_deployment.py +2 -0
  17. paasta_tools/cli/cmds/info.py +10 -3
  18. paasta_tools/cli/cmds/itest.py +2 -0
  19. paasta_tools/cli/cmds/list_namespaces.py +2 -0
  20. paasta_tools/cli/cmds/local_run.py +122 -27
  21. paasta_tools/cli/cmds/logs.py +31 -7
  22. paasta_tools/cli/cmds/mark_for_deployment.py +14 -4
  23. paasta_tools/cli/cmds/mesh_status.py +3 -2
  24. paasta_tools/cli/cmds/push_to_registry.py +2 -0
  25. paasta_tools/cli/cmds/remote_run.py +156 -12
  26. paasta_tools/cli/cmds/rollback.py +6 -2
  27. paasta_tools/cli/cmds/secret.py +4 -2
  28. paasta_tools/cli/cmds/security_check.py +2 -0
  29. paasta_tools/cli/cmds/spark_run.py +7 -3
  30. paasta_tools/cli/cmds/status.py +59 -29
  31. paasta_tools/cli/cmds/validate.py +325 -40
  32. paasta_tools/cli/cmds/wait_for_deployment.py +2 -0
  33. paasta_tools/cli/schemas/adhoc_schema.json +3 -0
  34. paasta_tools/cli/schemas/autoscaling_schema.json +3 -2
  35. paasta_tools/cli/schemas/eks_schema.json +24 -1
  36. paasta_tools/cli/schemas/kubernetes_schema.json +1 -0
  37. paasta_tools/cli/schemas/smartstack_schema.json +14 -0
  38. paasta_tools/cli/utils.py +34 -20
  39. paasta_tools/contrib/bounce_log_latency_parser.py +1 -1
  40. paasta_tools/contrib/check_orphans.py +1 -1
  41. paasta_tools/contrib/get_running_task_allocation.py +1 -1
  42. paasta_tools/contrib/ide_helper.py +14 -14
  43. paasta_tools/contrib/mock_patch_checker.py +1 -1
  44. paasta_tools/contrib/paasta_update_soa_memcpu.py +10 -14
  45. paasta_tools/contrib/render_template.py +1 -1
  46. paasta_tools/contrib/shared_ip_check.py +1 -1
  47. paasta_tools/generate_deployments_for_service.py +2 -0
  48. paasta_tools/instance/hpa_metrics_parser.py +3 -5
  49. paasta_tools/instance/kubernetes.py +70 -36
  50. paasta_tools/kubernetes/application/controller_wrappers.py +23 -2
  51. paasta_tools/kubernetes/remote_run.py +52 -25
  52. paasta_tools/kubernetes_tools.py +60 -69
  53. paasta_tools/long_running_service_tools.py +15 -5
  54. paasta_tools/mesos/master.py +1 -1
  55. paasta_tools/metrics/metastatus_lib.py +1 -25
  56. paasta_tools/metrics/metrics_lib.py +12 -3
  57. paasta_tools/paastaapi/__init__.py +1 -1
  58. paasta_tools/paastaapi/api/autoscaler_api.py +1 -1
  59. paasta_tools/paastaapi/api/default_api.py +1 -1
  60. paasta_tools/paastaapi/api/remote_run_api.py +1 -1
  61. paasta_tools/paastaapi/api/resources_api.py +1 -1
  62. paasta_tools/paastaapi/api/service_api.py +1 -1
  63. paasta_tools/paastaapi/api_client.py +1 -1
  64. paasta_tools/paastaapi/configuration.py +2 -2
  65. paasta_tools/paastaapi/exceptions.py +1 -1
  66. paasta_tools/paastaapi/model/adhoc_launch_history.py +1 -1
  67. paasta_tools/paastaapi/model/autoscaler_count_msg.py +1 -1
  68. paasta_tools/paastaapi/model/autoscaling_override.py +1 -1
  69. paasta_tools/paastaapi/model/deploy_queue.py +1 -1
  70. paasta_tools/paastaapi/model/deploy_queue_service_instance.py +1 -1
  71. paasta_tools/paastaapi/model/envoy_backend.py +1 -1
  72. paasta_tools/paastaapi/model/envoy_location.py +1 -1
  73. paasta_tools/paastaapi/model/envoy_status.py +1 -1
  74. paasta_tools/paastaapi/model/flink_cluster_overview.py +1 -1
  75. paasta_tools/paastaapi/model/flink_config.py +1 -1
  76. paasta_tools/paastaapi/model/flink_job.py +1 -1
  77. paasta_tools/paastaapi/model/flink_job_details.py +1 -1
  78. paasta_tools/paastaapi/model/flink_jobs.py +1 -1
  79. paasta_tools/paastaapi/model/float_and_error.py +1 -1
  80. paasta_tools/paastaapi/model/hpa_metric.py +1 -1
  81. paasta_tools/paastaapi/model/inline_object.py +1 -1
  82. paasta_tools/paastaapi/model/inline_response200.py +1 -1
  83. paasta_tools/paastaapi/model/inline_response2001.py +1 -1
  84. paasta_tools/paastaapi/model/inline_response202.py +1 -1
  85. paasta_tools/paastaapi/model/inline_response403.py +1 -1
  86. paasta_tools/paastaapi/model/instance_bounce_status.py +1 -1
  87. paasta_tools/paastaapi/model/instance_mesh_status.py +1 -1
  88. paasta_tools/paastaapi/model/instance_status.py +1 -1
  89. paasta_tools/paastaapi/model/instance_status_adhoc.py +1 -1
  90. paasta_tools/paastaapi/model/instance_status_cassandracluster.py +1 -1
  91. paasta_tools/paastaapi/model/instance_status_flink.py +1 -1
  92. paasta_tools/paastaapi/model/instance_status_kafkacluster.py +1 -1
  93. paasta_tools/paastaapi/model/instance_status_kubernetes.py +1 -1
  94. paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +1 -1
  95. paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +1 -1
  96. paasta_tools/paastaapi/model/instance_status_tron.py +1 -1
  97. paasta_tools/paastaapi/model/instance_tasks.py +1 -1
  98. paasta_tools/paastaapi/model/integer_and_error.py +1 -1
  99. paasta_tools/paastaapi/model/kubernetes_container.py +1 -1
  100. paasta_tools/paastaapi/model/kubernetes_container_v2.py +1 -1
  101. paasta_tools/paastaapi/model/kubernetes_healthcheck.py +1 -1
  102. paasta_tools/paastaapi/model/kubernetes_pod.py +1 -1
  103. paasta_tools/paastaapi/model/kubernetes_pod_event.py +1 -1
  104. paasta_tools/paastaapi/model/kubernetes_pod_v2.py +1 -1
  105. paasta_tools/paastaapi/model/kubernetes_replica_set.py +1 -1
  106. paasta_tools/paastaapi/model/kubernetes_version.py +4 -1
  107. paasta_tools/paastaapi/model/remote_run_outcome.py +1 -1
  108. paasta_tools/paastaapi/model/remote_run_start.py +4 -1
  109. paasta_tools/paastaapi/model/remote_run_stop.py +1 -1
  110. paasta_tools/paastaapi/model/remote_run_token.py +1 -1
  111. paasta_tools/paastaapi/model/resource.py +1 -1
  112. paasta_tools/paastaapi/model/resource_item.py +1 -1
  113. paasta_tools/paastaapi/model/resource_value.py +1 -1
  114. paasta_tools/paastaapi/model/smartstack_backend.py +1 -1
  115. paasta_tools/paastaapi/model/smartstack_location.py +1 -1
  116. paasta_tools/paastaapi/model/smartstack_status.py +1 -1
  117. paasta_tools/paastaapi/model/task_tail_lines.py +1 -1
  118. paasta_tools/paastaapi/model_utils.py +1 -1
  119. paasta_tools/paastaapi/rest.py +1 -1
  120. paasta_tools/remote_git.py +2 -2
  121. paasta_tools/run-paasta-api-in-dev-mode.py +2 -2
  122. paasta_tools/run-paasta-api-playground.py +2 -2
  123. paasta_tools/setup_kubernetes_job.py +43 -1
  124. paasta_tools/setup_prometheus_adapter_config.py +82 -0
  125. paasta_tools/setup_tron_namespace.py +2 -2
  126. paasta_tools/tron_tools.py +4 -1
  127. paasta_tools/utils.py +29 -11
  128. paasta_tools/yaml_tools.py +1 -1
  129. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_orphans.py +1 -1
  130. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_spark_jobs.py +1 -1
  131. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/generate_deployments_for_service.py +2 -0
  132. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/get_running_task_allocation.py +1 -1
  133. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/ide_helper.py +14 -14
  134. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_update_soa_memcpu.py +10 -14
  135. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_kubernetes_job.py +43 -1
  136. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_prometheus_adapter_config.py +82 -0
  137. paasta_tools-1.35.8.dist-info/METADATA +79 -0
  138. {paasta_tools-1.27.0.dist-info → paasta_tools-1.35.8.dist-info}/RECORD +186 -191
  139. {paasta_tools-1.27.0.dist-info → paasta_tools-1.35.8.dist-info}/WHEEL +1 -1
  140. paasta_tools/frameworks/adhoc_scheduler.py +0 -71
  141. paasta_tools/frameworks/native_scheduler.py +0 -652
  142. paasta_tools/frameworks/task_store.py +0 -245
  143. paasta_tools/mesos_maintenance.py +0 -848
  144. paasta_tools/paasta_native_serviceinit.py +0 -21
  145. paasta_tools-1.27.0.dist-info/METADATA +0 -75
  146. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/apply_external_resources.py +0 -0
  147. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/bounce_log_latency_parser.py +0 -0
  148. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_autoscaler_max_instances.py +0 -0
  149. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_cassandracluster_services_replication.py +0 -0
  150. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_flink_services_health.py +0 -0
  151. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_kubernetes_api.py +0 -0
  152. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_kubernetes_services_replication.py +0 -0
  153. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_manual_oapi_changes.sh +0 -0
  154. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_oom_events.py +0 -0
  155. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/cleanup_kubernetes_cr.py +0 -0
  156. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/cleanup_kubernetes_crd.py +0 -0
  157. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/cleanup_kubernetes_jobs.py +0 -0
  158. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/create_dynamodb_table.py +0 -0
  159. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/create_paasta_playground.py +0 -0
  160. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/delete_kubernetes_deployments.py +0 -0
  161. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/emit_allocated_cpu_metrics.py +0 -0
  162. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/generate_all_deployments +0 -0
  163. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/generate_authenticating_services.py +0 -0
  164. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/generate_services_file.py +0 -0
  165. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/generate_services_yaml.py +0 -0
  166. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/habitat_fixer.py +0 -0
  167. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/is_pod_healthy_in_proxy.py +0 -0
  168. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/is_pod_healthy_in_smartstack.py +0 -0
  169. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/kill_bad_containers.py +0 -0
  170. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/kubernetes_remove_evicted_pods.py +0 -0
  171. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/mass-deploy-tag.sh +0 -0
  172. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/mock_patch_checker.py +0 -0
  173. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_cleanup_remote_run_resources.py +0 -0
  174. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_cleanup_stale_nodes.py +0 -0
  175. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_deploy_tron_jobs +0 -0
  176. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_execute_docker_command.py +0 -0
  177. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_secrets_sync.py +0 -0
  178. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_tabcomplete.sh +0 -0
  179. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/render_template.py +0 -0
  180. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/rightsizer_soaconfigs_update.py +0 -0
  181. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/service_shard_remove.py +0 -0
  182. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/service_shard_update.py +0 -0
  183. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_istio_mesh.py +0 -0
  184. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_kubernetes_cr.py +0 -0
  185. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_kubernetes_crd.py +0 -0
  186. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_kubernetes_internal_crd.py +0 -0
  187. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/shared_ip_check.py +0 -0
  188. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/synapse_srv_namespaces_fact.py +0 -0
  189. {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/timeouts_metrics_prom.py +0 -0
  190. {paasta_tools-1.27.0.dist-info → paasta_tools-1.35.8.dist-info}/entry_points.txt +0 -0
  191. {paasta_tools-1.27.0.dist-info → paasta_tools-1.35.8.dist-info/licenses}/LICENSE +0 -0
  192. {paasta_tools-1.27.0.dist-info → paasta_tools-1.35.8.dist-info}/top_level.txt +0 -0
@@ -123,12 +123,15 @@ DEPLOYMENT_INSTANCE_CONFIG: Sequence[Type[InstanceConfig]] = [
123
123
 
124
124
  InstanceStatusWriter = Callable[
125
125
  [
126
- Arg(str, "cluster"),
127
- Arg(str, "service"),
128
- Arg(str, "instance"),
129
- Arg(List[str], "output"),
126
+ Arg(
127
+ str,
128
+ "cluster", # noqa: F821 # flake8 false-positive, these are not var references
129
+ ),
130
+ Arg(str, "service"), # noqa: F821 # flake8 false-positive
131
+ Arg(str, "instance"), # noqa: F821 # flake8 false-positive
132
+ Arg(List[str], "output"), # noqa: F821 # flake8 false-positive
130
133
  Arg(Any),
131
- Arg(int, "verbose"),
134
+ Arg(int, "verbose"), # noqa: F821 # flake8 false-positive
132
135
  ],
133
136
  int,
134
137
  ]
@@ -200,7 +203,11 @@ def add_subparser(
200
203
 
201
204
  def add_instance_filter_arguments(status_parser, verb: str = "inspect") -> None:
202
205
  status_parser.add_argument(
203
- "-s", "--service", help=f"The name of the service you wish to {verb}"
206
+ "-s",
207
+ "--service",
208
+ help=f"The name of the service you wish to {verb}",
209
+ # strip any potential trailing / for folks tab-completing directories
210
+ type=lambda x: x.rstrip("/"),
204
211
  ).completer = lazy_choices_completer(list_services)
205
212
  status_parser.add_argument(
206
213
  "-c",
@@ -328,7 +335,7 @@ def paasta_status_on_api_endpoint(
328
335
  )
329
336
  return 1
330
337
  except Exception as e:
331
- output.append(PaastaColors.red(f"Exception when talking to the API:"))
338
+ output.append(PaastaColors.red("Exception when talking to the API:"))
332
339
  output.append(str(e))
333
340
  return 1
334
341
 
@@ -528,7 +535,7 @@ def get_smartstack_status_human(
528
535
 
529
536
  output = ["Smartstack:"]
530
537
  output.append(f" Haproxy Service Name: {registration}")
531
- output.append(f" Backends:")
538
+ output.append(" Backends:")
532
539
  for location in locations:
533
540
  backend_status = haproxy_backend_report(
534
541
  expected_backends_per_location, location.running_backends_count
@@ -586,7 +593,7 @@ def get_envoy_status_human(
586
593
 
587
594
  output = ["Envoy:"]
588
595
  output.append(f" Service Name: {registration}")
589
- output.append(f" Backends:")
596
+ output.append(" Backends:")
590
597
  for location in locations:
591
598
  backend_status = envoy_backend_report(
592
599
  expected_backends_per_location, location.running_backends_count
@@ -829,7 +836,7 @@ def _print_flink_status_from_job_manager(
829
836
  service=service, instance=instance, client=client
830
837
  )
831
838
  except Exception as e:
832
- output.append(PaastaColors.red(f"Exception when talking to the API:"))
839
+ output.append(PaastaColors.red("Exception when talking to the API:"))
833
840
  output.append(str(e))
834
841
  return 1
835
842
 
@@ -858,7 +865,7 @@ def _print_flink_status_from_job_manager(
858
865
  output.append(f"{OUTPUT_HORIZONTAL_RULE}")
859
866
 
860
867
  # Print Flink Log Commands
861
- output.append(f" Flink Log Commands:")
868
+ output.append(" Flink Log Commands:")
862
869
  output.append(
863
870
  f" Service: paasta logs -a 1h -c {cluster} -s {service} -i {instance}"
864
871
  )
@@ -875,7 +882,7 @@ def _print_flink_status_from_job_manager(
875
882
  output.append(f"{OUTPUT_HORIZONTAL_RULE}")
876
883
 
877
884
  # Print Flink Metrics Links
878
- output.append(f" Flink Monitoring:")
885
+ output.append(" Flink Monitoring:")
879
886
  output.append(
880
887
  f" Job Metrics: https://grafana.yelpcorp.com/d/flink-metrics/flink-job-metrics?orgId=1&var-datasource=Prometheus-flink&var-region=uswest2-{ecosystem}&var-service={service}&var-instance={instance}&var-job=All&from=now-24h&to=now"
881
888
  )
@@ -888,7 +895,7 @@ def _print_flink_status_from_job_manager(
888
895
 
889
896
  # Print Flink Costs Link
890
897
  output.append(
891
- f" Flink Cost: https://splunk.yelpcorp.com/en-US/app/yelp_computeinfra/paasta_service_utilization?form.service={service}&form.field1.earliest=-30d%40d&form.field1.latest=now&form.instance={instance}&form.cluster={cluster}"
898
+ f" Flink Cost: https://app.cloudzero.com/explorer?activeCostType=invoiced_amortized_cost&partitions=costcontext%3AResource%20Summary&dateRange=Last%2030%20Days&costcontext%3AKube%20Paasta%20Cluster={cluster}&costcontext%3APaasta%20Instance={instance}&costcontext%3APaasta%20Service={service}&showRightFlyout=filters"
892
899
  )
893
900
 
894
901
  output.append(f"{OUTPUT_HORIZONTAL_RULE}")
@@ -914,11 +921,13 @@ def _print_flink_status_from_job_manager(
914
921
  else f"{pod_evicted_count}"
915
922
  )
916
923
 
924
+ pods_total_count = pod_running_count + pod_evicted_count + pod_other_count
917
925
  output.append(
918
926
  " Pods:"
919
927
  f" {pod_running_count} running,"
920
928
  f" {evicted} evicted,"
921
- f" {pod_other_count} other"
929
+ f" {pod_other_count} other,"
930
+ f" {pods_total_count} total"
922
931
  )
923
932
 
924
933
  if not should_job_info_be_shown(status["state"]):
@@ -941,12 +950,19 @@ def _print_flink_status_from_job_manager(
941
950
  output.append(str(e))
942
951
  return 1
943
952
 
953
+ jobs_total_count = (
954
+ overview.jobs_running
955
+ + overview.jobs_finished
956
+ + overview.jobs_failed
957
+ + overview.jobs_cancelled
958
+ )
944
959
  output.append(
945
960
  " Jobs:"
946
961
  f" {overview.jobs_running} running,"
947
962
  f" {overview.jobs_finished} finished,"
948
963
  f" {overview.jobs_failed} failed,"
949
- f" {overview.jobs_cancelled} cancelled"
964
+ f" {overview.jobs_cancelled} cancelled,"
965
+ f" {jobs_total_count} total"
950
966
  )
951
967
  output.append(
952
968
  " "
@@ -1310,21 +1326,33 @@ def get_version_table_entry(
1310
1326
  for state in ReplicaState
1311
1327
  if state in replica_state_counts
1312
1328
  ]
1313
- entry.append(f" Replica States: {' / '.join(replica_state_display)}")
1329
+ entry.append(
1330
+ f" Replica States: {' / '.join(replica_state_display)} / {replica_state_counts.total()} total"
1331
+ )
1314
1332
  if not verbose:
1315
1333
  unhealthy_replicas = [
1316
1334
  (state, pod) for state, pod in replica_states if state.is_unhealthy()
1317
1335
  ]
1318
1336
  if unhealthy_replicas:
1319
- entry.append(f" Unhealthy Replicas:")
1337
+ entry.append(" Unhealthy Replicas:")
1320
1338
  replica_table = create_replica_table(
1321
- unhealthy_replicas, service, instance, cluster, verbose
1339
+ unhealthy_replicas,
1340
+ service,
1341
+ instance,
1342
+ cluster,
1343
+ version.container_port,
1344
+ verbose,
1322
1345
  )
1323
1346
  for line in replica_table:
1324
1347
  entry.append(f" {line}")
1325
1348
  else:
1326
1349
  replica_table = create_replica_table(
1327
- replica_states, service, instance, cluster, verbose
1350
+ replica_states,
1351
+ service,
1352
+ instance,
1353
+ cluster,
1354
+ version.container_port,
1355
+ verbose,
1328
1356
  )
1329
1357
  for line in replica_table:
1330
1358
  entry.append(f" {line}")
@@ -1464,6 +1492,7 @@ def create_replica_table(
1464
1492
  service: str,
1465
1493
  instance: str,
1466
1494
  cluster: str,
1495
+ container_port: int,
1467
1496
  verbose: int = 0,
1468
1497
  ) -> List[str]:
1469
1498
  header = ["ID", "IP/Port", "Host deployed to", "Started at what localtime", "State"]
@@ -1471,9 +1500,10 @@ def create_replica_table(
1471
1500
  for state, pod in pods:
1472
1501
  start_datetime = datetime.fromtimestamp(pod.create_timestamp)
1473
1502
  humanized_start_time = humanize.naturaltime(start_datetime)
1503
+
1474
1504
  row = [
1475
1505
  pod.name,
1476
- f"{pod.ip}:8888" if pod.ip else "None",
1506
+ f"{pod.ip}:{container_port}" if pod.ip else "None",
1477
1507
  pod.host or "None",
1478
1508
  humanized_start_time,
1479
1509
  state.formatted_message,
@@ -1523,7 +1553,7 @@ def create_replica_table(
1523
1553
  f" OOM Killed {human_oom_kill_timestamp} ({oom_kill_timestamp})."
1524
1554
  ),
1525
1555
  PaastaColors.red(
1526
- f" Check y/check-oom-events and consider increasing memory in yelpsoa_configs"
1556
+ " Check y/check-oom-events and consider increasing memory in yelpsoa_configs"
1527
1557
  ),
1528
1558
  ]
1529
1559
  )
@@ -1587,7 +1617,7 @@ def create_replica_table(
1587
1617
  elif state == ReplicaState.UNKNOWN:
1588
1618
  table.append(
1589
1619
  PaastaColors.red(
1590
- f" Cannot determine pod state, please try again. If you continue to see this state, please contact #paasta"
1620
+ " Cannot determine pod state, please try again. If you continue to see this state, please contact #paasta"
1591
1621
  )
1592
1622
  )
1593
1623
  return format_table(table)
@@ -1607,7 +1637,7 @@ def get_autoscaling_table(
1607
1637
  table.append(f" Last scale time: {autoscaling_status['last_scale_time']}")
1608
1638
  NA = PaastaColors.red("N/A")
1609
1639
  if len(autoscaling_status["metrics"]) > 0:
1610
- table.append(f" Metrics:")
1640
+ table.append(" Metrics:")
1611
1641
 
1612
1642
  metrics_table: List[List[str]] = [["Metric", "Current", "Target"]]
1613
1643
  for metric in autoscaling_status["metrics"]:
@@ -1695,10 +1725,10 @@ def print_kubernetes_status(
1695
1725
  output.append(
1696
1726
  f" Last scale time: {autoscaling_status['last_scale_time']}"
1697
1727
  )
1698
- output.append(f" Dashboard: y/was-it-the-autoscaler")
1728
+ output.append(" Dashboard: y/was-it-the-autoscaler")
1699
1729
  NA = PaastaColors.red("N/A")
1700
1730
  if len(autoscaling_status["metrics"]) > 0:
1701
- output.append(f" Metrics:")
1731
+ output.append(" Metrics:")
1702
1732
 
1703
1733
  metrics_table: List[List[str]] = [["Metric", "Current", "Target"]]
1704
1734
  for metric in autoscaling_status["metrics"]:
@@ -2201,15 +2231,15 @@ def apply_args_filters(
2201
2231
  if args.service or args.instances:
2202
2232
  print(
2203
2233
  PaastaColors.red(
2204
- f"Invalid command. Do not include optional arguments -s or -i "
2205
- f"when using shorthand notation."
2234
+ "Invalid command. Do not include optional arguments -s or -i "
2235
+ "when using shorthand notation."
2206
2236
  )
2207
2237
  )
2208
2238
  return clusters_services_instances
2209
2239
  if "." in args.service_instance:
2210
2240
  args.service, args.instances = args.service_instance.split(".", 1)
2211
2241
  else:
2212
- print(PaastaColors.red(f'Use a "." to separate service and instance name'))
2242
+ print(PaastaColors.red('Use a "." to separate service and instance name'))
2213
2243
  return clusters_services_instances
2214
2244
  if args.service:
2215
2245
  try:
@@ -2221,7 +2251,7 @@ def apply_args_filters(
2221
2251
  args.service, all_services, n=5, cutoff=0.5
2222
2252
  )
2223
2253
  if suggestions:
2224
- print(PaastaColors.red(f"Did you mean any of these?"))
2254
+ print(PaastaColors.red("Did you mean any of these?"))
2225
2255
  for suggestion in suggestions:
2226
2256
  print(PaastaColors.red(f" {suggestion}"))
2227
2257
  return clusters_services_instances