use serde::{Deserialize, Serialize};
use turnkey_client::generated::immutable::common::v1::TvcHealthCheckType;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DeployConfig {
pub app_id: String,
pub qos_version: String,
pub pivot_container_image_url: String,
pub pivot_path: String,
#[serde(default)]
pub pivot_args: Vec<String>,
pub expected_pivot_digest: String,
#[serde(default)]
pub debug_mode: Option<bool>,
#[serde(default)]
pub pivot_container_encrypted_pull_secret: Option<String>,
pub health_check_type: TvcHealthCheckType,
pub health_check_port: u16,
pub public_ingress_port: u16,
}
impl DeployConfig {
pub fn template(app_id: Option<&str>) -> Self {
Self {
app_id: app_id.unwrap_or("<FILL_IN_APP_ID>").to_string(),
qos_version: "<FILL_IN_QOS_VERSION>".to_string(),
pivot_container_image_url: "<FILL_IN_PIVOT_CONTAINER_IMAGE_URL>".to_string(),
pivot_path: "<FILL_IN_PIVOT_PATH>".to_string(),
pivot_args: vec![],
expected_pivot_digest: "<FILL_IN_EXPECTED_PIVOT_DIGEST>".to_string(),
debug_mode: Some(false),
pivot_container_encrypted_pull_secret: Some(
"<REMOVE_ME_IF_PIVOT_CONTAINER_URL_IS_PUBLIC>".to_string(),
),
health_check_type: TvcHealthCheckType::Http,
health_check_port: 3000,
public_ingress_port: 3000,
}
}
pub fn has_placeholders(&self) -> bool {
self.app_id.starts_with("<FILL_IN")
|| self.qos_version.starts_with("<FILL_IN")
|| self.pivot_container_image_url.starts_with("<FILL_IN")
|| self.pivot_path.starts_with("<FILL_IN")
|| self.expected_pivot_digest.starts_with("<FILL_IN")
}
}