parent
a734c3c74b
commit
5bfe885140
4 changed files with 22 additions and 22 deletions
|
|
@ -77,17 +77,17 @@ pub async fn submit_build_request(
|
|||
|
||||
#[derive(Deserialize, JsonSchema)]
|
||||
pub struct BuildStatusRequest {
|
||||
pub id: String,
|
||||
pub build_request_id: String,
|
||||
}
|
||||
|
||||
pub async fn get_build_status(
|
||||
State(service): State<ServiceState>,
|
||||
Path(request): Path<BuildStatusRequest>,
|
||||
Path(BuildStatusRequest { build_request_id }): Path<BuildStatusRequest>,
|
||||
) -> Result<Json<BuildStatusResponse>, (StatusCode, Json<ErrorResponse>)> {
|
||||
// Get build request state
|
||||
let build_state = {
|
||||
let active_builds = service.active_builds.read().await;
|
||||
active_builds.get(&request.id).cloned()
|
||||
active_builds.get(&build_request_id).cloned()
|
||||
};
|
||||
|
||||
let build_state = match build_state {
|
||||
|
|
@ -103,7 +103,7 @@ pub async fn get_build_status(
|
|||
};
|
||||
|
||||
// Get events for this build request
|
||||
let events = match service.event_log.get_build_request_events(&request.id, None).await {
|
||||
let events = match service.event_log.get_build_request_events(&build_request_id, None).await {
|
||||
Ok(events) => events.into_iter().map(|e| BuildEventSummary {
|
||||
event_id: e.event_id,
|
||||
timestamp: e.timestamp,
|
||||
|
|
@ -117,7 +117,7 @@ pub async fn get_build_status(
|
|||
};
|
||||
|
||||
Ok(Json(BuildStatusResponse {
|
||||
build_request_id: request.id,
|
||||
build_request_id,
|
||||
status: BuildGraphService::status_to_string(build_state.status),
|
||||
requested_partitions: build_state.requested_partitions,
|
||||
created_at: build_state.created_at,
|
||||
|
|
@ -128,17 +128,17 @@ pub async fn get_build_status(
|
|||
|
||||
#[derive(Deserialize, JsonSchema)]
|
||||
pub struct CancelBuildRequest {
|
||||
pub id: String,
|
||||
pub build_request_id: String,
|
||||
}
|
||||
|
||||
pub async fn cancel_build_request(
|
||||
State(service): State<ServiceState>,
|
||||
Path(request): Path<CancelBuildRequest>,
|
||||
Path(CancelBuildRequest { build_request_id }): Path<CancelBuildRequest>,
|
||||
) -> Result<Json<serde_json::Value>, (StatusCode, Json<ErrorResponse>)> {
|
||||
// Update build request state
|
||||
{
|
||||
let mut active_builds = service.active_builds.write().await;
|
||||
if let Some(build_state) = active_builds.get_mut(&request.id) {
|
||||
if let Some(build_state) = active_builds.get_mut(&build_request_id) {
|
||||
build_state.status = BuildRequestStatus::BuildRequestCancelled;
|
||||
build_state.updated_at = current_timestamp_nanos();
|
||||
} else {
|
||||
|
|
@ -153,7 +153,7 @@ pub async fn cancel_build_request(
|
|||
|
||||
// Log cancellation event
|
||||
let event = create_build_event(
|
||||
request.id.clone(),
|
||||
build_request_id.clone(),
|
||||
crate::build_event::EventType::BuildRequestEvent(BuildRequestEvent {
|
||||
status: BuildRequestStatus::BuildRequestCancelled as i32,
|
||||
requested_partitions: vec![],
|
||||
|
|
@ -165,11 +165,11 @@ pub async fn cancel_build_request(
|
|||
error!("Failed to log build request cancelled event: {}", e);
|
||||
}
|
||||
|
||||
info!("Build request {} cancelled", request.id);
|
||||
info!("Build request {} cancelled", build_request_id);
|
||||
|
||||
Ok(Json(serde_json::json!({
|
||||
"cancelled": true,
|
||||
"build_request_id": request.id
|
||||
"build_request_id": build_request_id
|
||||
})))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ use crate::*;
|
|||
use crate::event_log::{BuildEventLog, BuildEventLogError, create_build_event_log};
|
||||
use aide::{
|
||||
axum::{
|
||||
routing::{get, get_with, post, delete},
|
||||
routing::{get, post, delete},
|
||||
ApiRouter,
|
||||
},
|
||||
openapi::OpenApi,
|
||||
|
|
@ -119,10 +119,10 @@ impl BuildGraphService {
|
|||
// Create API router with all routes to generate OpenAPI spec
|
||||
let _ = ApiRouter::new()
|
||||
.api_route("/api/v1/builds", post(handlers::submit_build_request))
|
||||
.api_route("/api/v1/builds/{id}", get(handlers::get_build_status))
|
||||
.api_route("/api/v1/builds/{id}", delete(handlers::cancel_build_request))
|
||||
.api_route("/api/v1/partitions/{ref}/status", get(handlers::get_partition_status))
|
||||
.api_route("/api/v1/partitions/{ref}/events", get(handlers::get_partition_events))
|
||||
.api_route("/api/v1/builds/:build_request_id", get(handlers::get_build_status))
|
||||
.api_route("/api/v1/builds/:build_request_id", delete(handlers::cancel_build_request))
|
||||
.api_route("/api/v1/partitions/:ref/status", get(handlers::get_partition_status))
|
||||
.api_route("/api/v1/partitions/:ref/events", get(handlers::get_partition_events))
|
||||
.api_route("/api/v1/analyze", post(handlers::analyze_build_graph))
|
||||
.finish_api(&mut api);
|
||||
|
||||
|
|
@ -134,10 +134,10 @@ impl BuildGraphService {
|
|||
|
||||
let router = ApiRouter::new()
|
||||
.api_route("/api/v1/builds", post(handlers::submit_build_request))
|
||||
.api_route("/api/v1/builds/{id}", get(handlers::get_build_status))
|
||||
.api_route("/api/v1/builds/{id}", delete(handlers::cancel_build_request))
|
||||
.api_route("/api/v1/partitions/{ref}/status", get(handlers::get_partition_status))
|
||||
.api_route("/api/v1/partitions/{ref}/events", get(handlers::get_partition_events))
|
||||
.api_route("/api/v1/builds/:build_request_id", get(handlers::get_build_status))
|
||||
.api_route("/api/v1/builds/:build_request_id", delete(handlers::cancel_build_request))
|
||||
.api_route("/api/v1/partitions/:ref/status", get(handlers::get_partition_status))
|
||||
.api_route("/api/v1/partitions/:ref/events", get(handlers::get_partition_events))
|
||||
.api_route("/api/v1/analyze", post(handlers::analyze_build_graph))
|
||||
.route("/api/v1/openapi.json", get(Self::openapi_spec))
|
||||
.with_state(Arc::new(self))
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ for i in {1..60}; do
|
|||
;;
|
||||
*)
|
||||
echo "[WARN] Unknown status: $STATUS"
|
||||
sleep 2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ for i in {1..30}; do
|
|||
;;
|
||||
*)
|
||||
echo "[WARN] Unknown status: $STATUS"
|
||||
sleep 2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue