@sw-tsdk/plugin-connector 3.9.2 → 3.11.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/README.md +84 -35
- package/lib/commands/action/run/local.js +1 -1
- package/lib/commands/action/run/local.js.map +1 -1
- package/lib/commands/connector/create/openapi.js +48 -30
- package/lib/commands/connector/create/openapi.js.map +1 -1
- package/lib/commands/migrator/convert.d.ts +25 -0
- package/lib/commands/migrator/convert.js +224 -0
- package/lib/commands/migrator/convert.js.map +1 -0
- package/lib/commands/migrator/export.d.ts +13 -0
- package/lib/commands/migrator/export.js +121 -0
- package/lib/commands/migrator/export.js.map +1 -0
- package/lib/common.js +1 -0
- package/lib/common.js.map +1 -1
- package/lib/templates/migrator-runners/image.png +0 -0
- package/lib/templates/migrator-runners/plugin_override.txt +34 -0
- package/lib/templates/migrator-runners/runner_override.txt +22 -0
- package/lib/templates/migrator-runners/script_override.txt +31 -0
- package/lib/templates/python_312_definition/template/connector/config/actions/example.yaml +40 -0
- package/lib/templates/python_312_definition/template/connector/config/assets/example.yaml +27 -0
- package/lib/templates/python_312_definition/template/data/asset.json +1 -0
- package/lib/templates/python_312_definition/template/docs/CHANGELOG.md.t +7 -0
- package/lib/templates/python_312_definition/template/docs/README.md +38 -0
- package/lib/templates/python_312_definition/template/requirements.txt +0 -0
- package/lib/templates/python_312_definition/template_src/connector/config/actions/example.yaml +40 -0
- package/lib/templates/python_312_definition/template_src/connector/config/assets/example.yaml +27 -0
- package/lib/templates/python_312_definition/template_src/connector/src/runner_override.py +11 -0
- package/lib/templates/python_312_definition/template_src/data/asset.json +1 -0
- package/lib/templates/python_312_definition/template_src/docs/CHANGELOG.md.t +7 -0
- package/lib/templates/python_312_definition/template_src/docs/README.md +38 -0
- package/lib/templates/python_312_definition/template_src/requirements.txt +0 -0
- package/lib/transformers/base-transformer.d.ts +6 -0
- package/lib/transformers/base-transformer.js +54 -0
- package/lib/transformers/base-transformer.js.map +1 -0
- package/lib/transformers/connector-generator.d.ts +18 -0
- package/lib/transformers/connector-generator.js +327 -0
- package/lib/transformers/connector-generator.js.map +1 -0
- package/lib/transformers/forked-plugin-transformer.d.ts +4 -0
- package/lib/transformers/forked-plugin-transformer.js +16 -0
- package/lib/transformers/forked-plugin-transformer.js.map +1 -0
- package/lib/transformers/index.d.ts +3 -0
- package/lib/transformers/index.js +17 -0
- package/lib/transformers/index.js.map +1 -0
- package/lib/transformers/script-transformer.d.ts +5 -0
- package/lib/transformers/script-transformer.js +16 -0
- package/lib/transformers/script-transformer.js.map +1 -0
- package/lib/types/migrator-types.d.ts +59 -0
- package/lib/types/migrator-types.js +18 -0
- package/lib/types/migrator-types.js.map +1 -0
- package/oclif.manifest.json +133 -2
- package/package.json +13 -6
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Base } from '@sw-tsdk/core';
|
|
2
|
+
export declare class Migrate extends Base {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
fromDirectory: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
6
|
+
toDirectory: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
vendor: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
product: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
author: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
11
|
+
authorEmail: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
12
|
+
homepage: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
13
|
+
help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
|
|
14
|
+
};
|
|
15
|
+
private processTaskFiles;
|
|
16
|
+
/**
|
|
17
|
+
* Returns an array of AppTasks where each item is (pythonFolder + application),
|
|
18
|
+
* containing an array of .json files in that application's tasks folder.
|
|
19
|
+
* Basically, each array item is a different connector
|
|
20
|
+
*/
|
|
21
|
+
private collectJobs;
|
|
22
|
+
private extractImportsFromScript;
|
|
23
|
+
private decompressIfNeeded;
|
|
24
|
+
run(): Promise<void>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migrate = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@sw-tsdk/core");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const core_2 = require("@oclif/core");
|
|
9
|
+
const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
|
|
10
|
+
const connector_generator_1 = require("../../transformers/connector-generator");
|
|
11
|
+
const migrator_types_1 = require("../../types/migrator-types");
|
|
12
|
+
const transformers_1 = require("../../transformers");
|
|
13
|
+
const adm_zip_1 = tslib_1.__importDefault(require("adm-zip"));
|
|
14
|
+
class Migrate extends core_1.Base {
|
|
15
|
+
async processTaskFiles(taskFiles) {
|
|
16
|
+
const taskImports = new Set();
|
|
17
|
+
const importPromises = taskFiles.map(async (taskFile) => {
|
|
18
|
+
const pyFilePath = taskFile.replace('.json', '.py');
|
|
19
|
+
const scriptImports = await this.extractImportsFromScript(pyFilePath);
|
|
20
|
+
for (const importName of scriptImports)
|
|
21
|
+
taskImports.add(importName);
|
|
22
|
+
});
|
|
23
|
+
await Promise.all(importPromises);
|
|
24
|
+
return taskImports;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Returns an array of AppTasks where each item is (pythonFolder + application),
|
|
28
|
+
* containing an array of .json files in that application's tasks folder.
|
|
29
|
+
* Basically, each array item is a different connector
|
|
30
|
+
*/
|
|
31
|
+
async collectJobs(fromDirectory) {
|
|
32
|
+
const dirEntries = await node_fs_1.promises.readdir(fromDirectory, { withFileTypes: true });
|
|
33
|
+
if (dirEntries.some(d => d.isDirectory() && d.name === 'python3')) {
|
|
34
|
+
this.warn('Found python3 directory. This is not supported in turbine. Python 3.9 will be used instead.');
|
|
35
|
+
}
|
|
36
|
+
// Find python directories that match our pythonVersionMap
|
|
37
|
+
const validPythonDirs = dirEntries
|
|
38
|
+
.filter(d => d.isDirectory() && d.name in migrator_types_1.pythonVersionMap)
|
|
39
|
+
.map(d => d.name);
|
|
40
|
+
// each promise handles one python directory
|
|
41
|
+
const pythonDirPromises = validPythonDirs.map(async (pythonDirName) => {
|
|
42
|
+
const pythonDirPath = (0, node_path_1.join)(fromDirectory, pythonDirName);
|
|
43
|
+
const pythonDefinition = migrator_types_1.pythonVersionMap[pythonDirName];
|
|
44
|
+
// For each python dir, find subfolders applications
|
|
45
|
+
const appDirEntries = await node_fs_1.promises.readdir(pythonDirPath, { withFileTypes: true });
|
|
46
|
+
const appFolders = appDirEntries
|
|
47
|
+
.filter(f => f.isDirectory())
|
|
48
|
+
.map(f => f.name);
|
|
49
|
+
// Build a promise for each app folder
|
|
50
|
+
const appFolderPromises = appFolders.map(async (appFolderName) => {
|
|
51
|
+
const appFolderPath = (0, node_path_1.join)(pythonDirPath, appFolderName);
|
|
52
|
+
// read the plugin name
|
|
53
|
+
const appInfoPath = (0, node_path_1.join)(appFolderPath, 'applicationInfo.json');
|
|
54
|
+
let connectorName = 'Unnamed Connector';
|
|
55
|
+
try {
|
|
56
|
+
const rawInfo = await node_fs_1.promises.readFile(appInfoPath, 'utf8');
|
|
57
|
+
const info = JSON.parse(rawInfo);
|
|
58
|
+
if (info?.name) {
|
|
59
|
+
connectorName = info.name;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
this.warn(`Could not read application info: ${appInfoPath}`);
|
|
64
|
+
}
|
|
65
|
+
const tasksFolder = (0, node_path_1.join)(appFolderPath, 'tasks');
|
|
66
|
+
let taskFiles = [];
|
|
67
|
+
const taskImports = new Set();
|
|
68
|
+
try {
|
|
69
|
+
const allTaskFiles = await node_fs_1.promises.readdir(tasksFolder);
|
|
70
|
+
taskFiles = allTaskFiles
|
|
71
|
+
.filter(file => file.endsWith('.json'))
|
|
72
|
+
.map(file => (0, node_path_1.join)(tasksFolder, file));
|
|
73
|
+
const scriptImportLists = await Promise.all(taskFiles.map(async (taskFile) => {
|
|
74
|
+
const pyFilePath = taskFile.replace('.json', '.py');
|
|
75
|
+
const scriptImports = await this.extractImportsFromScript(pyFilePath);
|
|
76
|
+
return Array.isArray(scriptImports) ? scriptImports : [];
|
|
77
|
+
}));
|
|
78
|
+
for (const scriptImports of scriptImportLists) {
|
|
79
|
+
for (const importName of scriptImports) {
|
|
80
|
+
taskImports.add(importName);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
this.warn(`Could not read tasks folder: ${tasksFolder}`);
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
pythonDirName,
|
|
89
|
+
pythonDefinition,
|
|
90
|
+
appFolderPath,
|
|
91
|
+
connectorName,
|
|
92
|
+
taskFilePaths: taskFiles,
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
const appResults = await Promise.all(appFolderPromises);
|
|
96
|
+
return appResults;
|
|
97
|
+
});
|
|
98
|
+
const nestedAppTasks = await Promise.all(pythonDirPromises);
|
|
99
|
+
return nestedAppTasks.flat();
|
|
100
|
+
}
|
|
101
|
+
async extractImportsFromScript(pyFilePath) {
|
|
102
|
+
const usedPackages = new Set();
|
|
103
|
+
try {
|
|
104
|
+
const content = await node_fs_1.promises.readFile(pyFilePath, 'utf8');
|
|
105
|
+
// `import X` and `from X import Y`
|
|
106
|
+
const importMatches = content.matchAll(/(?:from|import) (\w+)/g);
|
|
107
|
+
for (const match of importMatches) {
|
|
108
|
+
usedPackages.add(match[1]);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
this.warn(`Could not extract imports from: ${pyFilePath}`);
|
|
113
|
+
}
|
|
114
|
+
return usedPackages;
|
|
115
|
+
}
|
|
116
|
+
async decompressIfNeeded(fromDirectory) {
|
|
117
|
+
if (fromDirectory.endsWith('.zip')) {
|
|
118
|
+
const extractPath = fromDirectory.replace(/\.zip$/, '');
|
|
119
|
+
this.log(`Extracting zip file to: ${extractPath}`);
|
|
120
|
+
const zip = new adm_zip_1.default(fromDirectory);
|
|
121
|
+
zip.extractAllTo(extractPath, true);
|
|
122
|
+
return extractPath;
|
|
123
|
+
}
|
|
124
|
+
return fromDirectory;
|
|
125
|
+
}
|
|
126
|
+
async run() {
|
|
127
|
+
const { flags } = await this.parse(Migrate);
|
|
128
|
+
const masterQuestions = [
|
|
129
|
+
{
|
|
130
|
+
type: 'input',
|
|
131
|
+
name: 'vendor',
|
|
132
|
+
message: 'Vendor (e.g. Swimlane)',
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'input',
|
|
136
|
+
name: 'product',
|
|
137
|
+
message: 'Product (e.g. Turbine)',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
type: 'input',
|
|
141
|
+
name: 'description',
|
|
142
|
+
message: 'Description (e.g. Turbine exporter)',
|
|
143
|
+
},
|
|
144
|
+
];
|
|
145
|
+
const filteredQuestions = masterQuestions.filter(q => !flags[q.name]);
|
|
146
|
+
const answers = Object.assign(await inquirer_1.default.prompt(filteredQuestions), flags);
|
|
147
|
+
let { fromDirectory, toDirectory } = flags;
|
|
148
|
+
fromDirectory = (0, node_path_1.resolve)(fromDirectory || process.cwd());
|
|
149
|
+
toDirectory = (0, node_path_1.resolve)(toDirectory || process.cwd());
|
|
150
|
+
fromDirectory = await this.decompressIfNeeded(fromDirectory);
|
|
151
|
+
try {
|
|
152
|
+
await node_fs_1.promises.access(fromDirectory);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
this.error(`Could not access: ${fromDirectory}`);
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
await node_fs_1.promises.mkdir(toDirectory, { recursive: true });
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
this.error(`Could not access or create: ${toDirectory}`);
|
|
162
|
+
}
|
|
163
|
+
const groupedAppTasks = await this.collectJobs(fromDirectory);
|
|
164
|
+
const groupPromises = groupedAppTasks.map(async (group) => {
|
|
165
|
+
this.log(`\nProcessing [${group.pythonDirName}] / [${group.connectorName}]`);
|
|
166
|
+
this.log(`Found ${group.taskFilePaths.length} task file(s) in: ${group.appFolderPath}`);
|
|
167
|
+
const connectorToDir = (0, node_path_1.join)(toDirectory, group.connectorName.replaceAll(' ', '_').toLowerCase());
|
|
168
|
+
await connector_generator_1.ConnectorGenerator.generateBaseStructure(connectorToDir);
|
|
169
|
+
await connector_generator_1.ConnectorGenerator.generateLogo(connectorToDir);
|
|
170
|
+
await connector_generator_1.ConnectorGenerator.generateConnectorManifest(answers, group, connectorToDir);
|
|
171
|
+
await connector_generator_1.ConnectorGenerator.generateRunnerOverride(connectorToDir);
|
|
172
|
+
const taskPromises = group.taskFilePaths.map(async (taskFilePath) => {
|
|
173
|
+
const initializedConnectors = new Set();
|
|
174
|
+
const content = await node_fs_1.promises.readFile(taskFilePath, 'utf8');
|
|
175
|
+
let fileJson;
|
|
176
|
+
try {
|
|
177
|
+
fileJson = JSON.parse(content);
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
this.log(`Could not parse JSON: ${taskFilePath}`);
|
|
181
|
+
}
|
|
182
|
+
const transformer = (0, transformers_1.getTransformer)(fileJson);
|
|
183
|
+
const transformationResult = transformer.transform(fileJson);
|
|
184
|
+
if (!transformer.scriptIsValid(transformationResult.script)) {
|
|
185
|
+
this.warn(`Found code that is not supported in turbine: ${taskFilePath}`);
|
|
186
|
+
}
|
|
187
|
+
transformationResult.connectorName = group.connectorName;
|
|
188
|
+
transformationResult.pythonDefinition = group.pythonDefinition;
|
|
189
|
+
if (transformationResult.type === 'forked-plugin' && !initializedConnectors.has(transformationResult.forkedName)) {
|
|
190
|
+
initializedConnectors.add(transformationResult.forkedName);
|
|
191
|
+
await connector_generator_1.ConnectorGenerator.initializeForkedPlugin(transformationResult, fromDirectory, connectorToDir);
|
|
192
|
+
}
|
|
193
|
+
await connector_generator_1.ConnectorGenerator.generateAction(transformationResult, connectorToDir);
|
|
194
|
+
await connector_generator_1.ConnectorGenerator.generateActionConfig(transformationResult, connectorToDir);
|
|
195
|
+
});
|
|
196
|
+
await Promise.all(taskPromises);
|
|
197
|
+
});
|
|
198
|
+
await Promise.all(groupPromises);
|
|
199
|
+
this.log(`\nDone processing. Converted files at: ${toDirectory}`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
exports.Migrate = Migrate;
|
|
203
|
+
Migrate.description = 'Convert scripts and forked plugins from Swimlane V10x to connectors.';
|
|
204
|
+
Migrate.flags = {
|
|
205
|
+
...core_1.Base.flags,
|
|
206
|
+
fromDirectory: core_2.Flags.string({
|
|
207
|
+
char: 'f',
|
|
208
|
+
description: 'Root directory of the 10X export.',
|
|
209
|
+
default: './',
|
|
210
|
+
}),
|
|
211
|
+
toDirectory: core_2.Flags.string({
|
|
212
|
+
char: 't',
|
|
213
|
+
description: 'Root directory of the destination repository.',
|
|
214
|
+
default: './connectors',
|
|
215
|
+
}),
|
|
216
|
+
vendor: core_2.Flags.string({ description: 'Vendor (e.g. CrowdStrike)' }),
|
|
217
|
+
product: core_2.Flags.string({ description: 'Product (e.g. Falcon)' }),
|
|
218
|
+
description: core_2.Flags.string({ description: 'Description (e.g. CrowdStrike Host Query API)' }),
|
|
219
|
+
author: core_2.Flags.string({ description: 'Connector Author' }),
|
|
220
|
+
authorEmail: core_2.Flags.string({ description: 'Connector Author Email' }),
|
|
221
|
+
homepage: core_2.Flags.string({ description: 'Connector Author Support URL' }),
|
|
222
|
+
help: core_2.Flags.help({ char: 'h' }),
|
|
223
|
+
};
|
|
224
|
+
//# sourceMappingURL=convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/commands/migrator/convert.ts"],"names":[],"mappings":";;;;AAAA,wCAAkC;AAClC,qCAAgC;AAChC,yCAAuC;AACvC,sCAAiC;AACjC,gEAA+B;AAC/B,gFAAyE;AACzE,+DAA+F;AAC/F,qDAAiD;AACjD,8DAA4B;AAE5B,MAAa,OAAQ,SAAQ,WAAI;IAwBvB,KAAK,CAAC,gBAAgB,CAAC,SAAmB;QAChD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;QAErC,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;YACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YACnD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAA;YACrE,KAAK,MAAM,UAAU,IAAI,aAAa;gBAAE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACrE,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACjC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,WAAW,CAAC,aAAqB;QAC7C,MAAM,UAAU,GAAG,MAAM,kBAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAA;QAE/E,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;YACjE,IAAI,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAA;SACzG;QAED,0DAA0D;QAC1D,MAAM,eAAe,GAAG,UAAU;aACjC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,iCAAgB,CAAC;aAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAqC,CAAC,CAAA;QAElD,4CAA4C;QAC5C,MAAM,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,EAAC,aAAa,EAAC,EAAE;YAClE,MAAM,aAAa,GAAG,IAAA,gBAAI,EAAC,aAAa,EAAE,aAAa,CAAC,CAAA;YACxD,MAAM,gBAAgB,GAAG,iCAAgB,CAAC,aAAa,CAAC,CAAA;YAExD,oDAAoD;YACpD,MAAM,aAAa,GAAG,MAAM,kBAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAA;YAClF,MAAM,UAAU,GAAG,aAAa;iBAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;iBAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAEjB,sCAAsC;YACtC,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAC,aAAa,EAAC,EAAE;gBAC7D,MAAM,aAAa,GAAG,IAAA,gBAAI,EAAC,aAAa,EAAE,aAAa,CAAC,CAAA;gBAExD,uBAAuB;gBACvB,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,aAAa,EAAE,sBAAsB,CAAC,CAAA;gBAE/D,IAAI,aAAa,GAAG,mBAAmB,CAAA;gBACvC,IAAI;oBACF,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;oBAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBAChC,IAAI,IAAI,EAAE,IAAI,EAAE;wBACd,aAAa,GAAG,IAAI,CAAC,IAAI,CAAA;qBAC1B;iBACF;gBAAC,MAAM;oBACN,IAAI,CAAC,IAAI,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAA;iBAC7D;gBAED,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,aAAa,EAAE,OAAO,CAAC,CAAA;gBAChD,IAAI,SAAS,GAAa,EAAE,CAAA;gBAC5B,MAAM,WAAW,GAAgB,IAAI,GAAG,EAAE,CAAA;gBAC1C,IAAI;oBACF,MAAM,YAAY,GAAG,MAAM,kBAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;oBACxD,SAAS,GAAG,YAAY;yBACvB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;yBACtC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,gBAAI,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAA;oBACrC,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACzC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;wBAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;wBACnD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAA;wBACrE,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;oBAC1D,CAAC,CAAC,CACH,CAAA;oBACD,KAAK,MAAM,aAAa,IAAI,iBAAiB,EAAE;wBAC7C,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE;4BACtC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;yBAC5B;qBACF;iBACF;gBAAC,MAAM;oBACN,IAAI,CAAC,IAAI,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAA;iBACzD;gBAED,OAAO;oBACL,aAAa;oBACb,gBAAgB;oBAChB,aAAa;oBACb,aAAa;oBACb,aAAa,EAAE,SAAS;iBACzB,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YACvD,OAAO,UAAU,CAAA;QACnB,CAAC,CAAC,CAAA;QAEF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC3D,OAAO,cAAc,CAAC,IAAI,EAAE,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,UAAkB;QACvD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;QAEtC,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAE3D,mCAAmC;YACnC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAA;YAChE,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;gBACjC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;aAC3B;SACF;QAAC,MAAM;YACN,IAAI,CAAC,IAAI,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAA;SAC3D;QAED,OAAO,YAAY,CAAA;IACrB,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,aAAqB;QACpD,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAClC,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YACvD,IAAI,CAAC,GAAG,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAA;YAClD,MAAM,GAAG,GAAG,IAAI,iBAAM,CAAC,aAAa,CAAC,CAAA;YACrC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;YACnC,OAAO,WAAW,CAAA;SACnB;QAED,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEzC,MAAM,eAAe,GAAG;YACtB;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,wBAAwB;aAClC;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,wBAAwB;aAClC;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,qCAAqC;aAC/C;SACF,CAAA;QACD,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,KAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9F,MAAM,OAAO,GAA6B,MAAM,CAAC,MAAM,CAAC,MAAM,kBAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,CAAA;QAExG,IAAI,EAAC,aAAa,EAAE,WAAW,EAAC,GAAG,KAAK,CAAA;QACxC,aAAa,GAAG,IAAA,mBAAO,EAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACvD,WAAW,GAAG,IAAA,mBAAO,EAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAEnD,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;QAE5D,IAAI;YACF,MAAM,kBAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;SACrC;QAAC,MAAM;YACN,IAAI,CAAC,KAAK,CAAC,qBAAqB,aAAa,EAAE,CAAC,CAAA;SACjD;QAED,IAAI;YACF,MAAM,kBAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;SACrD;QAAC,MAAM;YACN,IAAI,CAAC,KAAK,CAAC,+BAA+B,WAAW,EAAE,CAAC,CAAA;SACzD;QAED,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;QAE7D,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;YACtD,IAAI,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,aAAa,QAAQ,KAAK,CAAC,aAAa,GAAG,CAAC,CAAA;YAC5E,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,MAAM,qBAAqB,KAAK,CAAC,aAAa,EAAE,CAAC,CAAA;YAEvF,MAAM,cAAc,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;YAChG,MAAM,wCAAkB,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAA;YAC9D,MAAM,wCAAkB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;YACrD,MAAM,wCAAkB,CAAC,yBAAyB,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;YAClF,MAAM,wCAAkB,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;YAE/D,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAC,YAAY,EAAC,EAAE;gBAChE,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAA;gBAC/C,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;gBAC7D,IAAI,QAAQ,CAAA;gBACZ,IAAI;oBACF,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;iBAC/B;gBAAC,MAAM;oBACN,IAAI,CAAC,GAAG,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAA;iBAClD;gBAED,MAAM,WAAW,GAAG,IAAA,6BAAc,EAAC,QAAQ,CAAC,CAAA;gBAC5C,MAAM,oBAAoB,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;gBAC5D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE;oBAC3D,IAAI,CAAC,IAAI,CAAC,gDAAgD,YAAY,EAAE,CAAC,CAAA;iBAC1E;gBAED,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;gBACxD,oBAAoB,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAA;gBAC9D,IAAI,oBAAoB,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;oBAChH,qBAAqB,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAA;oBAC1D,MAAM,wCAAkB,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,CAAC,CAAA;iBACrG;gBAED,MAAM,wCAAkB,CAAC,cAAc,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;gBAC7E,MAAM,wCAAkB,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;YACrF,CAAC,CAAC,CAAA;YAEF,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAEhC,IAAI,CAAC,GAAG,CAAC,0CAA0C,WAAW,EAAE,CAAC,CAAA;IACnE,CAAC;;AAhPH,0BAiPC;AAhPQ,mBAAW,GAAG,sEAAsE,CAAC;AAErF,aAAK,GAAG;IACb,GAAG,WAAI,CAAC,KAAK;IACb,aAAa,EAAE,YAAK,CAAC,MAAM,CAAC;QAC1B,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,IAAI;KACd,CAAC;IACF,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,cAAc;KACxB,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,2BAA2B,EAAC,CAAC;IAChE,OAAO,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,uBAAuB,EAAC,CAAC;IAC7D,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,+CAA+C,EAAC,CAAC;IACzF,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,kBAAkB,EAAC,CAAC;IACvD,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,wBAAwB,EAAC,CAAC;IAClE,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,8BAA8B,EAAC,CAAC;IACrE,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC;CAC9B,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Base } from '@sw-tsdk/core';
|
|
2
|
+
export declare class Export extends Base {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
mongoConnectionString: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
6
|
+
databaseName: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
outputFile: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
tlsAllowInvalidCertificates: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
|
|
10
|
+
'log-level': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Export = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const core_2 = require("@sw-tsdk/core");
|
|
7
|
+
const inquirer_1 = require("inquirer");
|
|
8
|
+
const archiver_1 = tslib_1.__importDefault(require("archiver"));
|
|
9
|
+
const fs = tslib_1.__importStar(require("node:fs"));
|
|
10
|
+
const mongodb_1 = require("mongodb");
|
|
11
|
+
// noinspection JSUnusedGlobalSymbols
|
|
12
|
+
class Export extends core_2.Base {
|
|
13
|
+
async run() {
|
|
14
|
+
const { flags } = await this.parse(Export);
|
|
15
|
+
const { mongoConnectionString,
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
17
|
+
databaseName, outputFile, } = flags;
|
|
18
|
+
const answers = await (0, inquirer_1.prompt)([{
|
|
19
|
+
type: 'password',
|
|
20
|
+
name: 'mongoConnectionString',
|
|
21
|
+
message: 'Enter the connection string for the swimlane mongo instance',
|
|
22
|
+
when: () => !mongoConnectionString || mongoConnectionString.length === 0,
|
|
23
|
+
}, {
|
|
24
|
+
type: 'input',
|
|
25
|
+
name: 'outputFile',
|
|
26
|
+
message: 'enter output file name',
|
|
27
|
+
when: () => !outputFile || outputFile.length === 0,
|
|
28
|
+
}]);
|
|
29
|
+
const newConfig = Object.assign(flags, answers);
|
|
30
|
+
try {
|
|
31
|
+
const apps = {};
|
|
32
|
+
const archive = (0, archiver_1.default)('zip', {
|
|
33
|
+
zlib: { level: 9 }, // Sets the compression level.
|
|
34
|
+
});
|
|
35
|
+
const output = fs.createWriteStream(newConfig.outputFile);
|
|
36
|
+
archive.pipe(output);
|
|
37
|
+
const mongo = new mongodb_1.MongoClient(newConfig.mongoConnectionString, {
|
|
38
|
+
tlsAllowInvalidCertificates: newConfig.tlsAllowInvalidCertificates,
|
|
39
|
+
directConnection: true,
|
|
40
|
+
});
|
|
41
|
+
try {
|
|
42
|
+
core_1.ux.action.start('pulling tasks');
|
|
43
|
+
const db = mongo.db(newConfig.databaseName);
|
|
44
|
+
const appCollection = db.collection('Applications');
|
|
45
|
+
const appCursor = await appCollection.find();
|
|
46
|
+
for await (const doc of appCursor) {
|
|
47
|
+
const app = doc;
|
|
48
|
+
apps[app._id] = { name: app.Name };
|
|
49
|
+
}
|
|
50
|
+
const tasksColleciton = db.collection('Tasks');
|
|
51
|
+
const cursor = await tasksColleciton.find();
|
|
52
|
+
for await (const doc of cursor) {
|
|
53
|
+
// console.info(doc)
|
|
54
|
+
const task = doc;
|
|
55
|
+
if (task.Action.Descriptor.ActionType === 'python3' || task.Action.Descriptor.ActionType === 'python312') {
|
|
56
|
+
await archive.append(task?.ApplicationId ? JSON.stringify(apps[task.ApplicationId]) : '{"name": "common"}', { name: `${task.Action.Descriptor.ActionType}/${task?.ApplicationId || 'common'}/applicationInfo.json` });
|
|
57
|
+
await archive.append(JSON.stringify(task), { name: `${task.Action.Descriptor.ActionType}/${task?.ApplicationId || 'common'}/tasks/${task.Action.Descriptor._id}.json` });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
core_1.ux.action.stop();
|
|
61
|
+
core_1.ux.action.start('pulling plugins');
|
|
62
|
+
const bucket = new mongodb_1.GridFSBucket(db);
|
|
63
|
+
const packages = await bucket.find({ 'metadata.FileType': 'SwimBundle' });
|
|
64
|
+
const packageFiles = await packages.toArray();
|
|
65
|
+
for (const doc of packageFiles) {
|
|
66
|
+
const filestream = bucket.openDownloadStream(doc._id);
|
|
67
|
+
archive.append(filestream, { name: `packages/${doc.filename}.zip` });
|
|
68
|
+
}
|
|
69
|
+
core_1.ux.action.stop();
|
|
70
|
+
core_1.ux.action.start('pulling pip packages');
|
|
71
|
+
const pipPackages = db.collection('PipPackages');
|
|
72
|
+
const pipCursor = await pipPackages.find();
|
|
73
|
+
let requirements37 = '';
|
|
74
|
+
let requirements312 = '';
|
|
75
|
+
for await (const doc of pipCursor) {
|
|
76
|
+
const pipPackage = doc;
|
|
77
|
+
if (pipPackage.Name === 'swimlane') {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (pipPackage.PythonVersionLabel === '3.7') {
|
|
81
|
+
requirements37 += `${pipPackage.Name}==${pipPackage.Version}\n`;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
requirements312 += `${pipPackage.Name}==${pipPackage.Version}\n`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (requirements37) {
|
|
88
|
+
await archive.append(requirements37, { name: 'python3/requirements.txt' });
|
|
89
|
+
}
|
|
90
|
+
if (requirements312) {
|
|
91
|
+
await archive.append(requirements312, { name: 'python312/requirements.txt' });
|
|
92
|
+
}
|
|
93
|
+
core_1.ux.action.stop();
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
core_1.ux.action.start('creating archive');
|
|
97
|
+
await archive.finalize();
|
|
98
|
+
core_1.ux.action.stop();
|
|
99
|
+
await mongo.close();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error(error);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.Export = Export;
|
|
108
|
+
Export.description = 'Use to export python scripts from a Swimlane instance';
|
|
109
|
+
Export.flags = {
|
|
110
|
+
...core_2.Base.BaseFlags,
|
|
111
|
+
mongoConnectionString: core_1.Flags.string({ char: 'c', description: 'Mongo Connection String', default: '' }),
|
|
112
|
+
databaseName: core_1.Flags.string({ char: 'd', description: 'Database Name', default: 'Swimlane' }),
|
|
113
|
+
outputFile: core_1.Flags.string({ char: 'o', description: 'Output file', default: 'scripts.zip' }),
|
|
114
|
+
tlsAllowInvalidCertificates: core_1.Flags.boolean({
|
|
115
|
+
char: 'i',
|
|
116
|
+
description: 'Allow invalid certificates',
|
|
117
|
+
default: false,
|
|
118
|
+
}),
|
|
119
|
+
help: core_1.Flags.help({ char: 'h' }),
|
|
120
|
+
};
|
|
121
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/migrator/export.ts"],"names":[],"mappings":"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"}
|
package/lib/common.js
CHANGED
package/lib/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from src.runner_override import RunnerOverride as RO
|
|
2
|
+
from src.runner_override import SwimlaneContext
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class RunnerOverride(RO):
|
|
6
|
+
|
|
7
|
+
def __init__(self, asset, asset_schema, http_proxy):
|
|
8
|
+
# Initialise asset and proxies
|
|
9
|
+
super().__init__(asset, asset_schema, http_proxy)
|
|
10
|
+
|
|
11
|
+
def run(self, inputs, action_schema):
|
|
12
|
+
sw_context = SwimlaneContext(asset=self.asset, asset_schema=self.asset_schema,
|
|
13
|
+
http_proxy=self.http_proxy, inputs=inputs)
|
|
14
|
+
|
|
15
|
+
plugin_instance = SwMain(sw_context)
|
|
16
|
+
plugin_response = plugin_instance.execute()
|
|
17
|
+
|
|
18
|
+
if isinstance(plugin_response, dict):
|
|
19
|
+
return plugin_response # Already a dictionary
|
|
20
|
+
|
|
21
|
+
elif isinstance(plugin_response, list):
|
|
22
|
+
return {"plugin_output": plugin_response} # Wrap in a dictionary
|
|
23
|
+
|
|
24
|
+
elif plugin_response is None:
|
|
25
|
+
return {"plugin_output": None} # Handle None case explicitly
|
|
26
|
+
else:
|
|
27
|
+
return {"plugin_output": plugin_response} # Wrap other types in a dictionary
|
|
28
|
+
return plugin_response
|
|
29
|
+
|
|
30
|
+
# IMPORTED CODE BELOW
|
|
31
|
+
# HERE
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# END OF IMPORTED CODE
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class SwimlaneContext:
|
|
2
|
+
"""Mimics the 10x context object used in plugins and scripts"""
|
|
3
|
+
|
|
4
|
+
def __init__(self, asset, asset_schema, http_proxy, inputs):
|
|
5
|
+
self.asset = asset
|
|
6
|
+
self.asset_schema = asset_schema
|
|
7
|
+
self.http_proxy = http_proxy
|
|
8
|
+
self.inputs = inputs
|
|
9
|
+
# We purposefully do not include the sw_context.config object here as it is not supported
|
|
10
|
+
|
|
11
|
+
class Authenticate:
|
|
12
|
+
def __init__(self, asset, asset_schema, http_proxy):
|
|
13
|
+
# 10x forks or scripts are standalone and do not use any of this logic
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class RunnerOverride(Authenticate):
|
|
18
|
+
def __init__(self, asset, asset_schema, http_proxy):
|
|
19
|
+
super().__init__(asset, asset_schema, http_proxy)
|
|
20
|
+
self.asset = asset
|
|
21
|
+
self.asset_schema = asset_schema
|
|
22
|
+
self.http_proxy = http_proxy
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from src.runner_override import RunnerOverride as RO
|
|
2
|
+
from src.runner_override import SwimlaneContext
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class RunnerOverride(RO):
|
|
6
|
+
|
|
7
|
+
def __init__(self, asset, asset_schema, http_proxy):
|
|
8
|
+
# Initialise asset and proxies
|
|
9
|
+
super().__init__(asset, asset_schema, http_proxy)
|
|
10
|
+
|
|
11
|
+
def run(self, inputs, action_schema):
|
|
12
|
+
sw_context = SwimlaneContext(asset=self.asset, asset_schema=self.asset_schema,
|
|
13
|
+
http_proxy=self.http_proxy, inputs=inputs)
|
|
14
|
+
sw_outputs = None
|
|
15
|
+
|
|
16
|
+
# IMPORTED CODE BELOW
|
|
17
|
+
# HERE
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# END OF IMPORTED CODE
|
|
21
|
+
if isinstance(sw_outputs, dict):
|
|
22
|
+
return sw_outputs # Already a dictionary
|
|
23
|
+
|
|
24
|
+
elif isinstance(sw_outputs, list):
|
|
25
|
+
return {"list_output": sw_outputs} # Wrap in a dictionary
|
|
26
|
+
|
|
27
|
+
elif sw_outputs is None:
|
|
28
|
+
return {"output": None} # Handle None case explicitly
|
|
29
|
+
|
|
30
|
+
else:
|
|
31
|
+
return {"output": sw_outputs} # Wrap other types in a dictionary
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# THIS IS AN EXAMPLE, PLEASE USE THE SDK TO CREATE A NEW ACTION and DELETE
|
|
2
|
+
name: action_name
|
|
3
|
+
schema: action/1
|
|
4
|
+
title: ''
|
|
5
|
+
description: ''
|
|
6
|
+
inputs: # Use the SDK to autogenerate the inputs, can be 'object' or 'array' type.
|
|
7
|
+
type: object
|
|
8
|
+
properties: # the following are used for definition runner.
|
|
9
|
+
path_parameters: # remove if path parameters are not needed.
|
|
10
|
+
type: object
|
|
11
|
+
description: Path Parameters
|
|
12
|
+
properties:
|
|
13
|
+
required:
|
|
14
|
+
parameters:
|
|
15
|
+
type: object
|
|
16
|
+
description: URL Query Parameters
|
|
17
|
+
properties:
|
|
18
|
+
required:
|
|
19
|
+
json_body: # remove if no json_body is needed.
|
|
20
|
+
type: object
|
|
21
|
+
description: Body
|
|
22
|
+
properties:
|
|
23
|
+
required:
|
|
24
|
+
data_body: # remove if no data_body is needed.
|
|
25
|
+
type: object
|
|
26
|
+
description: Body
|
|
27
|
+
properties:
|
|
28
|
+
required:
|
|
29
|
+
headers: # remove if no custom headers are needed.
|
|
30
|
+
type: object
|
|
31
|
+
description: Body
|
|
32
|
+
properties:
|
|
33
|
+
required:
|
|
34
|
+
output: # use the SDK to autogenerate the output schema. This can be 'object' or 'array' type.
|
|
35
|
+
type: object
|
|
36
|
+
properties:
|
|
37
|
+
additionalProperties: true
|
|
38
|
+
meta:
|
|
39
|
+
endpoint: turbine-api/v3/turbine # full path to endpoint after host.
|
|
40
|
+
method: GET
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# THIS IS AN EXAMPLE, PLEASE USE THE SDK TO CREATE A NEW ASSET and DELETE
|
|
2
|
+
schema: asset/1
|
|
3
|
+
name: asset
|
|
4
|
+
title: Virus Total API Key Authentication
|
|
5
|
+
description: ''
|
|
6
|
+
inputs:
|
|
7
|
+
type: object
|
|
8
|
+
properties:
|
|
9
|
+
url:
|
|
10
|
+
type: string
|
|
11
|
+
default: https://www.swimlane.com # add the default if cloud.
|
|
12
|
+
x-apikey:
|
|
13
|
+
type: string
|
|
14
|
+
verify_ssl:
|
|
15
|
+
type: boolean
|
|
16
|
+
http_proxy:
|
|
17
|
+
type: string
|
|
18
|
+
default: https://www.proxy.com
|
|
19
|
+
required:
|
|
20
|
+
- url
|
|
21
|
+
- x-apikey # example
|
|
22
|
+
meta:
|
|
23
|
+
asset_url_key: url
|
|
24
|
+
security: # example of header auth. All security objects must follow OpenAPI spec auth.
|
|
25
|
+
type: apiKey
|
|
26
|
+
name: x-apikey # example
|
|
27
|
+
in: header
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|