fix: align pod feature flag naming
This commit is contained in:
parent
f0f6cc92d8
commit
2fd37afb9e
|
|
@ -33,7 +33,7 @@ return function(opts)
|
||||||
task = { enabled = true },
|
task = { enabled = true },
|
||||||
memory = { enabled = true },
|
memory = { enabled = true },
|
||||||
web = { enabled = true },
|
web = { enabled = true },
|
||||||
pod_management = { enabled = false },
|
pods = { enabled = false },
|
||||||
ticket = { enabled = false, access = "lifecycle" },
|
ticket = { enabled = false, access = "lifecycle" },
|
||||||
ticket_orchestration = { enabled = false },
|
ticket_orchestration = { enabled = false },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@ return base {
|
||||||
description = "Coder role profile: GPT-5.5 with bundled default behavior",
|
description = "Coder role profile: GPT-5.5 with bundled default behavior",
|
||||||
model_ref = "codex-oauth/gpt-5.5",
|
model_ref = "codex-oauth/gpt-5.5",
|
||||||
feature = {
|
feature = {
|
||||||
task = { enabled = true },
|
task = { enabled = false },
|
||||||
memory = { enabled = true },
|
memory = { enabled = true },
|
||||||
web = { enabled = true },
|
web = { enabled = true },
|
||||||
pod_management = { enabled = false },
|
pods = { enabled = false },
|
||||||
ticket = { enabled = false, access = "lifecycle" },
|
ticket = { enabled = false, access = "lifecycle" },
|
||||||
ticket_orchestration = { enabled = false },
|
ticket_orchestration = { enabled = false },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ return base {
|
||||||
task = { enabled = true },
|
task = { enabled = true },
|
||||||
memory = { enabled = true },
|
memory = { enabled = true },
|
||||||
web = { enabled = true },
|
web = { enabled = true },
|
||||||
pod_management = { enabled = false },
|
pods = { enabled = false },
|
||||||
ticket = { enabled = false, access = "lifecycle" },
|
ticket = { enabled = false, access = "lifecycle" },
|
||||||
ticket_orchestration = { enabled = false },
|
ticket_orchestration = { enabled = false },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ return base {
|
||||||
task = { enabled = true },
|
task = { enabled = true },
|
||||||
memory = { enabled = true },
|
memory = { enabled = true },
|
||||||
web = { enabled = true },
|
web = { enabled = true },
|
||||||
pod_management = { enabled = false },
|
pods = { enabled = false },
|
||||||
ticket = { enabled = true, access = "lifecycle" },
|
ticket = { enabled = true, access = "lifecycle" },
|
||||||
ticket_orchestration = { enabled = false },
|
ticket_orchestration = { enabled = false },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ return base {
|
||||||
task = { enabled = true },
|
task = { enabled = true },
|
||||||
memory = { enabled = true },
|
memory = { enabled = true },
|
||||||
web = { enabled = true },
|
web = { enabled = true },
|
||||||
pod_management = { enabled = true },
|
pods = { enabled = true },
|
||||||
ticket = { enabled = true, access = "lifecycle" },
|
ticket = { enabled = true, access = "lifecycle" },
|
||||||
ticket_orchestration = { enabled = true },
|
ticket_orchestration = { enabled = true },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ return base {
|
||||||
task = { enabled = true },
|
task = { enabled = true },
|
||||||
memory = { enabled = true },
|
memory = { enabled = true },
|
||||||
web = { enabled = true },
|
web = { enabled = true },
|
||||||
pod_management = { enabled = false },
|
pods = { enabled = false },
|
||||||
ticket = { enabled = false, access = "lifecycle" },
|
ticket = { enabled = false, access = "lifecycle" },
|
||||||
ticket_orchestration = { enabled = false },
|
ticket_orchestration = { enabled = false },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ pub struct FeatureConfigPartial {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub web: Option<FeatureFlagConfigPartial>,
|
pub web: Option<FeatureFlagConfigPartial>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub pod_management: Option<FeatureFlagConfigPartial>,
|
pub pods: Option<FeatureFlagConfigPartial>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub ticket: Option<TicketFeatureConfigPartial>,
|
pub ticket: Option<TicketFeatureConfigPartial>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
|
@ -87,11 +87,7 @@ impl FeatureConfigPartial {
|
||||||
task: merge_option(self.task, other.task, FeatureFlagConfigPartial::merge),
|
task: merge_option(self.task, other.task, FeatureFlagConfigPartial::merge),
|
||||||
memory: merge_option(self.memory, other.memory, FeatureFlagConfigPartial::merge),
|
memory: merge_option(self.memory, other.memory, FeatureFlagConfigPartial::merge),
|
||||||
web: merge_option(self.web, other.web, FeatureFlagConfigPartial::merge),
|
web: merge_option(self.web, other.web, FeatureFlagConfigPartial::merge),
|
||||||
pod_management: merge_option(
|
pods: merge_option(self.pods, other.pods, FeatureFlagConfigPartial::merge),
|
||||||
self.pod_management,
|
|
||||||
other.pod_management,
|
|
||||||
FeatureFlagConfigPartial::merge,
|
|
||||||
),
|
|
||||||
ticket: merge_option(self.ticket, other.ticket, TicketFeatureConfigPartial::merge),
|
ticket: merge_option(self.ticket, other.ticket, TicketFeatureConfigPartial::merge),
|
||||||
ticket_orchestration: merge_option(
|
ticket_orchestration: merge_option(
|
||||||
self.ticket_orchestration,
|
self.ticket_orchestration,
|
||||||
|
|
@ -142,10 +138,7 @@ impl From<FeatureConfigPartial> for FeatureConfig {
|
||||||
.map(FeatureFlagConfig::from)
|
.map(FeatureFlagConfig::from)
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
web: value.web.map(FeatureFlagConfig::from).unwrap_or_default(),
|
web: value.web.map(FeatureFlagConfig::from).unwrap_or_default(),
|
||||||
pod_management: value
|
pods: value.pods.map(FeatureFlagConfig::from).unwrap_or_default(),
|
||||||
.pod_management
|
|
||||||
.map(FeatureFlagConfig::from)
|
|
||||||
.unwrap_or_default(),
|
|
||||||
ticket: value
|
ticket: value
|
||||||
.ticket
|
.ticket
|
||||||
.map(TicketFeatureConfig::from)
|
.map(TicketFeatureConfig::from)
|
||||||
|
|
@ -198,7 +191,7 @@ impl From<FeatureConfig> for FeatureConfigPartial {
|
||||||
task: Some(value.task.into()),
|
task: Some(value.task.into()),
|
||||||
memory: Some(value.memory.into()),
|
memory: Some(value.memory.into()),
|
||||||
web: Some(value.web.into()),
|
web: Some(value.web.into()),
|
||||||
pod_management: Some(value.pod_management.into()),
|
pods: Some(value.pods.into()),
|
||||||
ticket: Some(value.ticket.into()),
|
ticket: Some(value.ticket.into()),
|
||||||
ticket_orchestration: Some(value.ticket_orchestration.into()),
|
ticket_orchestration: Some(value.ticket_orchestration.into()),
|
||||||
}
|
}
|
||||||
|
|
@ -1434,7 +1427,7 @@ worker_max_turns = 7
|
||||||
assert!(!manifest.feature.task.enabled);
|
assert!(!manifest.feature.task.enabled);
|
||||||
assert!(!manifest.feature.memory.enabled);
|
assert!(!manifest.feature.memory.enabled);
|
||||||
assert!(!manifest.feature.web.enabled);
|
assert!(!manifest.feature.web.enabled);
|
||||||
assert!(!manifest.feature.pod_management.enabled);
|
assert!(!manifest.feature.pods.enabled);
|
||||||
assert!(!manifest.feature.ticket.enabled);
|
assert!(!manifest.feature.ticket.enabled);
|
||||||
assert!(!manifest.feature.ticket_orchestration.enabled);
|
assert!(!manifest.feature.ticket_orchestration.enabled);
|
||||||
}
|
}
|
||||||
|
|
@ -1544,7 +1537,7 @@ enabled = true
|
||||||
TicketFeatureAccessConfig::Lifecycle
|
TicketFeatureAccessConfig::Lifecycle
|
||||||
);
|
);
|
||||||
assert!(manifest.feature.web.enabled);
|
assert!(manifest.feature.web.enabled);
|
||||||
assert!(!manifest.feature.pod_management.enabled);
|
assert!(!manifest.feature.pods.enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ pub struct FeatureConfig {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub web: FeatureFlagConfig,
|
pub web: FeatureFlagConfig,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub pod_management: FeatureFlagConfig,
|
pub pods: FeatureFlagConfig,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub ticket: TicketFeatureConfig,
|
pub ticket: TicketFeatureConfig,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
|
@ -110,7 +110,7 @@ impl Default for FeatureConfig {
|
||||||
task: FeatureFlagConfig::disabled(),
|
task: FeatureFlagConfig::disabled(),
|
||||||
memory: FeatureFlagConfig::disabled(),
|
memory: FeatureFlagConfig::disabled(),
|
||||||
web: FeatureFlagConfig::disabled(),
|
web: FeatureFlagConfig::disabled(),
|
||||||
pod_management: FeatureFlagConfig::disabled(),
|
pods: FeatureFlagConfig::disabled(),
|
||||||
ticket: TicketFeatureConfig::default(),
|
ticket: TicketFeatureConfig::default(),
|
||||||
ticket_orchestration: FeatureFlagConfig::disabled(),
|
ticket_orchestration: FeatureFlagConfig::disabled(),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1480,7 +1480,7 @@ return profile {
|
||||||
task = { enabled = true },
|
task = { enabled = true },
|
||||||
memory = { enabled = false },
|
memory = { enabled = false },
|
||||||
web = { enabled = true },
|
web = { enabled = true },
|
||||||
pod_management = { enabled = true },
|
pods = { enabled = true },
|
||||||
ticket = { enabled = true, access = "read_only" },
|
ticket = { enabled = true, access = "read_only" },
|
||||||
ticket_orchestration = { enabled = false },
|
ticket_orchestration = { enabled = false },
|
||||||
},
|
},
|
||||||
|
|
@ -1500,7 +1500,7 @@ return profile {
|
||||||
assert!(resolved.manifest.feature.task.enabled);
|
assert!(resolved.manifest.feature.task.enabled);
|
||||||
assert!(!resolved.manifest.feature.memory.enabled);
|
assert!(!resolved.manifest.feature.memory.enabled);
|
||||||
assert!(resolved.manifest.feature.web.enabled);
|
assert!(resolved.manifest.feature.web.enabled);
|
||||||
assert!(resolved.manifest.feature.pod_management.enabled);
|
assert!(resolved.manifest.feature.pods.enabled);
|
||||||
assert!(resolved.manifest.feature.ticket.enabled);
|
assert!(resolved.manifest.feature.ticket.enabled);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
resolved.manifest.feature.ticket.access,
|
resolved.manifest.feature.ticket.access,
|
||||||
|
|
|
||||||
|
|
@ -595,11 +595,11 @@ where
|
||||||
// loop's `PodEvent` handler). Expose them only behind the explicit
|
// loop's `PodEvent` handler). Expose them only behind the explicit
|
||||||
// profile feature and require delegation authority up front so enabling
|
// profile feature and require delegation authority up front so enabling
|
||||||
// the surface cannot imply broad child scope by accident.
|
// the surface cannot imply broad child scope by accident.
|
||||||
if feature_config.pod_management.enabled {
|
if feature_config.pods.enabled {
|
||||||
if spawner_manifest.delegation_scope.allow.is_empty() {
|
if spawner_manifest.delegation_scope.allow.is_empty() {
|
||||||
return Err(std::io::Error::new(
|
return Err(std::io::Error::new(
|
||||||
std::io::ErrorKind::InvalidInput,
|
std::io::ErrorKind::InvalidInput,
|
||||||
"[feature.pod_management].enabled = true requires non-empty [[delegation_scope.allow]]",
|
"[feature.pods].enabled = true requires non-empty [[delegation_scope.allow]]",
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
worker.register_tool(spawn_pod_tool(
|
worker.register_tool(spawn_pod_tool(
|
||||||
|
|
|
||||||
|
|
@ -304,7 +304,7 @@ permission = "write"
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn pod_management_feature_requires_delegation_scope() {
|
async fn pods_feature_requires_delegation_scope() {
|
||||||
let manifest = r#"
|
let manifest = r#"
|
||||||
[pod]
|
[pod]
|
||||||
name = "pod-management-feature-test"
|
name = "pod-management-feature-test"
|
||||||
|
|
@ -317,7 +317,7 @@ model_id = "test-model"
|
||||||
[worker]
|
[worker]
|
||||||
max_tokens = 100
|
max_tokens = 100
|
||||||
|
|
||||||
[feature.pod_management]
|
[feature.pods]
|
||||||
enabled = true
|
enabled = true
|
||||||
|
|
||||||
[[scope.allow]]
|
[[scope.allow]]
|
||||||
|
|
@ -331,7 +331,7 @@ permission = "write"
|
||||||
assert!(result.is_err());
|
assert!(result.is_err());
|
||||||
let message = result.err().unwrap().to_string();
|
let message = result.err().unwrap().to_string();
|
||||||
assert!(
|
assert!(
|
||||||
message.contains("[feature.pod_management].enabled = true requires non-empty"),
|
message.contains("[feature.pods].enabled = true requires non-empty"),
|
||||||
"unexpected error: {message}"
|
"unexpected error: {message}"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ return profile {
|
||||||
task = { enabled = true },
|
task = { enabled = true },
|
||||||
memory = { enabled = true },
|
memory = { enabled = true },
|
||||||
web = { enabled = true },
|
web = { enabled = true },
|
||||||
pod_management = { enabled = false },
|
pods = { enabled = false },
|
||||||
ticket = { enabled = false, access = "lifecycle" },
|
ticket = { enabled = false, access = "lifecycle" },
|
||||||
ticket_orchestration = { enabled = false },
|
ticket_orchestration = { enabled = false },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user