Skip to content

Commit 8c9ae26

Browse files
committed
feat(types): Added LimitsConfig field to ComponentProperties for granular per-component resource control
Signed-off-by: Aditya <[email protected]>
1 parent c065b3e commit 8c9ae26

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

crates/wadm-types/src/bindings.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ impl From<ComponentProperties> for wadm::types::ComponentProperties {
113113
id: properties.id,
114114
config: properties.config.into_iter().map(|c| c.into()).collect(),
115115
secrets: properties.secrets.into_iter().map(|c| c.into()).collect(),
116+
limits: properties.limits.map(Into::into),
116117
}
117118
}
118119
}
@@ -431,6 +432,7 @@ impl From<wadm::types::ComponentProperties> for ComponentProperties {
431432
id: properties.id,
432433
config: properties.config.into_iter().map(|c| c.into()).collect(),
433434
secrets: properties.secrets.into_iter().map(|c| c.into()).collect(),
435+
limits: properties.limits.map(Into::into),
434436
}
435437
}
436438
}

crates/wadm-types/src/lib.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,9 @@ pub struct ComponentProperties {
298298
/// these values at runtime using `wasmcloud:secrets/store`.
299299
#[serde(default, skip_serializing_if = "Vec::is_empty")]
300300
pub secrets: Vec<SecretProperty>,
301+
/// This Config holds the componet's metadata properties like memory limits and execution time limits
302+
#[serde(skip_serializing_if = "Option::is_none")]
303+
pub limits: Option<LimitsConfig>,
301304
}
302305

303306
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Default, ToSchema, JsonSchema)]
@@ -333,6 +336,14 @@ pub struct SecretSourceProperty {
333336
pub version: Option<String>,
334337
}
335338

339+
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash, ToSchema, JsonSchema)]
340+
pub struct LimitsConfig {
341+
#[serde(skip_serializing_if = "Option::is_none")]
342+
pub max_linear_memory: Option<u64>,
343+
#[serde(skip_serializing_if = "Option::is_none")]
344+
pub max_execution_time: Option<u64>,
345+
}
346+
336347
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, ToSchema, JsonSchema)]
337348
#[serde(deny_unknown_fields)]
338349
pub struct CapabilityProperties {
@@ -845,6 +856,7 @@ mod test {
845856
id: None,
846857
config: vec![],
847858
secrets: vec![],
859+
limits: None,
848860
},
849861
},
850862
traits: Some(trait_vec),

0 commit comments

Comments
 (0)