Skip to content

Commit bef383b

Browse files
Saas 6146 (#441)
* create cluster when installing runtime * install on codefresh namespace if namespace wasn't provided
1 parent 181f90e commit bef383b

File tree

7 files changed

+104
-52
lines changed

7 files changed

+104
-52
lines changed

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ const { getKubeContext } = require('../../helpers/kubernetes');
77
const ProgressEvents = require('../../helpers/progressEvents');
88
const cliProgress = require('cli-progress');
99

10+
const defaultNamespace = 'codefresh';
11+
1012
const installAgentCmd = new Command({
1113
root: false,
1214
parent: installRoot,
@@ -69,7 +71,6 @@ const installAgentCmd = new Command({
6971
'kube-node-selector': kubeNodeSelector,
7072
'dry-run': dryRun,
7173
'in-cluster': inCluster,
72-
'kube-namespace': kubeNamespace,
7374
'kubernetes-runner-type': kubernetesRunnerType,
7475
tolerations,
7576
'venona-version': venonaVersion,
@@ -79,12 +80,15 @@ const installAgentCmd = new Command({
7980
verbose,
8081
} = argv;
8182
let agent;
82-
let { 'kube-context-name': kubeContextName } = argv;
83+
let {
84+
'kube-context-name': kubeContextName,
85+
'kube-namespace': kubeNamespace,
86+
} = argv;
8387
if (!kubeContextName) {
8488
kubeContextName = getKubeContext(kubeConfigPath);
8589
}
8690
if (!kubeNamespace) {
87-
throw new Error('kube-namespace is mandatory parameter');
91+
kubeNamespace = defaultNamespace;
8892
}
8993

9094
if (!token) { // Create an agent if not provided
@@ -113,10 +117,11 @@ const installAgentCmd = new Command({
113117
}
114118
const apiHost = sdk.config.context.url;
115119
const events = new ProgressEvents();
116-
const format = 'downloading [{bar}] {percentage}% | {value}/{total}';
120+
const format = 'downloading [{bar}] {percentage}% | {value}/{total}';
117121
const progressBar = new cliProgress.SingleBar({ stopOnComplete: true, format }, cliProgress.Presets.shades_classic);
118122
let totalSize;
119123
events.onStart((size) => {
124+
console.log('Downloading agent\'s installer \n');
120125
progressBar.start(size, 0);
121126
totalSize = size;
122127
});

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ const unInstallAgentCmd = new Command({
7777
events,
7878
});
7979
if (exitCode === 0) {
80+
console.log('Agent uninsalled successfully');
8081
await deleteAgent.handler({ name, id: name });
8182
}
8283
process.exit(0);

lib/interface/cli/commands/cluster/create.cmd.js

Lines changed: 51 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
const Command = require('../../Command');
22
const createRoot = require('../root/create.cmd');
33
const { sdk } = require('../../../../logic');
4+
const ProgressEvents = require('../../helpers/progressEvents');
5+
const cliProgress = require('cli-progress');
46

57
const command = new Command({
68
command: 'clusters [name]',
@@ -12,32 +14,30 @@ const command = new Command({
1214
title: 'Create Cluster',
1315
weight: 100,
1416
},
15-
builder: (yargs) => {
16-
return yargs
17-
.option('kube-context', {
18-
describe: ' kubectl context name',
19-
alias: 'kc',
20-
required: true,
21-
})
22-
.option('namespace', {
23-
describe: 'Kubernetes namespace to use while looking for service account',
24-
alias: 'ns',
25-
default: 'default',
26-
required: true,
27-
})
28-
.option('serviceaccount', {
29-
describe: 'Kubernetes serviceaccount credentials to be added to Codefresh',
30-
alias: 'sa',
31-
default: 'default',
32-
required: true,
33-
})
34-
.option('behind-firewall', {
35-
describe: 'Specify if the cluster is set behind a firewall',
36-
default: false,
37-
type: 'boolean',
38-
})
39-
.example('codefresh create cluster --kube-context production', 'Creating a cluster in codefresh');
40-
},
17+
builder: yargs => yargs
18+
.option('kube-context', {
19+
describe: ' kubectl context name',
20+
alias: 'kc',
21+
required: true,
22+
})
23+
.option('namespace', {
24+
describe: 'Kubernetes namespace to use while looking for service account',
25+
alias: 'ns',
26+
default: 'default',
27+
required: true,
28+
})
29+
.option('serviceaccount', {
30+
describe: 'Kubernetes serviceaccount credentials to be added to Codefresh',
31+
alias: 'sa',
32+
default: 'default',
33+
required: true,
34+
})
35+
.option('behind-firewall', {
36+
describe: 'Specify if the cluster is set behind a firewall',
37+
default: false,
38+
type: 'boolean',
39+
})
40+
.example('codefresh create cluster --kube-context production', 'Creating a cluster in codefresh'),
4141
handler: async (argv) => {
4242
const { context } = sdk.config;
4343
const {
@@ -47,13 +47,38 @@ const command = new Command({
4747
'behind-firewall': behindFirewall,
4848
name,
4949
} = argv;
50+
let {
51+
terminateProcess,
52+
} = argv;
53+
if (terminateProcess === undefined) {
54+
terminateProcess = true;
55+
}
56+
const events = new ProgressEvents();
57+
const format = 'downloading cluster installer [{bar}] {percentage}% | {value}/{total}';
58+
const progressBar = new cliProgress.SingleBar(
59+
{ stopOnComplete: true, format },
60+
cliProgress.Presets.shades_classic,
61+
);
62+
let clusterTotalSize;
63+
events.onStart((size) => {
64+
progressBar.start(size, 0);
65+
clusterTotalSize = size;
66+
});
67+
events.onProgress((progress) => {
68+
progressBar.update(progress);
69+
if (progress >= clusterTotalSize) {
70+
console.log('\n');
71+
}
72+
});
5073
await sdk.clusters.create({
5174
contextName,
5275
context,
5376
namespace,
5477
serviceaccount,
5578
behindFirewall,
5679
name,
80+
terminateProcess,
81+
events,
5782
});
5883
},
5984
});

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

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ const installRoot = require('../root/install.cmd');
66
const { getKubeContext } = require('../../helpers/kubernetes');
77
const ProgressEvents = require('../../helpers/progressEvents');
88
const cliProgress = require('cli-progress');
9+
const createClusterCmd = require('../cluster/create.cmd');
10+
11+
const defaultNamespace = 'codefresh';
912

1013

1114
const _getAgentData = async (token) => {
@@ -98,6 +101,9 @@ const installRuntimeCmd = new Command({
98101
.option('agent-kube-config-path', {
99102
describe: 'Path to kubeconfig file for the agent (default is $HOME/.kube/config) (on attach)',
100103
})
104+
.option('cluster-service-account', {
105+
describe: 'service account for cluster default is default',
106+
})
101107
.option('verbose', {
102108
describe: 'Print logs',
103109
}),
@@ -106,7 +112,6 @@ const installRuntimeCmd = new Command({
106112
'storage-class-name': storageClassName,
107113
'agent-name': agentName,
108114
'dry-run': dryRun,
109-
'runtime-kube-namespace': kubeNamespace,
110115
'in-cluster': inCluster,
111116
'kube-node-selector': kubeNodeSelector,
112117
'kubernetes-runner-type': kubernetesRunnerType,
@@ -116,25 +121,27 @@ const installRuntimeCmd = new Command({
116121
verbose,
117122
'build-annotations': buildAnnotations,
118123
'attach-runtime': attachRuntime,
124+
'cluster-service-account': clusterServiceAccount,
119125
} = argv;
120126

121127
let {
122128
'runtime-kube-context-name': kubeContextName,
123129
'agent-kube-context-name': agentKubeContextName,
124130
'agent-kube-namespace': agentKubeNamespace,
125131
'agent-kube-config-path': agentKubeConfigPath,
132+
'runtime-kube-namespace': kubeNamespace,
126133
token,
127134
} = argv;
128135

129136
if (!kubeNamespace) {
130-
throw new Error('runtime-kube-namespace is mandatory parameter');
137+
kubeNamespace = defaultNamespace;
131138
}
132139

133140
// parse kubeNodeSelector in form key1=value1,key2=value2 to {key1: value1, key2: value2}
134-
let kubeNodeSelectorObj = {};
141+
const kubeNodeSelectorObj = {};
135142
if (kubeNodeSelector) {
136143
const nsSplitParts = kubeNodeSelector.split(',');
137-
nsSplitParts.forEach( nsPart => {
144+
nsSplitParts.forEach((nsPart) => {
138145
const nsRecordSplit = nsPart.split('=');
139146
if (nsRecordSplit.length !== 2) {
140147
throw new Error('invalid kube-node-selector parameter');
@@ -166,19 +173,30 @@ const installRuntimeCmd = new Command({
166173
agent: true,
167174
});
168175
console.log(`Runtime envrionment ${runtimeName} was created`);
176+
177+
// create the cluster in codefresh
178+
179+
await createClusterCmd.handler({
180+
'kube-context': kubeContextName,
181+
namespace: kubeNamespace,
182+
'behind-firewall': true,
183+
serviceaccount: clusterServiceAccount || 'default',
184+
terminateProcess: false,
185+
});
169186
// install RE on cluster
170187

171-
const events = new ProgressEvents();
172-
const format = 'downloading [{bar}] {percentage}% | {value}/{total}';
173-
const progressBar = new cliProgress.SingleBar({ stopOnComplete: true, format }, cliProgress.Presets.shades_classic);
174-
let totalSize;
175-
events.onStart((size) => {
176-
progressBar.start(size, 0);
177-
totalSize = size;
188+
const runtimeEvents = new ProgressEvents();
189+
const runtimeFormat = 'downloading runtime installer [{bar}] {percentage}% | {value}/{total}';
190+
const runtimmrProgressBar = new cliProgress.SingleBar({ stopOnComplete: true, format: runtimeFormat }, cliProgress.Presets.shades_classic);
191+
let runtimeTotalSize;
192+
runtimeEvents.onStart((size) => {
193+
console.log('Downloading runtime\'s installer \n');
194+
runtimmrProgressBar.start(size, 0);
195+
runtimeTotalSize = size;
178196
});
179-
events.onProgress((progress) => {
180-
progressBar.update(progress);
181-
if (progress >= totalSize) {
197+
runtimeEvents.onProgress((progress) => {
198+
runtimmrProgressBar.update(progress);
199+
if (progress >= runtimeTotalSize) {
182200
console.log('\n');
183201
}
184202
});
@@ -198,7 +216,7 @@ const installRuntimeCmd = new Command({
198216
setValue,
199217
setFile,
200218
terminateProcess: !attachRuntime,
201-
events,
219+
events: runtimeEvents,
202220
});
203221
// attach RE to agent in codefresh
204222

lib/interface/cli/commands/runtimeEnvironments/uninstall.cmd.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ const unInstallRuntimeCmd = new Command({
3030
.option('agent-name', {
3131
describe: 'Agent\'s name to be uninstalled',
3232
})
33+
.option('name', {
34+
describe: 'Runtime\'s name to be uninstalled',
35+
})
3336
.option('agent-id', {
3437
describe: 'Agent\'s ID',
3538
})
@@ -58,7 +61,7 @@ const unInstallRuntimeCmd = new Command({
5861
const {
5962
'agent-name': agentName,
6063
'agent-id': agentId,
61-
'runtime-name': runtimeName,
64+
name: runtimeName,
6265
'runtime-kube-namespace': kubeNamespace,
6366
'runtime-kube-config-path': kubeConfigPath,
6467
'restart-agent': restartAgent,

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codefresh",
3-
"version": "0.52.3",
3+
"version": "0.52.4",
44
"description": "Codefresh command line utility",
55
"main": "index.js",
66
"preferGlobal": true,
@@ -37,7 +37,7 @@
3737
"cf-errors": "^0.1.12",
3838
"chalk": "^1.1.3",
3939
"cli-progress": "3.6.0",
40-
"codefresh-sdk": "1.5.3",
40+
"codefresh-sdk": "1.6.2",
4141
"colors": "^1.1.2",
4242
"columnify": "^1.5.4",
4343
"compare-versions": "^3.4.0",

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,10 +1187,10 @@ code-point-at@^1.0.0:
11871187
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
11881188
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
11891189

1190-
codefresh-sdk@1.5.3:
1191-
version "1.5.3"
1192-
resolved "https://registry.yarnpkg.com/codefresh-sdk/-/codefresh-sdk-1.5.3.tgz#77e3708d6cd4a9d0fe468b0749b8ac3754de99bb"
1193-
integrity sha512-4gGPHmyEqWxMcvY78XrjMkfA7WlriYOs43ak9YkIfApz6wxAcDy7B7qLwvKi/ZHDM25nwA1W4xrPQqm0ju7Usg==
1190+
codefresh-sdk@1.6.2:
1191+
version "1.6.2"
1192+
resolved "https://registry.yarnpkg.com/codefresh-sdk/-/codefresh-sdk-1.6.2.tgz#f8f196c0a53e7207bb9c474cab8147e4d8b53560"
1193+
integrity sha512-Slzy2OmzFGJnHbx7s9m1V/q/9Noo005Kw9c20y0A5A5Ne+5Islra1P5iplMbEP5oE47FutfhUn7QjNt3qAq5Bw==
11941194
dependencies:
11951195
bluebird "^3.5.3"
11961196
cf-errors "^0.1.12"

0 commit comments

Comments
 (0)