(
&self,
request: Request<GetClusterInferenceRequest>,
)
| 115 | |
| 116 | #[rpc_auth(auth = "bearer", scope = "inference:read", role = "user")] |
| 117 | async fn get_cluster_inference( |
| 118 | &self, |
| 119 | request: Request<GetClusterInferenceRequest>, |
| 120 | ) -> Result<Response<GetClusterInferenceResponse>, Status> { |
| 121 | let req = request.into_inner(); |
| 122 | let route_name = effective_route_name(&req.route_name)?; |
| 123 | let route = self |
| 124 | .state |
| 125 | .store |
| 126 | .get_message_by_name::<InferenceRoute>(route_name) |
| 127 | .await |
| 128 | .map_err(|e| Status::internal(format!("fetch route failed: {e}")))? |
| 129 | .ok_or_else(|| { |
| 130 | Status::not_found(format!( |
| 131 | "inference route '{route_name}' is not configured; run 'openshell inference set --provider <name> --model <id>'" |
| 132 | )) |
| 133 | })?; |
| 134 | |
| 135 | let config = route |
| 136 | .config |
| 137 | .as_ref() |
| 138 | .ok_or_else(|| Status::internal("managed route missing config"))?; |
| 139 | |
| 140 | if config.provider_name.trim().is_empty() || config.model_id.trim().is_empty() { |
| 141 | return Err(Status::failed_precondition( |
| 142 | "managed route is missing provider/model metadata", |
| 143 | )); |
| 144 | } |
| 145 | |
| 146 | Ok(Response::new(GetClusterInferenceResponse { |
| 147 | provider_name: config.provider_name.clone(), |
| 148 | model_id: config.model_id.clone(), |
| 149 | version: route.version, |
| 150 | route_name: route_name.to_string(), |
| 151 | timeout_secs: config.timeout_secs, |
| 152 | })) |
| 153 | } |
| 154 | } |
| 155 | |
| 156 | async fn upsert_cluster_inference_route( |
no test coverage detected