fc-common: add GC pinning and machine health infrastructure
Migration 017 adds `builds.keep`, `jobsets.keep_nr`, and health tracking columns to `remote_builders`. Repo layer implements `set_keep`, `list_pinned_ids`, `record_failure` with exponential backoff, `record_success`, and `find_for_system` filtering of disabled builders. GC root cleanup now skips pinned builds. Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Ibba121de3dc42f71204e3a8f5776aa8b6a6a6964
This commit is contained in:
parent
25699e5e97
commit
5b472a2f57
16 changed files with 173 additions and 23 deletions
|
|
@ -30,6 +30,7 @@ pub struct Jobset {
|
|||
pub updated_at: DateTime<Utc>,
|
||||
pub state: JobsetState,
|
||||
pub last_checked_at: Option<DateTime<Utc>>,
|
||||
pub keep_nr: i32,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
|
||||
|
|
@ -119,6 +120,7 @@ pub struct Build {
|
|||
pub constituents: Option<serde_json::Value>,
|
||||
pub builder_id: Option<Uuid>,
|
||||
pub signed: bool,
|
||||
pub keep: bool,
|
||||
}
|
||||
|
||||
#[derive(
|
||||
|
|
@ -334,6 +336,7 @@ pub struct ActiveJobset {
|
|||
pub updated_at: DateTime<Utc>,
|
||||
pub state: JobsetState,
|
||||
pub last_checked_at: Option<DateTime<Utc>>,
|
||||
pub keep_nr: i32,
|
||||
pub project_name: String,
|
||||
pub repository_url: String,
|
||||
}
|
||||
|
|
@ -410,18 +413,21 @@ pub struct Channel {
|
|||
/// Remote builder for multi-machine / multi-arch builds.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
|
||||
pub struct RemoteBuilder {
|
||||
pub id: Uuid,
|
||||
pub name: String,
|
||||
pub ssh_uri: String,
|
||||
pub systems: Vec<String>,
|
||||
pub max_jobs: i32,
|
||||
pub speed_factor: i32,
|
||||
pub supported_features: Vec<String>,
|
||||
pub mandatory_features: Vec<String>,
|
||||
pub enabled: bool,
|
||||
pub public_host_key: Option<String>,
|
||||
pub ssh_key_file: Option<String>,
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub id: Uuid,
|
||||
pub name: String,
|
||||
pub ssh_uri: String,
|
||||
pub systems: Vec<String>,
|
||||
pub max_jobs: i32,
|
||||
pub speed_factor: i32,
|
||||
pub supported_features: Vec<String>,
|
||||
pub mandatory_features: Vec<String>,
|
||||
pub enabled: bool,
|
||||
pub public_host_key: Option<String>,
|
||||
pub ssh_key_file: Option<String>,
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub consecutive_failures: i32,
|
||||
pub disabled_until: Option<DateTime<Utc>>,
|
||||
pub last_failure: Option<DateTime<Utc>>,
|
||||
}
|
||||
|
||||
/// User account for authentication and personalization
|
||||
|
|
@ -546,6 +552,7 @@ pub struct CreateJobset {
|
|||
pub branch: Option<String>,
|
||||
pub scheduling_shares: Option<i32>,
|
||||
pub state: Option<JobsetState>,
|
||||
pub keep_nr: Option<i32>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
|
|
@ -558,6 +565,7 @@ pub struct UpdateJobset {
|
|||
pub branch: Option<String>,
|
||||
pub scheduling_shares: Option<i32>,
|
||||
pub state: Option<JobsetState>,
|
||||
pub keep_nr: Option<i32>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue