Skip to content

Commit 071237f

Browse files
Saas-7187 prevent agent name collisions (#460)
1 parent 1340745 commit 071237f

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

lib/interface/cli/commands/agent/install.cmd.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,29 @@ const { getKubeContext } = require('../../helpers/kubernetes');
77
const ProgressEvents = require('../../helpers/progressEvents');
88
const cliProgress = require('cli-progress');
99
const colors = require('colors');
10+
const _ = require('lodash');
1011

1112
const defaultNamespace = 'codefresh';
1213

14+
async function newAgentName(kubeContextName, kubeNamespace) {
15+
const defaultName = `${kubeContextName}_${kubeNamespace}`;
16+
const agents = await sdk.agents.list({ });
17+
let name;
18+
19+
if (!_.isArray(agents) || !_.find(agents, a => a.name === defaultName)) {
20+
name = defaultName; // use the default name if there are no collisions
21+
} else {
22+
const agentsNames = new Set(_.map(agents, a => a.name)); // for fast lookup
23+
let i = 1;
24+
while (agentsNames.has(`${defaultName}_${i}`)) {
25+
i += 1;
26+
}
27+
name = `${defaultName}_${i}`;
28+
}
29+
30+
return name;
31+
}
32+
1333
const installAgentCmd = new Command({
1434
root: false,
1535
parent: installRoot,
@@ -102,7 +122,7 @@ const installAgentCmd = new Command({
102122
}
103123

104124
if (!token) { // Create an agent if not provided
105-
name = name || `${kubeContextName}_${kubeNamespace}`;
125+
name = name || await newAgentName(kubeContextName, kubeNamespace);
106126
agent = await sdk.agents.create({ name });
107127
// eslint-disable-next-line prefer-destructuring
108128
token = agent.token;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codefresh",
3-
"version": "0.62.0",
3+
"version": "0.62.3",
44
"description": "Codefresh command line utility",
55
"main": "index.js",
66
"preferGlobal": true,

0 commit comments

Comments
 (0)