@axinom/mosaic-cli 0.20.0-rc.8 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/commands/hosting/index.js +2 -0
  2. package/dist/commands/hosting/index.js.map +1 -1
  3. package/dist/commands/hosting/manifest/upload-manifest.js +4 -0
  4. package/dist/commands/hosting/manifest/upload-manifest.js.map +1 -1
  5. package/dist/commands/hosting/pilet/pilet-commands.js +8 -13
  6. package/dist/commands/hosting/pilet/pilet-commands.js.map +1 -1
  7. package/dist/commands/hosting/pilet/register-pilet-options.d.ts +0 -2
  8. package/dist/commands/hosting/pilet/register-pilet.d.ts +1 -1
  9. package/dist/commands/hosting/pilet/register-pilet.js +62 -51
  10. package/dist/commands/hosting/pilet/register-pilet.js.map +1 -1
  11. package/dist/commands/hosting/service/deploy/service-deploy-command.d.ts +3 -0
  12. package/dist/commands/hosting/service/deploy/service-deploy-command.js +72 -0
  13. package/dist/commands/hosting/service/deploy/service-deploy-command.js.map +1 -0
  14. package/dist/commands/hosting/service/deploy/service-deploy-options.d.ts +14 -0
  15. package/dist/commands/hosting/service/deploy/service-deploy-options.js +3 -0
  16. package/dist/commands/hosting/service/deploy/service-deploy-options.js.map +1 -0
  17. package/dist/commands/hosting/service/deploy/service-deploy.d.ts +9 -0
  18. package/dist/commands/hosting/service/deploy/service-deploy.js +244 -0
  19. package/dist/commands/hosting/service/deploy/service-deploy.js.map +1 -0
  20. package/dist/commands/hosting/service/service-commands.d.ts +2 -0
  21. package/dist/commands/hosting/service/service-commands.js +16 -0
  22. package/dist/commands/hosting/service/service-commands.js.map +1 -0
  23. package/dist/commands/hosting/service/undeploy/service-undeploy-command.d.ts +3 -0
  24. package/dist/commands/hosting/service/undeploy/service-undeploy-command.js +53 -0
  25. package/dist/commands/hosting/service/undeploy/service-undeploy-command.js.map +1 -0
  26. package/dist/commands/hosting/service/undeploy/service-undeploy-options.d.ts +11 -0
  27. package/dist/commands/hosting/service/undeploy/service-undeploy-options.js +3 -0
  28. package/dist/commands/hosting/service/undeploy/service-undeploy-options.js.map +1 -0
  29. package/dist/commands/hosting/service/undeploy/service-undeploy.d.ts +9 -0
  30. package/dist/commands/hosting/service/undeploy/service-undeploy.js +140 -0
  31. package/dist/commands/hosting/service/undeploy/service-undeploy.js.map +1 -0
  32. package/package.json +4 -4
  33. package/src/commands/hosting/index.ts +2 -0
  34. package/src/commands/hosting/manifest/upload-manifest.ts +7 -0
  35. package/src/commands/hosting/pilet/pilet-commands.ts +9 -13
  36. package/src/commands/hosting/pilet/register-pilet-options.ts +0 -2
  37. package/src/commands/hosting/pilet/register-pilet.ts +89 -57
  38. package/src/commands/hosting/service/deploy/service-deploy-command.ts +72 -0
  39. package/src/commands/hosting/service/deploy/service-deploy-options.ts +14 -0
  40. package/src/commands/hosting/service/deploy/service-deploy.ts +347 -0
  41. package/src/commands/hosting/service/service-commands.ts +23 -0
  42. package/src/commands/hosting/service/undeploy/service-undeploy-command.ts +53 -0
  43. package/src/commands/hosting/service/undeploy/service-undeploy-options.ts +11 -0
  44. package/src/commands/hosting/service/undeploy/service-undeploy.ts +188 -0
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateDeploymentArgs = exports.deployService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const mosaic_id_link_be_1 = require("@axinom/mosaic-id-link-be");
6
+ const mosaic_service_common_1 = require("@axinom/mosaic-service-common");
7
+ const axios_1 = require("axios");
8
+ const chalk_1 = require("chalk");
9
+ const fs_1 = require("fs");
10
+ const yaml = require("js-yaml");
11
+ const getAxiosInstance = (hostingServiceBaseUrl, serviceAccountToken) => {
12
+ return axios_1.default.create({
13
+ baseURL: new URL(hostingServiceBaseUrl).toString(),
14
+ headers: {
15
+ Authorization: `Bearer ${serviceAccountToken}`,
16
+ 'content-type': 'application/json',
17
+ },
18
+ });
19
+ };
20
+ const deployService = (args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
21
+ var _a, _b;
22
+ const serviceAccountToken = yield (0, mosaic_id_link_be_1.getServiceAccountToken)(args.idServiceAuthBaseURL, args.mosaicHostingClientId, args.mosaicHostingClientSecret);
23
+ const axiosInstance = getAxiosInstance(args.hostingServiceBaseURL, serviceAccountToken.accessToken);
24
+ const deploymentDetails = yield retrieveServiceDeploymentDetails(args, axiosInstance);
25
+ if (deploymentDetails === undefined) {
26
+ return;
27
+ }
28
+ const serviceDeployment = JSON.stringify({
29
+ query: `mutation initiateServiceDeployment($serviceDefinitionId: UUID!, $containerImageVersion: String!, $serviceDeploymentConfigurationId: UUID!, $servicePiletArtifactIds: [UUID!]!, $name: String) {
30
+ initiateServiceDeployment(
31
+ input: {serviceDefinitionId: $serviceDefinitionId, containerImageVersion: $containerImageVersion, serviceDeploymentConfigurationId: $serviceDeploymentConfigurationId, servicePiletArtifactIds: $servicePiletArtifactIds, name: $name}
32
+ ) {
33
+ serviceDeploymentId
34
+ name
35
+ status
36
+ }
37
+ }`,
38
+ variables: {
39
+ serviceDefinitionId: deploymentDetails.serviceDefinitionId,
40
+ containerImageVersion: args.containerImageTag,
41
+ serviceDeploymentConfigurationId: deploymentDetails.deploymentManifestId,
42
+ servicePiletArtifactIds: (_a = deploymentDetails.piletArtifactIds) !== null && _a !== void 0 ? _a : [],
43
+ name: args.name,
44
+ },
45
+ });
46
+ try {
47
+ const response = yield axiosInstance.post('graphql', serviceDeployment);
48
+ if (response.data.errors !== undefined && response.data.errors.length > 0) {
49
+ console.log((0, chalk_1.red)(`Deployment for Service ID [${args.serviceId}] failed.`));
50
+ if (response.data.errors[0].message ===
51
+ 'Attempt to create or update an element failed, as it would have resulted in a duplicate element.') {
52
+ console.log((0, chalk_1.yellow)(`Hint: The deployment likely failed because the deployment name [${args.name}] is already in use. Please try with a different name.`));
53
+ }
54
+ else {
55
+ console.log((0, chalk_1.red)(response.data.errors[0].message));
56
+ }
57
+ console.log();
58
+ }
59
+ else {
60
+ console.log((0, chalk_1.green)(`Deployment for Service ID [${args.serviceId}] initiated successfully. It may take some time to complete the deployment.`));
61
+ console.log((0, chalk_1.yellow)(JSON.stringify((_b = response.data.data) === null || _b === void 0 ? void 0 : _b.initiateServiceDeployment)));
62
+ console.log();
63
+ }
64
+ }
65
+ catch (error) {
66
+ console.log((0, chalk_1.red)(`Error while performing deployment for Service ID [${args.serviceId}].`));
67
+ console.log((0, chalk_1.red)(JSON.stringify(error.message)));
68
+ }
69
+ });
70
+ exports.deployService = deployService;
71
+ /**
72
+ * Validate arguments for Service Deployment
73
+ *
74
+ * @param args
75
+ * @returns
76
+ */
77
+ const validateDeploymentArgs = (args) => {
78
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
79
+ const errorMessages = [];
80
+ const idServiceAuthBaseURL = (_b = (_a = args.idServiceAuthBaseURL) !== null && _a !== void 0 ? _a : process.env.ID_SERVICE_AUTH_BASE_URL) !== null && _b !== void 0 ? _b : '';
81
+ const mosaicHostingClientId = (_d = (_c = args.mosaicHostingClientId) !== null && _c !== void 0 ? _c : process.env.MOSAIC_HOSTING_CLIENT_ID) !== null && _d !== void 0 ? _d : '';
82
+ const mosaicHostingClientSecret = (_f = (_e = args.mosaicHostingClientSecret) !== null && _e !== void 0 ? _e : process.env.MOSAIC_HOSTING_CLIENT_SECRET) !== null && _f !== void 0 ? _f : '';
83
+ const serviceId = (_h = (_g = args.serviceId) !== null && _g !== void 0 ? _g : getServiceIdFromManifest()) !== null && _h !== void 0 ? _h : '';
84
+ const hostingServiceBaseURL = (_k = (_j = args.hostingServiceBaseURL) !== null && _j !== void 0 ? _j : process.env.HOSTING_SERVICE_BASE_URL) !== null && _k !== void 0 ? _k : '';
85
+ const manifestName = args.manifestName;
86
+ const containerImageTag = args.containerImageTag;
87
+ let pilets = args.pilets;
88
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(idServiceAuthBaseURL)) {
89
+ errorMessages.push('[idServiceAuthBaseURL] is required.');
90
+ }
91
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(mosaicHostingClientId)) {
92
+ errorMessages.push('[clientId] is required.');
93
+ }
94
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(mosaicHostingClientSecret)) {
95
+ errorMessages.push('[clientSecret] is required.');
96
+ }
97
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(serviceId)) {
98
+ errorMessages.push('[serviceId] is required. If no serviceId is given through arguments, mosaic-hosting-deployment-manifest.yaml file in the current directory is checked to derive the serviceId.');
99
+ }
100
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(hostingServiceBaseURL)) {
101
+ errorMessages.push('[hostingServiceBaseURL] is required.');
102
+ }
103
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(manifestName)) {
104
+ errorMessages.push('[manifestName] is required and cannot be an empty string.');
105
+ }
106
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(containerImageTag)) {
107
+ errorMessages.push('[containerImageTag] is required and cannot be an empty string.');
108
+ }
109
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(pilets)) {
110
+ pilets = [];
111
+ }
112
+ return [
113
+ {
114
+ name: args.name,
115
+ idServiceAuthBaseURL,
116
+ mosaicHostingClientId,
117
+ mosaicHostingClientSecret,
118
+ serviceId,
119
+ manifestName,
120
+ pilets,
121
+ containerImageTag: containerImageTag,
122
+ hostingServiceBaseURL,
123
+ },
124
+ errorMessages,
125
+ ];
126
+ };
127
+ exports.validateDeploymentArgs = validateDeploymentArgs;
128
+ const getServiceIdFromManifest = () => {
129
+ try {
130
+ const doc = yaml.load((0, fs_1.readFileSync)('./mosaic-hosting-deployment-manifest.yaml', 'utf8'));
131
+ if (!(0, mosaic_service_common_1.isNullOrWhitespace)(doc)) {
132
+ return doc.serviceId;
133
+ }
134
+ }
135
+ catch (error) {
136
+ return undefined;
137
+ }
138
+ };
139
+ const retrieveServiceDeploymentDetails = (args, axiosInstance) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
140
+ var _c, _d, _e, _f, _g, _h, _j, _k, _l;
141
+ const piletNamingErrors = [];
142
+ const piletFilter = args.pilets.map((pilet) => {
143
+ const nameAndVersion = pilet.split('@');
144
+ if (nameAndVersion.length !== 2) {
145
+ piletNamingErrors.push(`Pilet name [${pilet}] is invalid.`);
146
+ return;
147
+ }
148
+ return {
149
+ name: { equalTo: nameAndVersion[0] },
150
+ packageVersion: { equalTo: nameAndVersion[1] },
151
+ serviceId: { equalTo: args.serviceId },
152
+ };
153
+ });
154
+ if (piletNamingErrors.length > 0) {
155
+ console.log((0, chalk_1.red)(piletNamingErrors));
156
+ console.log((0, chalk_1.yellow)(`Pilet names must match the pattern [pilet-name@package-version]. i.e.: media-workflows@2.0.1.`));
157
+ console.log();
158
+ return;
159
+ }
160
+ const getDeploymentInfoQuery = `query GetDeploymentInfo($serviceId: String!, $manifestName: String!, $pilets: ServicePiletArtifactFilter ) {
161
+ serviceDefinitions(condition: {serviceId: $serviceId}) {
162
+ nodes {
163
+ id
164
+ }
165
+ }
166
+ serviceDeploymentManifests(
167
+ filter: {name: {equalTo: $manifestName}, serviceId: {equalTo: $serviceId}}
168
+ ) {
169
+ nodes {
170
+ id
171
+ }
172
+ }
173
+ servicePiletArtifacts(
174
+ filter: $pilets
175
+ ) {
176
+ nodes {
177
+ id
178
+ }
179
+ }
180
+ }`;
181
+ const deploymentInfo = JSON.stringify({
182
+ query: getDeploymentInfoQuery,
183
+ variables: {
184
+ serviceId: args.serviceId,
185
+ manifestName: args.manifestName,
186
+ pilets: {
187
+ and: [{ serviceId: { equalTo: args.serviceId } }, { or: piletFilter }],
188
+ },
189
+ },
190
+ });
191
+ let serviceDefinitionId;
192
+ let deploymentManifestId;
193
+ let piletArtifactIds = [];
194
+ try {
195
+ const response = yield axiosInstance.post('graphql', deploymentInfo);
196
+ if (response.data.errors !== undefined && response.data.errors.length > 0) {
197
+ console.log((0, chalk_1.red)(`Error while retrieving deployment info for [${args.serviceId}].`));
198
+ console.log(response.data.errors);
199
+ console.log();
200
+ }
201
+ else {
202
+ serviceDefinitionId =
203
+ (_e = (_d = (_c = response.data.data) === null || _c === void 0 ? void 0 : _c.serviceDefinitions) === null || _d === void 0 ? void 0 : _d.nodes[0]) === null || _e === void 0 ? void 0 : _e.id;
204
+ deploymentManifestId =
205
+ (_h = (_g = (_f = response.data.data) === null || _f === void 0 ? void 0 : _f.serviceDeploymentManifests) === null || _g === void 0 ? void 0 : _g.nodes[0]) === null || _h === void 0 ? void 0 : _h.id;
206
+ piletArtifactIds = (_l = (_k = (_j = response.data.data) === null || _j === void 0 ? void 0 : _j.servicePiletArtifacts) === null || _k === void 0 ? void 0 : _k.nodes) === null || _l === void 0 ? void 0 : _l.map((pilet) => pilet.id);
207
+ console.log((0, chalk_1.green)(`Deployment info retrieved successfully for [${args.serviceId}].`));
208
+ const joinedPiletArtifactIds = piletArtifactIds === null || piletArtifactIds === void 0 ? void 0 : piletArtifactIds.join(',');
209
+ console.log((0, chalk_1.green)(`Service Definition ID:\t${serviceDefinitionId}`));
210
+ console.log((0, chalk_1.green)(`Deployment Manifest ID:\t${deploymentManifestId}`));
211
+ console.log((0, chalk_1.green)(`Pilet Artifacts ID(s):\t${joinedPiletArtifactIds === ''
212
+ ? '(No Pilet Artifacts)'
213
+ : joinedPiletArtifactIds}`));
214
+ console.log();
215
+ }
216
+ }
217
+ catch (error) {
218
+ console.log((0, chalk_1.red)(`Error while retrieving deployment info for ${args.serviceId}.`));
219
+ console.log(JSON.stringify(error.message));
220
+ console.log();
221
+ }
222
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(serviceDefinitionId)) {
223
+ console.log((0, chalk_1.red)(`No Service Definition found for Service ID [${args.serviceId}]. Cannot proceed with deployment.`));
224
+ console.log();
225
+ return;
226
+ }
227
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(deploymentManifestId)) {
228
+ console.log((0, chalk_1.red)(`No Deployment Manifest found for name [${args.manifestName}] and Service ID [${args.serviceId}]. Cannot proceed with deployment.`));
229
+ console.log();
230
+ return;
231
+ }
232
+ if (args.pilets.length > 0 &&
233
+ args.pilets.length !== piletArtifactIds.length) {
234
+ console.log((0, chalk_1.red)(`Pilet artifacts were not found for the given pilet names. Cannot proceed with deployment.`));
235
+ console.log();
236
+ return;
237
+ }
238
+ return {
239
+ serviceDefinitionId,
240
+ deploymentManifestId,
241
+ piletArtifactIds,
242
+ };
243
+ });
244
+ //# sourceMappingURL=service-deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-deploy.js","sourceRoot":"","sources":["../../../../../src/commands/hosting/service/deploy/service-deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { CommandModule } from 'yargs';
2
+ export declare const serviceCommands: CommandModule<unknown, unknown>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serviceCommands = void 0;
4
+ const service_deploy_command_1 = require("./deploy/service-deploy-command");
5
+ const service_undeploy_command_1 = require("./undeploy/service-undeploy-command");
6
+ exports.serviceCommands = {
7
+ builder: (yargs) => yargs
8
+ .command('deploy', 'Deploy a service through Hosting Service.', service_deploy_command_1.serviceDeploy)
9
+ .demandCommand()
10
+ .command('undeploy', 'Undeploy a service through Hosting Service.', service_undeploy_command_1.serviceUndeploy)
11
+ .demandCommand(),
12
+ handler: () => {
13
+ console.log('Please pick an action related to hosting service command.');
14
+ },
15
+ };
16
+ //# sourceMappingURL=service-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-commands.js","sourceRoot":"","sources":["../../../../src/commands/hosting/service/service-commands.ts"],"names":[],"mappings":";;;AACA,4EAAgE;AAChE,kFAAsE;AAEzD,QAAA,eAAe,GAAoC;IAC9D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CACN,QAAQ,EACR,2CAA2C,EAC3C,sCAAa,CACd;SACA,aAAa,EAAE;SACf,OAAO,CACN,UAAU,EACV,6CAA6C,EAC7C,0CAAe,CAChB;SACA,aAAa,EAAE;IACpB,OAAO,EAAE,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IAC3E,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { CommandModule } from 'yargs';
2
+ import { GetServiceUndeployOptions } from './service-undeploy-options';
3
+ export declare const serviceUndeploy: CommandModule<unknown, GetServiceUndeployOptions>;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serviceUndeploy = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const chalk_1 = require("chalk");
6
+ const service_undeploy_1 = require("./service-undeploy");
7
+ exports.serviceUndeploy = {
8
+ builder: (yargs) => {
9
+ return yargs
10
+ .option('name', {
11
+ describe: 'Name of the Deployment',
12
+ alias: 'n',
13
+ string: true,
14
+ })
15
+ .option('serviceDeploymentId', {
16
+ describe: 'ID of the Deployment',
17
+ alias: 'i',
18
+ string: true,
19
+ })
20
+ .option('mosaicHostingClientId', {
21
+ describe: 'Service Account Client ID to authenticate',
22
+ alias: 'c',
23
+ string: true,
24
+ })
25
+ .option('mosaicHostingClientSecret', {
26
+ describe: 'Service Account Client Secret to authenticate',
27
+ alias: 's',
28
+ string: true,
29
+ })
30
+ .option('idServiceAuthBaseURL', {
31
+ describe: 'ID Service Authentication Endpoint Base URL',
32
+ alias: 'a',
33
+ string: true,
34
+ })
35
+ .option('hostingServiceBaseURL', {
36
+ describe: 'Hosting Service Base URL',
37
+ alias: 'h',
38
+ string: true,
39
+ });
40
+ },
41
+ handler: (args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
42
+ const [validatedArgs, errorMessages] = (0, service_undeploy_1.validateUndeploymentArgs)(args);
43
+ if (errorMessages.length > 0) {
44
+ console.log((0, chalk_1.red)('Some required arguments are missing.'));
45
+ console.log((0, chalk_1.yellow)(errorMessages));
46
+ console.log();
47
+ }
48
+ else {
49
+ yield (0, service_undeploy_1.undeployService)(validatedArgs);
50
+ }
51
+ }),
52
+ };
53
+ //# sourceMappingURL=service-undeploy-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-undeploy-command.js","sourceRoot":"","sources":["../../../../../src/commands/hosting/service/undeploy/service-undeploy-command.ts"],"names":[],"mappings":";;;;AAAA,iCAAoC;AAEpC,yDAA+E;AAGlE,QAAA,eAAe,GAGxB;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,KAAK;aACT,MAAM,CAAC,MAAM,EAAE;YACd,QAAQ,EAAE,wBAAwB;YAClC,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,qBAAqB,EAAE;YAC7B,QAAQ,EAAE,sBAAsB;YAChC,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,uBAAuB,EAAE;YAC/B,QAAQ,EAAE,2CAA2C;YACrD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,2BAA2B,EAAE;YACnC,QAAQ,EAAE,+CAA+C;YACzD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,sBAAsB,EAAE;YAC9B,QAAQ,EAAE,6CAA6C;YACvD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;aACD,MAAM,CAAC,uBAAuB,EAAE;YAC/B,QAAQ,EAAE,0BAA0B;YACpC,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,CAAO,IAAI,EAAE,EAAE;QACtB,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,IAAA,2CAAwB,EAAC,IAAI,CAAC,CAAC;QACtE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,IAAA,WAAG,EAAC,sCAAsC,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,IAAA,cAAM,EAAC,aAAa,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,EAAE,CAAC;SACf;aAAM;YACL,MAAM,IAAA,kCAAe,EAAC,aAAa,CAAC,CAAC;SACtC;IACH,CAAC,CAAA;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Options for Undeploying a Service
3
+ */
4
+ export interface GetServiceUndeployOptions {
5
+ name?: string;
6
+ serviceDeploymentId?: string;
7
+ mosaicHostingClientId?: string;
8
+ mosaicHostingClientSecret?: string;
9
+ idServiceAuthBaseURL?: string;
10
+ hostingServiceBaseURL?: string;
11
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=service-undeploy-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-undeploy-options.js","sourceRoot":"","sources":["../../../../../src/commands/hosting/service/undeploy/service-undeploy-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { GetServiceUndeployOptions } from './service-undeploy-options';
2
+ export declare const undeployService: (args: Required<GetServiceUndeployOptions>) => Promise<void>;
3
+ /**
4
+ * Validate arguments for Service Undeployment
5
+ *
6
+ * @param args
7
+ * @returns
8
+ */
9
+ export declare const validateUndeploymentArgs: (args: GetServiceUndeployOptions) => [Required<GetServiceUndeployOptions>, string[]];
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateUndeploymentArgs = exports.undeployService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const mosaic_id_link_be_1 = require("@axinom/mosaic-id-link-be");
6
+ const mosaic_service_common_1 = require("@axinom/mosaic-service-common");
7
+ const axios_1 = require("axios");
8
+ const chalk_1 = require("chalk");
9
+ const getAxiosInstance = (hostingServiceBaseUrl, serviceAccountToken) => {
10
+ return axios_1.default.create({
11
+ baseURL: new URL(hostingServiceBaseUrl).toString(),
12
+ headers: {
13
+ Authorization: `Bearer ${serviceAccountToken}`,
14
+ 'content-type': 'application/json',
15
+ },
16
+ });
17
+ };
18
+ const undeployService = (args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
19
+ var _a;
20
+ const serviceAccountToken = yield (0, mosaic_id_link_be_1.getServiceAccountToken)(args.idServiceAuthBaseURL, args.mosaicHostingClientId, args.mosaicHostingClientSecret);
21
+ const axiosInstance = getAxiosInstance(args.hostingServiceBaseURL, serviceAccountToken.accessToken);
22
+ let serviceDeploymentId;
23
+ if (!(0, mosaic_service_common_1.isNullOrWhitespace)(args.name)) {
24
+ serviceDeploymentId = yield getServiceDeploymentIdByName(args.name, axiosInstance);
25
+ }
26
+ else {
27
+ serviceDeploymentId = args.serviceDeploymentId;
28
+ }
29
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(serviceDeploymentId)) {
30
+ console.log((0, chalk_1.red)(`No Service Deployment was found for name [${args.name}].`));
31
+ return;
32
+ }
33
+ const serviceUneployment = JSON.stringify({
34
+ query: `mutation InitiateServiceUndeployment($serviceDeploymentId: UUID!) {
35
+ initiateServiceUndeployment(input: {serviceDeploymentId: $serviceDeploymentId}) {
36
+ status
37
+ serviceDeploymentId
38
+ }
39
+ }`,
40
+ variables: {
41
+ serviceDeploymentId,
42
+ },
43
+ });
44
+ try {
45
+ const response = yield axiosInstance.post('graphql', serviceUneployment);
46
+ if (response.data.errors !== undefined && response.data.errors.length > 0) {
47
+ console.log((0, chalk_1.red)(`Error while initiating undeployment for Service Deployment ID [${serviceDeploymentId}].`));
48
+ console.log(response.data.errors);
49
+ console.log();
50
+ }
51
+ else {
52
+ console.log((0, chalk_1.green)(`Undeployment for Service Deployment ID [${serviceDeploymentId}] initiated successfully.`));
53
+ console.log((0, chalk_1.yellow)(JSON.stringify((_a = response.data.data) === null || _a === void 0 ? void 0 : _a.initiateServiceUndeployment)));
54
+ console.log();
55
+ }
56
+ }
57
+ catch (error) {
58
+ console.log((0, chalk_1.red)(`Error while initiating undeployment for Service Deployment ID [${serviceDeploymentId}].`));
59
+ console.log((0, chalk_1.red)(JSON.stringify(error.message)));
60
+ }
61
+ });
62
+ exports.undeployService = undeployService;
63
+ /**
64
+ * Validate arguments for Service Undeployment
65
+ *
66
+ * @param args
67
+ * @returns
68
+ */
69
+ const validateUndeploymentArgs = (args) => {
70
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
71
+ const errorMessages = [];
72
+ const idServiceAuthBaseURL = (_b = (_a = args.idServiceAuthBaseURL) !== null && _a !== void 0 ? _a : process.env.ID_SERVICE_AUTH_BASE_URL) !== null && _b !== void 0 ? _b : '';
73
+ const hostingServiceBaseURL = (_d = (_c = args.hostingServiceBaseURL) !== null && _c !== void 0 ? _c : process.env.HOSTING_SERVICE_BASE_URL) !== null && _d !== void 0 ? _d : '';
74
+ const mosaicHostingClientId = (_f = (_e = args.mosaicHostingClientId) !== null && _e !== void 0 ? _e : process.env.MOSAIC_HOSTING_CLIENT_ID) !== null && _f !== void 0 ? _f : '';
75
+ const mosaicHostingClientSecret = (_h = (_g = args.mosaicHostingClientSecret) !== null && _g !== void 0 ? _g : process.env.MOSAIC_HOSTING_CLIENT_SECRET) !== null && _h !== void 0 ? _h : '';
76
+ const name = (_j = args.name) !== null && _j !== void 0 ? _j : '';
77
+ const serviceDeploymentId = (_k = args.serviceDeploymentId) !== null && _k !== void 0 ? _k : '';
78
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(idServiceAuthBaseURL)) {
79
+ errorMessages.push('[idServiceAuthBaseURL] is required.');
80
+ }
81
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(mosaicHostingClientId)) {
82
+ errorMessages.push('[clientId] is required.');
83
+ }
84
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(mosaicHostingClientSecret)) {
85
+ errorMessages.push('[clientSecret] is required.');
86
+ }
87
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(hostingServiceBaseURL)) {
88
+ errorMessages.push('[hostingServiceBaseURL] is required.');
89
+ }
90
+ if ((0, mosaic_service_common_1.isNullOrWhitespace)(name) && (0, mosaic_service_common_1.isNullOrWhitespace)(serviceDeploymentId)) {
91
+ errorMessages.push('Either the [name] or [serviceDeploymentId] must be provided to initiate the service undeployment.');
92
+ }
93
+ if (!(0, mosaic_service_common_1.isNullOrWhitespace)(name) && !(0, mosaic_service_common_1.isNullOrWhitespace)(serviceDeploymentId)) {
94
+ errorMessages.push('Only one of [name] or [serviceDeploymentId] arguments must be provided. Both cannot be present.');
95
+ }
96
+ return [
97
+ {
98
+ name,
99
+ serviceDeploymentId,
100
+ idServiceAuthBaseURL,
101
+ mosaicHostingClientId,
102
+ mosaicHostingClientSecret,
103
+ hostingServiceBaseURL,
104
+ },
105
+ errorMessages,
106
+ ];
107
+ };
108
+ exports.validateUndeploymentArgs = validateUndeploymentArgs;
109
+ const getServiceDeploymentIdByName = (name, axiosInstance) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
110
+ var _b, _c, _d;
111
+ const deploymentInfo = JSON.stringify({
112
+ query: `query GetServiceDeploymentIdByName($name: String!) {
113
+ serviceDeployments(condition: {name: $name}) {
114
+ nodes {
115
+ id
116
+ }
117
+ }
118
+ }`,
119
+ variables: {
120
+ name,
121
+ },
122
+ });
123
+ try {
124
+ const response = yield axiosInstance.post('graphql', deploymentInfo);
125
+ if (response.data.errors !== undefined && response.data.errors.length > 0) {
126
+ console.log((0, chalk_1.red)(`Error while retrieving deployment id for [${name}].`));
127
+ console.log(response.data.errors);
128
+ console.log();
129
+ }
130
+ else {
131
+ return (_d = (_c = (_b = response.data.data) === null || _b === void 0 ? void 0 : _b.serviceDeployments) === null || _c === void 0 ? void 0 : _c.nodes[0]) === null || _d === void 0 ? void 0 : _d.id;
132
+ }
133
+ }
134
+ catch (error) {
135
+ console.log((0, chalk_1.red)(`Error while retrieving deployment id for [${name}].`));
136
+ console.log(JSON.stringify(error.message));
137
+ console.log();
138
+ }
139
+ });
140
+ //# sourceMappingURL=service-undeploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-undeploy.js","sourceRoot":"","sources":["../../../../../src/commands/hosting/service/undeploy/service-undeploy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axinom/mosaic-cli",
3
- "version": "0.20.0-rc.8",
3
+ "version": "0.20.0",
4
4
  "description": "The Axinom Mosaic CLI",
5
5
  "author": "Axinom",
6
6
  "license": "PROPRIETARY",
@@ -33,8 +33,8 @@
33
33
  "@asyncapi/diff": "^0.4.1",
34
34
  "@asyncapi/modelina": "^1.8.4",
35
35
  "@asyncapi/parser": "^2.0.2",
36
- "@axinom/mosaic-id-link-be": "^0.13.4-rc.8",
37
- "@axinom/mosaic-service-common": "^0.35.0-rc.8",
36
+ "@axinom/mosaic-id-link-be": "^0.13.4",
37
+ "@axinom/mosaic-service-common": "^0.35.0",
38
38
  "@graphql-inspector/core": "^3.1.2",
39
39
  "@stoplight/spectral": "^5.9.1",
40
40
  "axios": "^0.19.2",
@@ -68,5 +68,5 @@
68
68
  "publishConfig": {
69
69
  "access": "public"
70
70
  },
71
- "gitHead": "5edc02cc390133cd76b231e57bde5394db8a5aa0"
71
+ "gitHead": "7c6702d386aee28156332c050cf7c97f3df2b1db"
72
72
  }
@@ -1,6 +1,7 @@
1
1
  import { CommandModule } from 'yargs';
2
2
  import { manifestCommands } from './manifest/manifest-commands';
3
3
  import { piletCommands } from './pilet/pilet-commands';
4
+ import { serviceCommands } from './service/service-commands';
4
5
 
5
6
  export const hosting: CommandModule<unknown, unknown> = {
6
7
  command: 'hosting',
@@ -13,6 +14,7 @@ export const hosting: CommandModule<unknown, unknown> = {
13
14
  'Deployment Manifest related actions',
14
15
  manifestCommands,
15
16
  )
17
+ .command('service', 'Service Deployment related actions', serviceCommands)
16
18
  .demandCommand(),
17
19
  handler: (_args) => {
18
20
  console.log('Please pick a sub command related to hosting.');
@@ -38,6 +38,13 @@ export const uploadDeploymentManifest = async (
38
38
  return;
39
39
  }
40
40
 
41
+ if (manifestToUpload.serviceId !== args.serviceId) {
42
+ console.log(
43
+ `Service ID in the given Deployment Manifest does not match with the argument value. Please make sure the value of the argument given for Service ID matches the value in the Deployment Manifest.`,
44
+ );
45
+ return;
46
+ }
47
+
41
48
  const axiosInstance: AxiosInstance = getAxiosInstance(
42
49
  args.hostingServiceBaseURL,
43
50
  serviceAccountToken.accessToken,
@@ -34,18 +34,9 @@ const piletRegister: CommandModule<unknown, GetRegisterPiletOptions> = {
34
34
  alias: 's',
35
35
  string: true,
36
36
  })
37
- .option('tenantId', {
38
- describe: 'Tenant ID',
39
- alias: 't',
40
- string: true,
41
- })
42
- .option('environmentId', {
43
- describe: 'Environment ID',
44
- alias: 'e',
45
- string: true,
46
- })
47
37
  .option('piletArtifactPath', {
48
- describe: 'Pilet Artifact Path',
38
+ describe:
39
+ 'Path to the pilet artifact .tgz file or a directory containing the .tgz file',
49
40
  alias: 'p',
50
41
  string: true,
51
42
  })
@@ -68,7 +59,12 @@ const piletRegister: CommandModule<unknown, GetRegisterPiletOptions> = {
68
59
  },
69
60
  handler: async (args) => {
70
61
  // Validate arguments and read any arguments that are coming from environment variables.
71
- const validatedArgs = validateArgs(args);
72
- await registerPilet(validatedArgs);
62
+ const [validatedArgs, errorMessages] = validateArgs(args);
63
+
64
+ if (errorMessages.length > 0) {
65
+ console.log(errorMessages);
66
+ } else {
67
+ await registerPilet(validatedArgs);
68
+ }
73
69
  },
74
70
  };
@@ -5,8 +5,6 @@ export interface GetRegisterPiletOptions {
5
5
  serviceId?: string;
6
6
  mosaicHostingClientId?: string;
7
7
  mosaicHostingClientSecret?: string;
8
- tenantId?: string;
9
- environmentId?: string;
10
8
  piletArtifactPath?: string;
11
9
  idServiceAuthBaseURL?: string;
12
10
  microFrontendServiceBaseURL?: string;