Skip to content

Commit 3a3ce7f

Browse files
authored
fix(hydro_deploy): VM names violating GCP's regex (#1961)
1 parent 22a7d0d commit 3a3ce7f

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

hydro_deploy/core/src/gcp.rs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -334,13 +334,22 @@ impl Host for GcpComputeEngineHost {
334334
);
335335

336336
let vm_key = format!("vm-instance-{}", self.id);
337-
let vm_name = format!(
338-
"hydro-vm-instance-{}{}",
339-
nanoid!(8, &TERRAFORM_ALPHABET),
340-
self.display_name
341-
.clone()
342-
.map_or(String::new(), |name| format!("-{}", name))
343-
);
337+
let mut vm_name = format!("hydro-vm-instance-{}", nanoid!(8, &TERRAFORM_ALPHABET),);
338+
// Name must match regex: (?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?), max length = 63 (61 + 1 a-z before and after)
339+
if let Some(mut display_name) = self.display_name.clone() {
340+
vm_name.push('-');
341+
display_name = display_name
342+
.replace("_", "-")
343+
.replace(":", "-")
344+
.to_lowercase();
345+
346+
// Keep the latter half of display_name if it is too long
347+
let num_chars_to_cut = vm_name.len() + display_name.len() - 63;
348+
if num_chars_to_cut > 0 {
349+
display_name.drain(0..num_chars_to_cut);
350+
}
351+
vm_name.push_str(&display_name);
352+
}
344353

345354
let mut tags = vec![];
346355
let mut external_interfaces = vec![];

hydro_test/examples/perf_paxos.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ async fn main() {
138138
if let Some(new_cluster) = decoupled_cluster {
139139
clusters.push((
140140
new_cluster.id().raw_id(),
141-
format!("{}_decouple_{}", bottleneck_name, i),
141+
format!("{}-decouple-{}", bottleneck_name, i),
142142
bottleneck_num_nodes,
143143
));
144144
}

0 commit comments

Comments
 (0)