33from typing import Dict
44import click
55from tabulate import tabulate
6- from centml .sdk import DeploymentType , DeploymentStatus , ServiceStatus , ApiException , HardwareInstanceResponse
6+ from centml .sdk import (
7+ DeploymentType ,
8+ DeploymentStatus ,
9+ ServiceStatus ,
10+ RolloutStatus ,
11+ ApiException ,
12+ HardwareInstanceResponse ,
13+ )
714from centml .sdk .api import get_centml_client
815
916# convert deployment type enum to a user friendly name
2734 "compute" : DeploymentType .COMPUTE_V2 ,
2835 "rag" : DeploymentType .RAG ,
2936}
37+ rollout_status_to_service_status_map = {
38+ RolloutStatus .HEALTHY : ServiceStatus .HEALTHY ,
39+ RolloutStatus .MISSING : ServiceStatus .MISSING ,
40+ RolloutStatus .PROGRESSING : ServiceStatus .INITIALIZING ,
41+ RolloutStatus .DEGRADED : ServiceStatus .ERROR ,
42+ }
3043
3144
3245def handle_exception (func ):
@@ -82,8 +95,11 @@ def _get_ready_status(deployment, service_status):
8295 (DeploymentStatus .PAUSED , None ): ("paused" , "yellow" , "black" ),
8396 (DeploymentStatus .DELETED , None ): ("deleted" , "white" , "black" ),
8497 (DeploymentStatus .ACTIVE , ServiceStatus .HEALTHY ): ("ready" , "green" , "black" ),
98+ (DeploymentStatus .ACTIVE , ServiceStatus .SCALINGUP ): ("starting" , "black" , "white" ),
99+ (DeploymentStatus .ACTIVE , ServiceStatus .PULLING ): ("starting" , "black" , "white" ),
85100 (DeploymentStatus .ACTIVE , ServiceStatus .INITIALIZING ): ("starting" , "black" , "white" ),
86101 (DeploymentStatus .ACTIVE , ServiceStatus .MISSING ): ("starting" , "black" , "white" ),
102+ (DeploymentStatus .ACTIVE , ServiceStatus .NOTREADY ): ("starting" , "black" , "white" ),
87103 (DeploymentStatus .ACTIVE , ServiceStatus .ERROR ): ("error" , "red" , "black" ),
88104 (DeploymentStatus .ACTIVE , ServiceStatus .CREATECONTAINERCONFIGERROR ): (
89105 "createContainerConfigError" ,
@@ -100,6 +116,32 @@ def _get_ready_status(deployment, service_status):
100116 return click .style (style [0 ], fg = style [1 ], bg = style [2 ])
101117
102118
119+ def _get_service_status (status_response , revision_number ):
120+ if status_response is None :
121+ return None
122+
123+ service_status = getattr (status_response , "service_status" , None )
124+ if service_status is not None :
125+ return service_status
126+
127+ revision_pod_details_list = getattr (status_response , "revision_pod_details_list" , None ) or []
128+ current_revision = next (
129+ (
130+ revision
131+ for revision in revision_pod_details_list
132+ if getattr (revision , "revision_number" , None ) == revision_number
133+ ),
134+ (
135+ revision_pod_details_list [0 ]
136+ if revision_pod_details_list and getattr (revision_pod_details_list [0 ], "revision_number" ) is None
137+ else None
138+ ),
139+ )
140+ revision_status = getattr (current_revision , "revision_status" , None )
141+
142+ return revision_status or rollout_status_to_service_status_map .get (getattr (status_response , "rollout_status" , None ))
143+
144+
103145def _append_status_error_message (messages , seen_messages , label , error_message ):
104146 if not error_message or error_message in seen_messages :
105147 return
@@ -177,7 +219,8 @@ def get(type, id):
177219 sys .exit ("Please enter correct deployment type" )
178220
179221 deployment_status = cclient .get_status (deployment .id ) if deployment .status == DeploymentStatus .ACTIVE else None
180- service_status = deployment_status .service_status if deployment_status is not None else None
222+ revision_number = getattr (deployment , "revision_number" , None )
223+ service_status = _get_service_status (deployment_status , revision_number )
181224 ready_status = _get_ready_status (deployment , service_status )
182225 status_error_messages = _get_status_error_messages (deployment_status )
183226 _ , id_to_hw_map = _get_hw_to_id_map (cclient , deployment .cluster_id )
0 commit comments