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.
- paasta_tools/__init__.py +1 -1
- paasta_tools/api/api_docs/swagger.json +9 -1
- paasta_tools/api/tweens/auth.py +2 -1
- paasta_tools/api/views/instance.py +9 -2
- paasta_tools/api/views/remote_run.py +2 -0
- paasta_tools/async_utils.py +4 -1
- paasta_tools/bounce_lib.py +8 -5
- paasta_tools/check_services_replication_tools.py +10 -4
- paasta_tools/check_spark_jobs.py +1 -1
- paasta_tools/cli/cli.py +4 -4
- paasta_tools/cli/cmds/autoscale.py +2 -0
- paasta_tools/cli/cmds/check.py +2 -0
- paasta_tools/cli/cmds/cook_image.py +2 -0
- paasta_tools/cli/cmds/get_docker_image.py +2 -0
- paasta_tools/cli/cmds/get_image_version.py +2 -0
- paasta_tools/cli/cmds/get_latest_deployment.py +2 -0
- paasta_tools/cli/cmds/info.py +10 -3
- paasta_tools/cli/cmds/itest.py +2 -0
- paasta_tools/cli/cmds/list_namespaces.py +2 -0
- paasta_tools/cli/cmds/local_run.py +122 -27
- paasta_tools/cli/cmds/logs.py +31 -7
- paasta_tools/cli/cmds/mark_for_deployment.py +14 -4
- paasta_tools/cli/cmds/mesh_status.py +3 -2
- paasta_tools/cli/cmds/push_to_registry.py +2 -0
- paasta_tools/cli/cmds/remote_run.py +156 -12
- paasta_tools/cli/cmds/rollback.py +6 -2
- paasta_tools/cli/cmds/secret.py +4 -2
- paasta_tools/cli/cmds/security_check.py +2 -0
- paasta_tools/cli/cmds/spark_run.py +7 -3
- paasta_tools/cli/cmds/status.py +59 -29
- paasta_tools/cli/cmds/validate.py +325 -40
- paasta_tools/cli/cmds/wait_for_deployment.py +2 -0
- paasta_tools/cli/schemas/adhoc_schema.json +3 -0
- paasta_tools/cli/schemas/autoscaling_schema.json +3 -2
- paasta_tools/cli/schemas/eks_schema.json +24 -1
- paasta_tools/cli/schemas/kubernetes_schema.json +1 -0
- paasta_tools/cli/schemas/smartstack_schema.json +14 -0
- paasta_tools/cli/utils.py +34 -20
- paasta_tools/contrib/bounce_log_latency_parser.py +1 -1
- paasta_tools/contrib/check_orphans.py +1 -1
- paasta_tools/contrib/get_running_task_allocation.py +1 -1
- paasta_tools/contrib/ide_helper.py +14 -14
- paasta_tools/contrib/mock_patch_checker.py +1 -1
- paasta_tools/contrib/paasta_update_soa_memcpu.py +10 -14
- paasta_tools/contrib/render_template.py +1 -1
- paasta_tools/contrib/shared_ip_check.py +1 -1
- paasta_tools/generate_deployments_for_service.py +2 -0
- paasta_tools/instance/hpa_metrics_parser.py +3 -5
- paasta_tools/instance/kubernetes.py +70 -36
- paasta_tools/kubernetes/application/controller_wrappers.py +23 -2
- paasta_tools/kubernetes/remote_run.py +52 -25
- paasta_tools/kubernetes_tools.py +60 -69
- paasta_tools/long_running_service_tools.py +15 -5
- paasta_tools/mesos/master.py +1 -1
- paasta_tools/metrics/metastatus_lib.py +1 -25
- paasta_tools/metrics/metrics_lib.py +12 -3
- paasta_tools/paastaapi/__init__.py +1 -1
- paasta_tools/paastaapi/api/autoscaler_api.py +1 -1
- paasta_tools/paastaapi/api/default_api.py +1 -1
- paasta_tools/paastaapi/api/remote_run_api.py +1 -1
- paasta_tools/paastaapi/api/resources_api.py +1 -1
- paasta_tools/paastaapi/api/service_api.py +1 -1
- paasta_tools/paastaapi/api_client.py +1 -1
- paasta_tools/paastaapi/configuration.py +2 -2
- paasta_tools/paastaapi/exceptions.py +1 -1
- paasta_tools/paastaapi/model/adhoc_launch_history.py +1 -1
- paasta_tools/paastaapi/model/autoscaler_count_msg.py +1 -1
- paasta_tools/paastaapi/model/autoscaling_override.py +1 -1
- paasta_tools/paastaapi/model/deploy_queue.py +1 -1
- paasta_tools/paastaapi/model/deploy_queue_service_instance.py +1 -1
- paasta_tools/paastaapi/model/envoy_backend.py +1 -1
- paasta_tools/paastaapi/model/envoy_location.py +1 -1
- paasta_tools/paastaapi/model/envoy_status.py +1 -1
- paasta_tools/paastaapi/model/flink_cluster_overview.py +1 -1
- paasta_tools/paastaapi/model/flink_config.py +1 -1
- paasta_tools/paastaapi/model/flink_job.py +1 -1
- paasta_tools/paastaapi/model/flink_job_details.py +1 -1
- paasta_tools/paastaapi/model/flink_jobs.py +1 -1
- paasta_tools/paastaapi/model/float_and_error.py +1 -1
- paasta_tools/paastaapi/model/hpa_metric.py +1 -1
- paasta_tools/paastaapi/model/inline_object.py +1 -1
- paasta_tools/paastaapi/model/inline_response200.py +1 -1
- paasta_tools/paastaapi/model/inline_response2001.py +1 -1
- paasta_tools/paastaapi/model/inline_response202.py +1 -1
- paasta_tools/paastaapi/model/inline_response403.py +1 -1
- paasta_tools/paastaapi/model/instance_bounce_status.py +1 -1
- paasta_tools/paastaapi/model/instance_mesh_status.py +1 -1
- paasta_tools/paastaapi/model/instance_status.py +1 -1
- paasta_tools/paastaapi/model/instance_status_adhoc.py +1 -1
- paasta_tools/paastaapi/model/instance_status_cassandracluster.py +1 -1
- paasta_tools/paastaapi/model/instance_status_flink.py +1 -1
- paasta_tools/paastaapi/model/instance_status_kafkacluster.py +1 -1
- paasta_tools/paastaapi/model/instance_status_kubernetes.py +1 -1
- paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +1 -1
- paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +1 -1
- paasta_tools/paastaapi/model/instance_status_tron.py +1 -1
- paasta_tools/paastaapi/model/instance_tasks.py +1 -1
- paasta_tools/paastaapi/model/integer_and_error.py +1 -1
- paasta_tools/paastaapi/model/kubernetes_container.py +1 -1
- paasta_tools/paastaapi/model/kubernetes_container_v2.py +1 -1
- paasta_tools/paastaapi/model/kubernetes_healthcheck.py +1 -1
- paasta_tools/paastaapi/model/kubernetes_pod.py +1 -1
- paasta_tools/paastaapi/model/kubernetes_pod_event.py +1 -1
- paasta_tools/paastaapi/model/kubernetes_pod_v2.py +1 -1
- paasta_tools/paastaapi/model/kubernetes_replica_set.py +1 -1
- paasta_tools/paastaapi/model/kubernetes_version.py +4 -1
- paasta_tools/paastaapi/model/remote_run_outcome.py +1 -1
- paasta_tools/paastaapi/model/remote_run_start.py +4 -1
- paasta_tools/paastaapi/model/remote_run_stop.py +1 -1
- paasta_tools/paastaapi/model/remote_run_token.py +1 -1
- paasta_tools/paastaapi/model/resource.py +1 -1
- paasta_tools/paastaapi/model/resource_item.py +1 -1
- paasta_tools/paastaapi/model/resource_value.py +1 -1
- paasta_tools/paastaapi/model/smartstack_backend.py +1 -1
- paasta_tools/paastaapi/model/smartstack_location.py +1 -1
- paasta_tools/paastaapi/model/smartstack_status.py +1 -1
- paasta_tools/paastaapi/model/task_tail_lines.py +1 -1
- paasta_tools/paastaapi/model_utils.py +1 -1
- paasta_tools/paastaapi/rest.py +1 -1
- paasta_tools/remote_git.py +2 -2
- paasta_tools/run-paasta-api-in-dev-mode.py +2 -2
- paasta_tools/run-paasta-api-playground.py +2 -2
- paasta_tools/setup_kubernetes_job.py +43 -1
- paasta_tools/setup_prometheus_adapter_config.py +82 -0
- paasta_tools/setup_tron_namespace.py +2 -2
- paasta_tools/tron_tools.py +4 -1
- paasta_tools/utils.py +29 -11
- paasta_tools/yaml_tools.py +1 -1
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_orphans.py +1 -1
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_spark_jobs.py +1 -1
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/generate_deployments_for_service.py +2 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/get_running_task_allocation.py +1 -1
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/ide_helper.py +14 -14
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_update_soa_memcpu.py +10 -14
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_kubernetes_job.py +43 -1
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_prometheus_adapter_config.py +82 -0
- paasta_tools-1.35.8.dist-info/METADATA +79 -0
- {paasta_tools-1.27.0.dist-info → paasta_tools-1.35.8.dist-info}/RECORD +186 -191
- {paasta_tools-1.27.0.dist-info → paasta_tools-1.35.8.dist-info}/WHEEL +1 -1
- paasta_tools/frameworks/adhoc_scheduler.py +0 -71
- paasta_tools/frameworks/native_scheduler.py +0 -652
- paasta_tools/frameworks/task_store.py +0 -245
- paasta_tools/mesos_maintenance.py +0 -848
- paasta_tools/paasta_native_serviceinit.py +0 -21
- paasta_tools-1.27.0.dist-info/METADATA +0 -75
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/apply_external_resources.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/bounce_log_latency_parser.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_autoscaler_max_instances.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_cassandracluster_services_replication.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_flink_services_health.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_kubernetes_api.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_kubernetes_services_replication.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_manual_oapi_changes.sh +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/check_oom_events.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/cleanup_kubernetes_cr.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/cleanup_kubernetes_crd.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/cleanup_kubernetes_jobs.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/create_dynamodb_table.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/create_paasta_playground.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/delete_kubernetes_deployments.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/emit_allocated_cpu_metrics.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/generate_all_deployments +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/generate_authenticating_services.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/generate_services_file.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/generate_services_yaml.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/habitat_fixer.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/is_pod_healthy_in_proxy.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/is_pod_healthy_in_smartstack.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/kill_bad_containers.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/kubernetes_remove_evicted_pods.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/mass-deploy-tag.sh +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/mock_patch_checker.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_cleanup_remote_run_resources.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_cleanup_stale_nodes.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_deploy_tron_jobs +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_execute_docker_command.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_secrets_sync.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/paasta_tabcomplete.sh +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/render_template.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/rightsizer_soaconfigs_update.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/service_shard_remove.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/service_shard_update.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_istio_mesh.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_kubernetes_cr.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_kubernetes_crd.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/setup_kubernetes_internal_crd.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/shared_ip_check.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/synapse_srv_namespaces_fact.py +0 -0
- {paasta_tools-1.27.0.data → paasta_tools-1.35.8.data}/scripts/timeouts_metrics_prom.py +0 -0
- {paasta_tools-1.27.0.dist-info → paasta_tools-1.35.8.dist-info}/entry_points.txt +0 -0
- {paasta_tools-1.27.0.dist-info → paasta_tools-1.35.8.dist-info/licenses}/LICENSE +0 -0
- {paasta_tools-1.27.0.dist-info → paasta_tools-1.35.8.dist-info}/top_level.txt +0 -0
paasta_tools/cli/cmds/status.py
CHANGED
|
@@ -123,12 +123,15 @@ DEPLOYMENT_INSTANCE_CONFIG: Sequence[Type[InstanceConfig]] = [
|
|
|
123
123
|
|
|
124
124
|
InstanceStatusWriter = Callable[
|
|
125
125
|
[
|
|
126
|
-
Arg(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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",
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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://
|
|
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(
|
|
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(
|
|
1337
|
+
entry.append(" Unhealthy Replicas:")
|
|
1320
1338
|
replica_table = create_replica_table(
|
|
1321
|
-
unhealthy_replicas,
|
|
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,
|
|
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}:
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
2205
|
-
|
|
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(
|
|
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(
|
|
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
|