@rockcarver/frodo-cli 0.10.4 → 0.11.1-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.
- package/.github/README.md +44 -104
- package/.github/workflows/pipeline.yml +9 -1
- package/CHANGELOG.md +5 -1
- package/README.md +3 -3
- package/package.json +8 -8
- package/src/app.js +5 -4
- package/src/cli/_template/cmd-delete.js +9 -8
- package/src/cli/_template/cmd-describe.js +9 -8
- package/src/cli/_template/cmd-export.js +9 -8
- package/src/cli/_template/cmd-import.js +9 -8
- package/src/cli/_template/cmd-list.js +9 -8
- package/src/cli/_template/cmd-sub1-delete.js +9 -8
- package/src/cli/_template/cmd-sub1-describe.js +9 -8
- package/src/cli/_template/cmd-sub1-export.js +9 -8
- package/src/cli/_template/cmd-sub1-import.js +9 -8
- package/src/cli/_template/cmd-sub1-list.js +9 -8
- package/src/cli/_template/cmd-sub2-delete.js +9 -8
- package/src/cli/_template/cmd-sub2-describe.js +9 -8
- package/src/cli/_template/cmd-sub2-export.js +9 -8
- package/src/cli/_template/cmd-sub2-import.js +9 -8
- package/src/cli/_template/cmd-sub2-list.js +9 -8
- package/src/cli/admin/admin-add-autoid-static-user-mapping.js +12 -12
- package/src/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +15 -18
- package/src/cli/admin/admin-get-access-token.js +12 -12
- package/src/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -13
- package/src/cli/admin/admin-hide-generic-extension-attributes.js +13 -13
- package/src/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +13 -13
- package/src/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +14 -13
- package/src/cli/admin/admin-list-static-user-mappings.js +12 -12
- package/src/cli/admin/admin-remove-static-user-mapping.js +12 -12
- package/src/cli/admin/admin-repair-org-model.js +13 -13
- package/src/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +13 -13
- package/src/cli/admin/admin-show-generic-extension-attributes.js +13 -13
- package/src/cli/app/app-delete.js +9 -8
- package/src/cli/app/app-describe.js +9 -8
- package/src/cli/app/app-export.js +15 -15
- package/src/cli/app/app-import.js +11 -11
- package/src/cli/app/app-list.js +11 -12
- package/src/cli/conn/conn-add.js +11 -11
- package/src/cli/conn/conn-delete.js +3 -1
- package/src/cli/conn/conn-describe.js +3 -1
- package/src/cli/conn/conn-list.js +3 -4
- package/src/cli/email/email-template-export.js +16 -16
- package/src/cli/email/email-template-import.js +16 -16
- package/src/cli/email/email-template-list.js +11 -11
- package/src/cli/esv/esv-apply.js +12 -12
- package/src/cli/esv/esv-secret-create.js +11 -11
- package/src/cli/esv/esv-secret-delete.js +13 -13
- package/src/cli/esv/esv-secret-describe.js +11 -11
- package/src/cli/esv/esv-secret-export.js +9 -8
- package/src/cli/esv/esv-secret-import.js +9 -8
- package/src/cli/esv/esv-secret-list.js +11 -11
- package/src/cli/esv/esv-secret-set.js +11 -11
- package/src/cli/esv/esv-secret-version-activate.js +12 -12
- package/src/cli/esv/esv-secret-version-create.js +11 -11
- package/src/cli/esv/esv-secret-version-deactivate.js +12 -12
- package/src/cli/esv/esv-secret-version-delete.js +13 -13
- package/src/cli/esv/esv-secret-version-list.js +11 -11
- package/src/cli/esv/esv-variable-create.js +11 -11
- package/src/cli/esv/esv-variable-delete.js +13 -16
- package/src/cli/esv/esv-variable-describe.js +11 -11
- package/src/cli/esv/esv-variable-export.js +9 -8
- package/src/cli/esv/esv-variable-import.js +9 -8
- package/src/cli/esv/esv-variable-list.js +11 -11
- package/src/cli/esv/esv-variable-set.js +13 -16
- package/src/cli/idm/idm-count.js +11 -11
- package/src/cli/idm/idm-export.js +16 -16
- package/src/cli/idm/idm-list.js +11 -11
- package/src/cli/idp/idp-export.js +15 -19
- package/src/cli/idp/idp-import.js +18 -18
- package/src/cli/idp/idp-list.js +12 -12
- package/src/cli/info/info.js +23 -19
- package/src/cli/journey/{journey-delete.e2e.test.js → journey-delete.e2e.test_.js} +0 -0
- package/src/cli/journey/journey-delete.js +14 -14
- package/src/cli/journey/journey-describe.js +26 -35
- package/src/cli/journey/journey-export.js +15 -18
- package/src/cli/journey/journey-import.js +17 -17
- package/src/cli/journey/{journey-list.e2e.test.js → journey-list.e2e.test_.js} +1 -0
- package/src/cli/journey/journey-list.js +12 -12
- package/src/cli/journey/journey-prune.js +12 -12
- package/src/cli/logging/logs-list.js +33 -28
- package/src/cli/logging/logs-tail.js +26 -22
- package/src/cli/realm/realm-add-custom-domain.js +13 -13
- package/src/cli/realm/realm-describe.js +14 -14
- package/src/cli/realm/realm-list.js +11 -11
- package/src/cli/realm/realm-remove-custom-domain.js +16 -13
- package/src/cli/saml/saml-cot-export.js +16 -16
- package/src/cli/saml/saml-cot-import.js +18 -18
- package/src/cli/saml/saml-cot-list.js +12 -12
- package/src/cli/saml/saml-describe.js +12 -12
- package/src/cli/saml/saml-export.js +16 -19
- package/src/cli/saml/saml-import.js +19 -18
- package/src/cli/saml/saml-list.js +12 -12
- package/src/cli/saml/saml-metadata-export.js +15 -19
- package/src/cli/script/script-delete.js +9 -8
- package/src/cli/script/script-describe.js +9 -8
- package/src/cli/script/script-export.js +18 -20
- package/src/cli/script/script-import.js +13 -12
- package/src/cli/script/script-list.js +12 -12
- package/src/cli/theme/{theme-delete.e2e.test.js → theme-delete.e2e.test_.js} +0 -0
- package/src/cli/theme/theme-delete.js +17 -21
- package/src/cli/theme/theme-export.js +19 -18
- package/src/cli/theme/theme-import.js +21 -20
- package/src/cli/theme/{theme-list.e2e.test.js → theme-list.e2e.test_.js} +0 -0
- package/src/cli/theme/theme-list.js +12 -12
- package/test/client_cli/en/conn-add.test.js +37 -0
- package/test/client_cli/en/conn-delete.test.js +37 -0
- package/test/client_cli/en/conn-list.test.js +37 -0
- package/test/client_cli/en/conn.test.js +65 -0
- package/test/client_cli/en/email-template-import.test.js +156 -0
- package/test/client_cli/en/email-template.test.js +79 -0
- package/test/client_cli/en/email-templates-export.test.js +208 -0
- package/test/client_cli/en/email-templates-list.test.js +139 -0
- package/test/client_cli/en/idm-count.test.js +131 -0
- package/test/client_cli/en/idm-export.test.js +149 -0
- package/test/client_cli/en/{idm_import.test_.js → idm-import.test_.js} +59 -61
- package/test/client_cli/en/idm-list.test.js +109 -0
- package/test/client_cli/en/idm.test.js +55 -84
- package/test/client_cli/en/info.test.js +85 -74
- package/test/client_cli/en/journey-describe.test.js +194 -0
- package/test/client_cli/en/journey-export.test.js +231 -0
- package/test/client_cli/en/journey-import.test.js +212 -0
- package/test/client_cli/en/journey-list.test.js +173 -0
- package/test/client_cli/en/{journey_prune.test.js → journey-prune.test.js} +102 -91
- package/test/client_cli/en/journey.test.js +76 -92
- package/test/client_cli/en/logs-list.test.js +81 -0
- package/test/client_cli/en/logs-tail.test.js +130 -0
- package/test/client_cli/en/logs.test.js +44 -58
- package/test/client_cli/en/root.test.js +61 -59
- package/test/client_cli/en/script-export.test.js +230 -0
- package/test/client_cli/en/script-import.test.js +176 -0
- package/test/client_cli/en/script-list.test.js +159 -0
- package/test/client_cli/en/script.test.js +52 -50
- package/test/client_cli/utils/utils.js +48 -17
- package/src/api/AuthenticateApi.js +0 -33
- package/src/api/BaseApi.js +0 -242
- package/src/api/CirclesOfTrustApi.js +0 -87
- package/src/api/EmailTemplateApi.js +0 -37
- package/src/api/IdmConfigApi.js +0 -88
- package/src/api/LogApi.js +0 -45
- package/src/api/ManagedObjectApi.js +0 -62
- package/src/api/OAuth2ClientApi.js +0 -69
- package/src/api/OAuth2OIDCApi.js +0 -73
- package/src/api/OAuth2ProviderApi.js +0 -32
- package/src/api/RealmApi.js +0 -99
- package/src/api/Saml2Api.js +0 -176
- package/src/api/ScriptApi.js +0 -84
- package/src/api/SecretsApi.js +0 -151
- package/src/api/ServerInfoApi.js +0 -41
- package/src/api/SocialIdentityProvidersApi.js +0 -114
- package/src/api/StartupApi.js +0 -45
- package/src/api/ThemeApi.js +0 -181
- package/src/api/TreeApi.js +0 -207
- package/src/api/VariablesApi.js +0 -104
- package/src/api/utils/ApiUtils.js +0 -77
- package/src/api/utils/Base64.js +0 -62
- package/src/ops/AdminOps.js +0 -901
- package/src/ops/AuthenticateOps.js +0 -342
- package/src/ops/CirclesOfTrustOps.js +0 -350
- package/src/ops/ConnectionProfileOps.js +0 -254
- package/src/ops/EmailTemplateOps.js +0 -326
- package/src/ops/IdmOps.js +0 -227
- package/src/ops/IdpOps.js +0 -342
- package/src/ops/JourneyOps.js +0 -2026
- package/src/ops/LogOps.js +0 -357
- package/src/ops/ManagedObjectOps.js +0 -34
- package/src/ops/OAuth2ClientOps.js +0 -151
- package/src/ops/OrganizationOps.js +0 -85
- package/src/ops/RealmOps.js +0 -139
- package/src/ops/SamlOps.js +0 -541
- package/src/ops/ScriptOps.js +0 -211
- package/src/ops/SecretsOps.js +0 -288
- package/src/ops/StartupOps.js +0 -114
- package/src/ops/ThemeOps.js +0 -379
- package/src/ops/VariablesOps.js +0 -185
- package/src/ops/templates/OAuth2ClientTemplate.json +0 -270
- package/src/ops/templates/OrgModelUserAttributesTemplate.json +0 -149
- package/src/ops/templates/cloud/GenericExtensionAttributesTemplate.json +0 -392
- package/src/ops/templates/cloud/managed.json +0 -4119
- package/src/ops/utils/Console.js +0 -434
- package/src/ops/utils/DataProtection.js +0 -92
- package/src/ops/utils/ExportImportUtils.js +0 -146
- package/src/ops/utils/OpsUtils.js +0 -76
- package/src/ops/utils/Wordwrap.js +0 -11
- package/src/storage/SessionStorage.js +0 -45
- package/test/client_cli/en/connections.test.js +0 -62
- package/test/client_cli/en/connections_add.test.js +0 -34
- package/test/client_cli/en/connections_delete.test.js +0 -34
- package/test/client_cli/en/connections_list.test.js +0 -34
- package/test/client_cli/en/email_templates.test.js +0 -77
- package/test/client_cli/en/email_templates_export.test.js +0 -196
- package/test/client_cli/en/email_templates_import.test.js +0 -145
- package/test/client_cli/en/email_templates_list.test.js +0 -130
- package/test/client_cli/en/idm_count.test.js +0 -121
- package/test/client_cli/en/idm_export.test.js +0 -136
- package/test/client_cli/en/idm_exportAll.test.js +0 -156
- package/test/client_cli/en/idm_exportAllRaw.test.js +0 -120
- package/test/client_cli/en/idm_importAll.test_.js +0 -103
- package/test/client_cli/en/idm_list.test.js +0 -103
- package/test/client_cli/en/journey_describe.test.js +0 -196
- package/test/client_cli/en/journey_export.test.js +0 -213
- package/test/client_cli/en/journey_import.test.js +0 -195
- package/test/client_cli/en/journey_importAll.test.js +0 -180
- package/test/client_cli/en/journey_list.test.js +0 -162
- package/test/client_cli/en/logs_list.test.js +0 -83
- package/test/client_cli/en/logs_tail.test.js +0 -118
- package/test/client_cli/en/script_export.test.js +0 -213
- package/test/client_cli/en/script_import.test.js +0 -163
- package/test/client_cli/en/script_list.test.js +0 -148
- package/test/e2e/setup.js +0 -98
- package/test/global/setup.js +0 -65
- package/test/lib_api/unit_tests/ApiUtils.test.js +0 -186
- package/test/lib_api/unit_tests/Base64URL.test.js +0 -22
- package/test/lib_api/unit_tests/DataProtection.test.js +0 -25
- package/test/lib_api/unit_tests/ExportImportUtils.test.js +0 -121
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import { Command, Option } from 'commander';
|
|
3
|
+
import { Authenticate, Journey, state } from '@rockcarver/frodo-lib';
|
|
3
4
|
import * as common from '../cmd_common.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
getJourneyData,
|
|
8
|
-
describeTree,
|
|
9
|
-
} from '../../ops/JourneyOps.js';
|
|
10
|
-
import storage from '../../storage/SessionStorage.js';
|
|
11
|
-
import {
|
|
12
|
-
printMessage,
|
|
13
|
-
createProgressBar,
|
|
14
|
-
updateProgressBar,
|
|
15
|
-
stopProgressBar,
|
|
16
|
-
} from '../../ops/utils/Console.js';
|
|
5
|
+
|
|
6
|
+
const { getTokens } = Authenticate;
|
|
7
|
+
const { listJourneys, getJourneyData, describeTree } = Journey;
|
|
17
8
|
|
|
18
9
|
const program = new Command('frodo journey describe');
|
|
19
10
|
|
|
@@ -50,68 +41,68 @@ program
|
|
|
50
41
|
.action(
|
|
51
42
|
// implement command logic inside action handler
|
|
52
43
|
async (host, realm, user, password, options) => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
44
|
+
state.default.session.setTenant(host);
|
|
45
|
+
state.default.session.setRealm(realm);
|
|
46
|
+
state.default.session.setUsername(user);
|
|
47
|
+
state.default.session.setPassword(password);
|
|
48
|
+
state.default.session.setDeploymentType(options.type);
|
|
49
|
+
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
59
50
|
const treeDescription = [];
|
|
60
51
|
// TODO: review checks for arguments
|
|
61
52
|
if (typeof host === 'undefined' || typeof options.file !== 'undefined') {
|
|
62
53
|
if (typeof options.file === 'undefined') {
|
|
63
|
-
|
|
54
|
+
console.log(
|
|
64
55
|
'You either need <host> or -f when using describe',
|
|
65
56
|
'error'
|
|
66
57
|
);
|
|
67
58
|
return;
|
|
68
59
|
}
|
|
69
|
-
|
|
60
|
+
console.log(`Describing local journey file ${options.file}...`);
|
|
70
61
|
try {
|
|
71
62
|
const data = fs.readFileSync(options.file, 'utf8');
|
|
72
63
|
const journeyData = JSON.parse(data);
|
|
73
64
|
treeDescription.push(describeTree(journeyData));
|
|
74
65
|
} catch (err) {
|
|
75
|
-
|
|
66
|
+
console.log(err, 'error');
|
|
76
67
|
}
|
|
77
68
|
} else if (await getTokens()) {
|
|
78
|
-
|
|
79
|
-
`Describing journey(s) in realm "${
|
|
69
|
+
console.log(
|
|
70
|
+
`Describing journey(s) in realm "${state.default.session.getRealm()}"...`
|
|
80
71
|
);
|
|
81
72
|
if (typeof options.journeyId === 'undefined') {
|
|
82
73
|
const journeyList = await listJourneys(false);
|
|
83
|
-
createProgressBar(journeyList.length, '');
|
|
74
|
+
// createProgressBar(journeyList.length, '');
|
|
84
75
|
for (const item of journeyList) {
|
|
85
76
|
// eslint-disable-next-line no-await-in-loop
|
|
86
77
|
const journeyData = await getJourneyData(item.name);
|
|
87
78
|
treeDescription.push(describeTree(journeyData));
|
|
88
|
-
updateProgressBar(`Analyzing journey - ${item.name}`);
|
|
79
|
+
// updateProgressBar(`Analyzing journey - ${item.name}`);
|
|
89
80
|
}
|
|
90
|
-
stopProgressBar('Done');
|
|
81
|
+
// stopProgressBar('Done');
|
|
91
82
|
} else {
|
|
92
83
|
const journeyData = await getJourneyData(options.journeyId);
|
|
93
84
|
treeDescription.push(describeTree(journeyData));
|
|
94
85
|
}
|
|
95
86
|
}
|
|
96
87
|
for (const item of treeDescription) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
88
|
+
console.log(`\nJourney: ${item.treeName}`, 'info');
|
|
89
|
+
console.log('========');
|
|
90
|
+
console.log('\nNodes:', 'info');
|
|
100
91
|
if (Object.entries(item.nodeTypes).length) {
|
|
101
92
|
for (const [name, count] of Object.entries(item.nodeTypes)) {
|
|
102
|
-
|
|
93
|
+
console.log(`- ${name}: ${count}`, 'info');
|
|
103
94
|
}
|
|
104
95
|
}
|
|
105
96
|
if (Object.entries(item.scripts).length) {
|
|
106
|
-
|
|
97
|
+
console.log('\nScripts:', 'info');
|
|
107
98
|
for (const [name, desc] of Object.entries(item.scripts)) {
|
|
108
|
-
|
|
99
|
+
console.log(`- ${name}: ${desc}`, 'info');
|
|
109
100
|
}
|
|
110
101
|
}
|
|
111
102
|
if (Object.entries(item.emailTemplates).length) {
|
|
112
|
-
|
|
103
|
+
console.log('\nEmail Templates:', 'info');
|
|
113
104
|
for (const [id] of Object.entries(item.emailTemplates)) {
|
|
114
|
-
|
|
105
|
+
console.log(`- ${id}`, 'info');
|
|
115
106
|
}
|
|
116
107
|
}
|
|
117
108
|
}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { Command, Option } from 'commander';
|
|
2
|
+
import { Authenticate, Journey, state } from '@rockcarver/frodo-lib';
|
|
2
3
|
import * as common from '../cmd_common.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exportJourneysToFiles,
|
|
8
|
-
} from '../../ops/JourneyOps.js';
|
|
9
|
-
import storage from '../../storage/SessionStorage.js';
|
|
10
|
-
import { printMessage } from '../../ops/utils/Console.js';
|
|
4
|
+
|
|
5
|
+
const { getTokens } = Authenticate;
|
|
6
|
+
const { exportJourneyToFile, exportJourneysToFile, exportJourneysToFiles } =
|
|
7
|
+
Journey;
|
|
11
8
|
|
|
12
9
|
const program = new Command('frodo journey export');
|
|
13
10
|
|
|
@@ -66,16 +63,16 @@ program
|
|
|
66
63
|
.action(
|
|
67
64
|
// implement command logic inside action handler
|
|
68
65
|
async (host, realm, user, password, options) => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
66
|
+
state.default.session.setTenant(host);
|
|
67
|
+
state.default.session.setRealm(realm);
|
|
68
|
+
state.default.session.setUsername(user);
|
|
69
|
+
state.default.session.setPassword(password);
|
|
70
|
+
state.default.session.setDeploymentType(options.type);
|
|
71
|
+
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
75
72
|
if (await getTokens()) {
|
|
76
73
|
// export
|
|
77
74
|
if (options.journeyId) {
|
|
78
|
-
|
|
75
|
+
console.log('Exporting journey...');
|
|
79
76
|
exportJourneyToFile(options.journeyId, options.file, {
|
|
80
77
|
useStringArrays: options.useStringArrays,
|
|
81
78
|
deps: options.deps,
|
|
@@ -84,7 +81,7 @@ program
|
|
|
84
81
|
}
|
|
85
82
|
// --all -a
|
|
86
83
|
else if (options.all) {
|
|
87
|
-
|
|
84
|
+
console.log('Exporting all journeys to a single file...');
|
|
88
85
|
exportJourneysToFile(options.file, {
|
|
89
86
|
useStringArrays: options.useStringArrays,
|
|
90
87
|
deps: options.deps,
|
|
@@ -93,7 +90,7 @@ program
|
|
|
93
90
|
}
|
|
94
91
|
// --all-separate -A
|
|
95
92
|
else if (options.allSeparate) {
|
|
96
|
-
|
|
93
|
+
console.log('Exporting all journeys to separate files...');
|
|
97
94
|
exportJourneysToFiles({
|
|
98
95
|
useStringArrays: options.useStringArrays,
|
|
99
96
|
deps: options.deps,
|
|
@@ -102,7 +99,7 @@ program
|
|
|
102
99
|
}
|
|
103
100
|
// unrecognized combination of options or no options
|
|
104
101
|
else {
|
|
105
|
-
|
|
102
|
+
console.log('Unrecognized combination of options or no options...');
|
|
106
103
|
program.help();
|
|
107
104
|
}
|
|
108
105
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Command, Option } from 'commander';
|
|
2
|
+
import { Authenticate, Journey, state } from '@rockcarver/frodo-lib';
|
|
2
3
|
import * as common from '../cmd_common.js';
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
const { getTokens } = Authenticate;
|
|
6
|
+
const {
|
|
5
7
|
importJourneyFromFile,
|
|
6
8
|
importJourneysFromFile,
|
|
7
9
|
importJourneysFromFiles,
|
|
8
10
|
importFirstJourneyFromFile,
|
|
9
|
-
}
|
|
10
|
-
import storage from '../../storage/SessionStorage.js';
|
|
11
|
-
import { printMessage } from '../../ops/utils/Console.js';
|
|
11
|
+
} = Journey;
|
|
12
12
|
|
|
13
|
-
const program = new Command('frodo
|
|
13
|
+
const program = new Command('frodo journey import');
|
|
14
14
|
|
|
15
15
|
program
|
|
16
16
|
.description('Import journey/tree.')
|
|
@@ -67,16 +67,16 @@ program
|
|
|
67
67
|
.action(
|
|
68
68
|
// implement command logic inside action handler
|
|
69
69
|
async (host, realm, user, password, options) => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
state.default.session.setTenant(host);
|
|
71
|
+
state.default.session.setRealm(realm);
|
|
72
|
+
state.default.session.setUsername(user);
|
|
73
|
+
state.default.session.setPassword(password);
|
|
74
|
+
state.default.session.setDeploymentType(options.type);
|
|
75
|
+
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
76
76
|
if (await getTokens()) {
|
|
77
77
|
// import
|
|
78
78
|
if (options.journeyId) {
|
|
79
|
-
|
|
79
|
+
console.log(`Importing journey ${options.journeyId}...`);
|
|
80
80
|
importJourneyFromFile(options.journeyId, options.file, {
|
|
81
81
|
reUuid: options.reUuid,
|
|
82
82
|
deps: options.deps,
|
|
@@ -85,7 +85,7 @@ program
|
|
|
85
85
|
}
|
|
86
86
|
// --all -a
|
|
87
87
|
else if (options.all && options.file) {
|
|
88
|
-
|
|
88
|
+
console.log(
|
|
89
89
|
`Importing all journeys from a single file (${options.file})...`
|
|
90
90
|
);
|
|
91
91
|
importJourneysFromFile(options.file, {
|
|
@@ -96,7 +96,7 @@ program
|
|
|
96
96
|
}
|
|
97
97
|
// --all-separate -A
|
|
98
98
|
else if (options.allSeparate && !options.file) {
|
|
99
|
-
|
|
99
|
+
console.log(
|
|
100
100
|
'Importing all journeys from separate files in current directory...'
|
|
101
101
|
);
|
|
102
102
|
importJourneysFromFiles({
|
|
@@ -107,7 +107,7 @@ program
|
|
|
107
107
|
}
|
|
108
108
|
// import first journey in file
|
|
109
109
|
else if (options.file) {
|
|
110
|
-
|
|
110
|
+
console.log('Importing first journey in file...');
|
|
111
111
|
importFirstJourneyFromFile(options.file, {
|
|
112
112
|
reUuid: options.reUuid,
|
|
113
113
|
deps: options.deps,
|
|
@@ -116,7 +116,7 @@ program
|
|
|
116
116
|
}
|
|
117
117
|
// unrecognized combination of options or no options
|
|
118
118
|
else {
|
|
119
|
-
|
|
119
|
+
console.log('Unrecognized combination of options or no options...');
|
|
120
120
|
program.help();
|
|
121
121
|
}
|
|
122
122
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Command, Option } from 'commander';
|
|
2
|
+
import { Authenticate, Journey, state } from '@rockcarver/frodo-lib';
|
|
2
3
|
import * as common from '../cmd_common.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import { printMessage } from '../../ops/utils/Console.js';
|
|
4
|
+
|
|
5
|
+
const { getTokens } = Authenticate;
|
|
6
|
+
const { listJourneys } = Journey;
|
|
7
7
|
|
|
8
8
|
const program = new Command('frodo journey list');
|
|
9
9
|
|
|
@@ -24,15 +24,15 @@ program
|
|
|
24
24
|
.action(
|
|
25
25
|
// implement command logic inside action handler
|
|
26
26
|
async (host, realm, user, password, options) => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
state.default.session.setTenant(host);
|
|
28
|
+
state.default.session.setRealm(realm);
|
|
29
|
+
state.default.session.setUsername(user);
|
|
30
|
+
state.default.session.setPassword(password);
|
|
31
|
+
state.default.session.setDeploymentType(options.type);
|
|
32
|
+
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
33
33
|
if (await getTokens()) {
|
|
34
|
-
|
|
35
|
-
`Listing journeys in realm "${
|
|
34
|
+
console.log(
|
|
35
|
+
`Listing journeys in realm "${state.default.session.getRealm()}"...`
|
|
36
36
|
);
|
|
37
37
|
listJourneys(options.long, options.analyze);
|
|
38
38
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { Authenticate, Journey, state } from '@rockcarver/frodo-lib';
|
|
2
3
|
import * as common from '../cmd_common.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import { printMessage } from '../../ops/utils/Console.js';
|
|
4
|
+
|
|
5
|
+
const { getTokens } = Authenticate;
|
|
6
|
+
const { prune } = Journey;
|
|
7
7
|
|
|
8
8
|
const program = new Command('frodo journey prune');
|
|
9
9
|
|
|
@@ -22,15 +22,15 @@ program
|
|
|
22
22
|
.action(
|
|
23
23
|
// implement command logic inside action handler
|
|
24
24
|
async (host, realm, user, password, options) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
state.default.session.setTenant(host);
|
|
26
|
+
state.default.session.setRealm(realm);
|
|
27
|
+
state.default.session.setUsername(user);
|
|
28
|
+
state.default.session.setPassword(password);
|
|
29
|
+
state.default.session.setDeploymentType(options.type);
|
|
30
|
+
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
31
31
|
if (await getTokens()) {
|
|
32
|
-
|
|
33
|
-
`Pruning orphaned configuration artifacts in realm "${
|
|
32
|
+
console.log(
|
|
33
|
+
`Pruning orphaned configuration artifacts in realm "${state.default.session.getRealm()}"...`
|
|
34
34
|
);
|
|
35
35
|
prune();
|
|
36
36
|
}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
1
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
Authenticate,
|
|
3
|
+
ConnectionProfile,
|
|
4
|
+
Log,
|
|
5
|
+
state,
|
|
6
|
+
} from '@rockcarver/frodo-lib';
|
|
7
|
+
import { Command } from 'commander';
|
|
7
8
|
import * as common from '../cmd_common.js';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
|
|
10
|
+
const { provisionCreds, getLogSources } = Log;
|
|
11
|
+
const { getConnectionProfile, saveConnectionProfile } = ConnectionProfile;
|
|
12
|
+
const { getTokens } = Authenticate;
|
|
11
13
|
|
|
12
14
|
const program = new Command('frodo journey list');
|
|
13
15
|
program
|
|
@@ -19,53 +21,56 @@ program
|
|
|
19
21
|
.addOption(common.insecureOption)
|
|
20
22
|
.action(async (host, user, password, options) => {
|
|
21
23
|
let credsFromParameters = true;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
state.default.session.setTenant(host);
|
|
25
|
+
state.default.session.setUsername(user);
|
|
26
|
+
state.default.session.setPassword(password);
|
|
27
|
+
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
28
|
+
console.log('Listing available ID Cloud log sources...');
|
|
27
29
|
const conn = await getConnectionProfile();
|
|
28
|
-
|
|
30
|
+
state.default.session.setTenant(conn.tenant);
|
|
29
31
|
if (conn.key != null && conn.secret != null) {
|
|
30
32
|
credsFromParameters = false;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
state.default.session.setLogApiKey(conn.key);
|
|
34
|
+
state.default.session.setLogApiSecret(conn.secret);
|
|
33
35
|
} else {
|
|
34
36
|
if (conn.username == null && conn.password == null) {
|
|
35
|
-
if (
|
|
37
|
+
if (
|
|
38
|
+
!state.default.session.getUsername() &&
|
|
39
|
+
!state.default.session.getPassword()
|
|
40
|
+
) {
|
|
36
41
|
credsFromParameters = false;
|
|
37
|
-
|
|
42
|
+
console.log(
|
|
38
43
|
'User credentials not specified as parameters and no saved API key and secret found!',
|
|
39
44
|
'warn'
|
|
40
45
|
);
|
|
41
46
|
return;
|
|
42
47
|
}
|
|
43
48
|
} else {
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
state.default.session.setUsername(conn.username);
|
|
50
|
+
state.default.session.setPassword(conn.password);
|
|
46
51
|
}
|
|
47
52
|
if (await getTokens()) {
|
|
48
53
|
const creds = await provisionCreds();
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
state.default.session.setLogApiKey(creds.api_key_id);
|
|
55
|
+
state.default.session.setLogApiSecret(creds.api_key_secret);
|
|
51
56
|
}
|
|
52
57
|
}
|
|
53
58
|
|
|
54
59
|
const sources = await getLogSources();
|
|
55
60
|
if (sources.length === 0) {
|
|
56
|
-
|
|
61
|
+
console.log(
|
|
57
62
|
"Can't get sources, possible cause - wrong API key or secret",
|
|
58
63
|
'error'
|
|
59
64
|
);
|
|
60
65
|
} else {
|
|
61
66
|
if (credsFromParameters) await saveConnectionProfile(); // save new values if they were specified on CLI
|
|
62
|
-
|
|
67
|
+
console.log('Available log sources:');
|
|
63
68
|
sources.forEach((source) => {
|
|
64
|
-
|
|
69
|
+
console.log(`${source}`, 'info');
|
|
65
70
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
console.log('You can use any combination of comma separated sources.');
|
|
72
|
+
console.log('For example:');
|
|
73
|
+
console.log(`$ frodo logs tail -c am-core,idm-core ${host}`, 'info');
|
|
69
74
|
}
|
|
70
75
|
});
|
|
71
76
|
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { Command, Option } from 'commander';
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Authenticate,
|
|
4
|
+
ConnectionProfile,
|
|
5
|
+
Log,
|
|
6
|
+
state,
|
|
7
|
+
} from '@rockcarver/frodo-lib';
|
|
7
8
|
import * as common from '../cmd_common.js';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
|
|
10
|
+
const { provisionCreds, tailLogs, resolveLevel } = Log;
|
|
11
|
+
const { getConnectionProfile, saveConnectionProfile } = ConnectionProfile;
|
|
12
|
+
const { getTokens } = Authenticate;
|
|
12
13
|
|
|
13
14
|
const program = new Command('frodo journey tail');
|
|
14
15
|
program
|
|
@@ -34,37 +35,40 @@ Following values are possible (values on the same line are equivalent): \
|
|
|
34
35
|
)
|
|
35
36
|
.action(async (host, user, password, options, command) => {
|
|
36
37
|
let credsFromParameters = true;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
state.default.session.setTenant(host);
|
|
39
|
+
state.default.session.setUsername(user);
|
|
40
|
+
state.default.session.setPassword(password);
|
|
41
|
+
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
41
42
|
const conn = await getConnectionProfile();
|
|
42
|
-
|
|
43
|
+
state.default.session.setTenant(conn.tenant);
|
|
43
44
|
if (conn.key != null && conn.secret != null) {
|
|
44
45
|
credsFromParameters = false;
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
state.default.session.setLogApiKey(conn.key);
|
|
47
|
+
state.default.session.setLogApiSecret(conn.secret);
|
|
47
48
|
} else {
|
|
48
49
|
if (conn.username == null && conn.password == null) {
|
|
49
|
-
if (
|
|
50
|
+
if (
|
|
51
|
+
!state.default.session.getUsername() &&
|
|
52
|
+
!state.default.session.getPassword()
|
|
53
|
+
) {
|
|
50
54
|
credsFromParameters = false;
|
|
51
|
-
|
|
55
|
+
console.log(
|
|
52
56
|
'User credentials not specified as parameters and no saved API key and secret found!',
|
|
53
57
|
'warn'
|
|
54
58
|
);
|
|
55
59
|
return;
|
|
56
60
|
}
|
|
57
61
|
} else {
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
state.default.session.setUsername(conn.username);
|
|
63
|
+
state.default.session.setPassword(conn.password);
|
|
60
64
|
}
|
|
61
65
|
if (await getTokens()) {
|
|
62
66
|
const creds = await provisionCreds();
|
|
63
|
-
|
|
64
|
-
|
|
67
|
+
state.default.session.setLogApiKey(creds.api_key_id);
|
|
68
|
+
state.default.session.setLogApiSecret(creds.api_key_secret);
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
|
-
|
|
71
|
+
console.log(
|
|
68
72
|
`Tailing ID Cloud logs from the following sources: ${
|
|
69
73
|
command.opts().sources
|
|
70
74
|
} and levels [${resolveLevel(command.opts().level)}]...`
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Command, Option } from 'commander';
|
|
2
|
+
import { Authenticate, Realm, state } from '@rockcarver/frodo-lib';
|
|
2
3
|
import * as common from '../cmd_common.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import { addCustomDomain } from '../../ops/RealmOps.js';
|
|
4
|
+
|
|
5
|
+
const { getTokens } = Authenticate;
|
|
6
|
+
const { addCustomDomain } = Realm;
|
|
7
7
|
|
|
8
8
|
const program = new Command('frodo realm add-custom-domain');
|
|
9
9
|
|
|
@@ -26,19 +26,19 @@ program
|
|
|
26
26
|
.action(
|
|
27
27
|
// implement command logic inside action handler
|
|
28
28
|
async (host, realm, user, password, options) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
state.default.session.setTenant(host);
|
|
30
|
+
state.default.session.setRealm(realm);
|
|
31
|
+
state.default.session.setUsername(user);
|
|
32
|
+
state.default.session.setPassword(password);
|
|
33
|
+
state.default.session.setDeploymentType(options.type);
|
|
34
|
+
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
35
35
|
if (await getTokens()) {
|
|
36
|
-
|
|
36
|
+
console.log(
|
|
37
37
|
`Adding custom DNS domain ${
|
|
38
38
|
options.domain
|
|
39
|
-
} to realm ${
|
|
39
|
+
} to realm ${state.default.session.getRealm()}...`
|
|
40
40
|
);
|
|
41
|
-
await addCustomDomain(
|
|
41
|
+
await addCustomDomain(state.default.session.getRealm(), options.domain);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
// end command logic inside action handler
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { Authenticate, Realm, Utils, state } from '@rockcarver/frodo-lib';
|
|
2
3
|
import * as common from '../cmd_common.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import { getRealmName } from '../../api/utils/ApiUtils.js';
|
|
4
|
+
|
|
5
|
+
const { getRealmName } = Utils;
|
|
6
|
+
const { getTokens } = Authenticate;
|
|
7
|
+
const { describe } = Realm;
|
|
8
8
|
|
|
9
9
|
const program = new Command('frodo realm describe');
|
|
10
10
|
|
|
@@ -21,17 +21,17 @@ program
|
|
|
21
21
|
.action(
|
|
22
22
|
// implement command logic inside action handler
|
|
23
23
|
async (host, realm, user, password, options) => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
state.default.session.setTenant(host);
|
|
25
|
+
state.default.session.setRealm(realm);
|
|
26
|
+
state.default.session.setUsername(user);
|
|
27
|
+
state.default.session.setPassword(password);
|
|
28
|
+
state.default.session.setDeploymentType(options.type);
|
|
29
|
+
state.default.session.setAllowInsecureConnection(options.insecure);
|
|
30
30
|
if (await getTokens()) {
|
|
31
|
-
|
|
32
|
-
`Retrieving details of realm ${
|
|
31
|
+
console.log(
|
|
32
|
+
`Retrieving details of realm ${state.default.session.getRealm()}...`
|
|
33
33
|
);
|
|
34
|
-
describe(getRealmName(
|
|
34
|
+
describe(getRealmName(state.default.session.getRealm()));
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
// end command logic inside action handler
|