@abgov/nx-oc 12.2.0 → 12.3.0-beta.1
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.
- package/package.json +1 -1
- package/src/adsp/adsp-utils.d.ts +2 -0
- package/src/adsp/adsp-utils.js +24 -3
- package/src/adsp/adsp-utils.js.map +1 -1
- package/src/adsp/adsp.d.ts +2 -0
- package/src/executors/apply/apply.js +4 -4
- package/src/executors/apply/apply.js.map +1 -1
- package/src/utils/git-utils.d.ts +1 -1
- package/src/utils/oc-utils.js +6 -6
- package/src/utils/oc-utils.js.map +1 -1
- package/src/utils/oc-utils.spec.ts +21 -18
package/package.json
CHANGED
package/src/adsp/adsp-utils.d.ts
CHANGED
|
@@ -11,5 +11,7 @@ export declare function selectTenant(tenantServiceUrl: string, token: string): P
|
|
|
11
11
|
export declare function getAdspConfiguration(_host: Tree, options: {
|
|
12
12
|
env: EnvironmentName;
|
|
13
13
|
accessToken?: string;
|
|
14
|
+
tenant?: string;
|
|
15
|
+
tenantRealm?: string;
|
|
14
16
|
}): Promise<AdspConfiguration>;
|
|
15
17
|
export declare function isAdspOptions(options: unknown): options is AdspOptions;
|
package/src/adsp/adsp-utils.js
CHANGED
|
@@ -89,16 +89,37 @@ function selectTenant(tenantServiceUrl, token) {
|
|
|
89
89
|
}
|
|
90
90
|
function getAdspConfiguration(_host, options) {
|
|
91
91
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
var _a;
|
|
92
93
|
const { env, accessToken } = options;
|
|
93
94
|
const environment = environments_1.environments[env || 'prod'];
|
|
94
95
|
if (isAdspOptions(options)) {
|
|
95
|
-
//
|
|
96
|
+
// Adsp configuration already resolved — return it directly.
|
|
96
97
|
return options.adsp;
|
|
97
98
|
}
|
|
99
|
+
const urls = yield getServiceUrls(environment.directoryServiceUrl);
|
|
100
|
+
const tenantServiceUrl = urls['urn:ads:platform:tenant-service:v2'];
|
|
101
|
+
if (options.tenant) {
|
|
102
|
+
// --tenant <name>: look up the realm anonymously, then do a single login
|
|
103
|
+
// to that realm. The resulting token works for both ADSP configuration
|
|
104
|
+
// access and the agent-service (which requires a tenant-realm token).
|
|
105
|
+
const { data } = yield axios_1.default.get(new URL('v2/tenants', tenantServiceUrl).href, { params: { name: options.tenant } });
|
|
106
|
+
const found = data.results[0];
|
|
107
|
+
if (!found) {
|
|
108
|
+
throw new Error(`Tenant '${options.tenant}' not found.`);
|
|
109
|
+
}
|
|
110
|
+
const realm = (_a = options.tenantRealm) !== null && _a !== void 0 ? _a : found.realm;
|
|
111
|
+
const token = accessToken || (yield realmLogin(environment.accessServiceUrl, realm));
|
|
112
|
+
return {
|
|
113
|
+
tenant: (0, devkit_1.names)(found.name).fileName,
|
|
114
|
+
tenantRealm: realm,
|
|
115
|
+
accessServiceUrl: environment.accessServiceUrl,
|
|
116
|
+
directoryServiceUrl: environment.directoryServiceUrl,
|
|
117
|
+
accessToken: token,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
98
120
|
else {
|
|
99
|
-
|
|
121
|
+
// Interactive flow: login to core realm, then let the user pick a tenant.
|
|
100
122
|
const token = accessToken || (yield realmLogin(environment.accessServiceUrl, 'core'));
|
|
101
|
-
const tenantServiceUrl = urls['urn:ads:platform:tenant-service:v2'];
|
|
102
123
|
const tenant = yield selectTenant(tenantServiceUrl, token);
|
|
103
124
|
return {
|
|
104
125
|
tenant: (0, devkit_1.names)(tenant.name).fileName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adsp-utils.js","sourceRoot":"","sources":["../../../../../packages/nx-oc/src/adsp/adsp-utils.ts"],"names":[],"mappings":";;AAcA,sCAOC;AAED,gCAyDC;AAED,wCAYC;AAED,oCAoBC;AAED,
|
|
1
|
+
{"version":3,"file":"adsp-utils.js","sourceRoot":"","sources":["../../../../../packages/nx-oc/src/adsp/adsp-utils.ts"],"names":[],"mappings":"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"}
|
package/src/adsp/adsp.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export interface AdspConfiguration {
|
|
|
3
3
|
tenantRealm: string;
|
|
4
4
|
accessServiceUrl: string;
|
|
5
5
|
directoryServiceUrl: string;
|
|
6
|
+
/** Access token from the login performed during configuration retrieval (set by --tenant flow). */
|
|
7
|
+
accessToken?: string;
|
|
6
8
|
}
|
|
7
9
|
|
|
8
10
|
export type AdspOptions = {
|
|
@@ -6,7 +6,7 @@ const pipeline_envs_1 = require("../../pipeline-envs");
|
|
|
6
6
|
const oc_utils_1 = require("../../utils/oc-utils");
|
|
7
7
|
function mapOcProject(project, i) {
|
|
8
8
|
if (typeof project === 'string') {
|
|
9
|
-
return { project
|
|
9
|
+
return { project, tag: pipeline_envs_1.pipelineEnvs[i].toLowerCase() };
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
12
|
return project;
|
|
@@ -25,9 +25,9 @@ function runExecutor(options_1, _a) {
|
|
|
25
25
|
const failed = ocProjects
|
|
26
26
|
.map(({ project, tag }) => {
|
|
27
27
|
const processResult = (0, oc_utils_1.runOcCommand)('process', [
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
'-f', `.openshift/${projectName}/${projectName}.yml`,
|
|
29
|
+
'-p', `PROJECT=${project}`,
|
|
30
|
+
'-p', `DEPLOY_TAG=${tag}`,
|
|
31
31
|
]);
|
|
32
32
|
if (!processResult.success) {
|
|
33
33
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../../../packages/nx-oc/src/executors/apply/apply.ts"],"names":[],"mappings":";;AAwBA,8BAkCC;;AAzDD,uDAA2D;AAC3D,mDAAoD;AAGpD,SAAS,YAAY,CACnB,OAAqC,EACrC,CAAS;IAET,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../../../packages/nx-oc/src/executors/apply/apply.ts"],"names":[],"mappings":";;AAwBA,8BAkCC;;AAzDD,uDAA2D;AAC3D,mDAAoD;AAGpD,SAAS,YAAY,CACnB,OAAqC,EACrC,CAAS;IAET,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,4BAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;QACrC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzC,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC;AAED,SAA8B,WAAW;iEACvC,OAAe,EACf,EAAE,WAAW,EAAmB;QAEhC,OAAO,CAAC,GAAG,CAAC,wBAAwB,WAAW,KAAK,CAAC,CAAC;QAEtD,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,UAAU;aACtB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;YACxB,MAAM,aAAa,GAAG,IAAA,uBAAY,EAAC,SAAS,EAAE;gBAC5C,IAAI,EAAE,cAAc,WAAW,IAAI,WAAW,MAAM;gBACpD,IAAI,EAAE,WAAW,OAAO,EAAE;gBAC1B,IAAI,EAAE,cAAc,GAAG,EAAE;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,uBAAY,EACtC,OAAO,EACP,EAAE,EACF,aAAa,CAAC,MAAM,CACrB,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,CAAC,CAAC;gBAEhC,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAEjC,OAAO;YACL,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;CAAA"}
|
package/src/utils/git-utils.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function getGitRemoteUrl(): string;
|
|
1
|
+
export declare function getGitRemoteUrl(): string | undefined;
|
package/src/utils/oc-utils.js
CHANGED
|
@@ -3,16 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.runOcCommand = runOcCommand;
|
|
4
4
|
const child_process_1 = require("child_process");
|
|
5
5
|
function runOcCommand(command, params, input) {
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const args = input
|
|
7
|
+
? [command, '-f', '-', ...params]
|
|
8
|
+
: [command, ...params];
|
|
9
9
|
try {
|
|
10
|
-
console.log(`Executing command: ${
|
|
11
|
-
const stdout = (0, child_process_1.
|
|
10
|
+
console.log(`Executing command: oc ${args.join(' ')}`);
|
|
11
|
+
const stdout = (0, child_process_1.execFileSync)('oc', args, { stdio: 'pipe', input });
|
|
12
12
|
return { success: true, stdout };
|
|
13
13
|
}
|
|
14
14
|
catch (e) {
|
|
15
|
-
console.log(`Failed to execute command: ${
|
|
15
|
+
console.log(`Failed to execute command: oc ${args.join(' ')}`, e);
|
|
16
16
|
return { success: false };
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oc-utils.js","sourceRoot":"","sources":["../../../../../packages/nx-oc/src/utils/oc-utils.ts"],"names":[],"mappings":";;AAEA,oCAiBC;AAnBD,
|
|
1
|
+
{"version":3,"file":"oc-utils.js","sourceRoot":"","sources":["../../../../../packages/nx-oc/src/utils/oc-utils.ts"],"names":[],"mappings":";;AAEA,oCAiBC;AAnBD,iDAA6C;AAE7C,SAAgB,YAAY,CAC1B,OAAwD,EACxD,MAAgB,EAChB,KAAc;IAEd,MAAM,IAAI,GAAG,KAAK;QAChB,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;IAEzB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAA,4BAAY,EAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -1,55 +1,58 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execFileSync } from 'child_process';
|
|
2
2
|
import { mocked } from 'jest-mock';
|
|
3
3
|
import { runOcCommand } from './oc-utils';
|
|
4
4
|
|
|
5
5
|
jest.mock('child_process');
|
|
6
|
-
const
|
|
6
|
+
const mockedExecFileSync = mocked(execFileSync);
|
|
7
7
|
|
|
8
8
|
describe('runOcCommand', () => {
|
|
9
9
|
beforeEach(() => {
|
|
10
|
-
|
|
10
|
+
mockedExecFileSync.mockReset();
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
it('returns success with stdout on successful command', () => {
|
|
14
14
|
const output = Buffer.from('project set to test-dev');
|
|
15
|
-
|
|
15
|
+
mockedExecFileSync.mockReturnValue(output);
|
|
16
16
|
|
|
17
17
|
const result = runOcCommand('project', ['test-dev']);
|
|
18
18
|
expect(result.success).toBe(true);
|
|
19
19
|
expect(result.stdout).toBe(output);
|
|
20
20
|
});
|
|
21
21
|
|
|
22
|
-
it('builds the correct
|
|
23
|
-
|
|
22
|
+
it('builds the correct args array without input', () => {
|
|
23
|
+
mockedExecFileSync.mockReturnValue(Buffer.from(''));
|
|
24
24
|
|
|
25
|
-
runOcCommand('process', ['-f .openshift/app.yml', '-p ENV=dev']);
|
|
26
|
-
expect(
|
|
27
|
-
'oc
|
|
25
|
+
runOcCommand('process', ['-f', '.openshift/app.yml', '-p', 'ENV=dev']);
|
|
26
|
+
expect(mockedExecFileSync).toHaveBeenCalledWith(
|
|
27
|
+
'oc',
|
|
28
|
+
['process', '-f', '.openshift/app.yml', '-p', 'ENV=dev'],
|
|
28
29
|
expect.objectContaining({ stdio: 'pipe' })
|
|
29
30
|
);
|
|
30
31
|
});
|
|
31
32
|
|
|
32
|
-
it('
|
|
33
|
-
|
|
33
|
+
it('prepends -f - when input buffer is provided', () => {
|
|
34
|
+
mockedExecFileSync.mockReturnValue(Buffer.from(''));
|
|
34
35
|
const input = Buffer.from('{"kind":"List"}');
|
|
35
36
|
|
|
36
37
|
runOcCommand('apply', [], input);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
expect(mockedExecFileSync).toHaveBeenCalledWith(
|
|
39
|
+
'oc',
|
|
40
|
+
['apply', '-f', '-'],
|
|
41
|
+
expect.objectContaining({ stdio: 'pipe' })
|
|
42
|
+
);
|
|
40
43
|
});
|
|
41
44
|
|
|
42
|
-
it('passes input buffer to
|
|
43
|
-
|
|
45
|
+
it('passes input buffer to execFileSync', () => {
|
|
46
|
+
mockedExecFileSync.mockReturnValue(Buffer.from(''));
|
|
44
47
|
const input = Buffer.from('yaml-content');
|
|
45
48
|
|
|
46
49
|
runOcCommand('apply', [], input);
|
|
47
|
-
const [, options] =
|
|
50
|
+
const [, , options] = mockedExecFileSync.mock.calls[0];
|
|
48
51
|
expect((options as { input: Buffer }).input).toBe(input);
|
|
49
52
|
});
|
|
50
53
|
|
|
51
54
|
it('returns failure when command throws', () => {
|
|
52
|
-
|
|
55
|
+
mockedExecFileSync.mockImplementation(() => {
|
|
53
56
|
throw new Error('oc: command not found');
|
|
54
57
|
});
|
|
55
58
|
|