From 6166ba69bf090b6e78d59c9829f041fcfb273e5e Mon Sep 17 00:00:00 2001 From: Ben Schwartz Date: Thu, 19 Aug 2021 13:49:15 -0400 Subject: [PATCH 1/2] Improve GCP instance name construction The current code generates names by concatenating integers in a custom format, with unusual results. For example, 2021-01-12 at 13:01:50 and 2021-11-02 at 01:31:50 are both rendered as "2021112-13150". This change produces names like "2021-01-12t13-01-50", which is easier to read (and less likely to collide). --- src/server_manager/web_app/gcp_account.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server_manager/web_app/gcp_account.ts b/src/server_manager/web_app/gcp_account.ts index 02ef4510..ebc6419d 100644 --- a/src/server_manager/web_app/gcp_account.ts +++ b/src/server_manager/web_app/gcp_account.ts @@ -26,8 +26,8 @@ import * as server_install from "./server_install"; /** Returns a unique, RFC1035-style name as required by GCE. */ function makeGcpInstanceName(): string { const now = new Date(); - return `outline-${now.getFullYear()}${now.getMonth()}${now.getDate()}-${now.getUTCHours()}${ - now.getUTCMinutes()}${now.getUTCSeconds()}`; + const isoMinusMilliseconds = now.toISOString().substring(0, 19); + return `outline-${isoMinusMilliseconds.toLowerCase().replace(/:/g, '-')}`; } // Regions where the first f1-micro instance is free. From 6577da55465f3d56d3a8b6ae3e0f6b8a0fab9e22 Mon Sep 17 00:00:00 2001 From: Ben Schwartz Date: Mon, 23 Aug 2021 13:41:47 -0400 Subject: [PATCH 2/2] Restore previous format but fixed --- src/server_manager/web_app/gcp_account.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/server_manager/web_app/gcp_account.ts b/src/server_manager/web_app/gcp_account.ts index ebc6419d..f93452f7 100644 --- a/src/server_manager/web_app/gcp_account.ts +++ b/src/server_manager/web_app/gcp_account.ts @@ -25,9 +25,16 @@ import * as server_install from "./server_install"; /** Returns a unique, RFC1035-style name as required by GCE. */ function makeGcpInstanceName(): string { + function pad2(val: number) { return val.toString().padStart(2, '0'); } + const now = new Date(); - const isoMinusMilliseconds = now.toISOString().substring(0, 19); - return `outline-${isoMinusMilliseconds.toLowerCase().replace(/:/g, '-')}`; + const year = now.getUTCFullYear().toString(); + const month = pad2(now.getUTCMonth() + 1); // January is month 0. + const day = pad2(now.getUTCDate()); + const hour = pad2(now.getUTCHours()); + const minute = pad2(now.getUTCMinutes()); + const second = pad2(now.getUTCSeconds()); + return `outline-${year}${month}${day}-${hour}${minute}${second}`; } // Regions where the first f1-micro instance is free.