stubbing inspection api

pull/437/head
Frostebite 2022-10-19 00:35:10 +01:00
parent ed9c056718
commit 3fa703512c
16 changed files with 171 additions and 324 deletions

View File

@ -29,7 +29,7 @@ jobs:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: eu-west-2 AWS_DEFAULT_REGION: eu-west-2
- run: yarn run cli -m aws-list-all - run: yarn run cli -m list-resources
env: env:
AWS_REGION: eu-west-2 AWS_REGION: eu-west-2
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}

256
dist/index.js vendored
View File

@ -481,7 +481,6 @@ const action_yaml_1 = __nccwpck_require__(11091);
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855)); const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
const cloud_runner_query_override_1 = __importDefault(__nccwpck_require__(31011)); const cloud_runner_query_override_1 = __importDefault(__nccwpck_require__(31011));
const cli_functions_repository_1 = __nccwpck_require__(85301); const cli_functions_repository_1 = __nccwpck_require__(85301);
const aws_cli_commands_1 = __nccwpck_require__(34340);
const caching_1 = __nccwpck_require__(32885); const caching_1 = __nccwpck_require__(32885);
const lfs_hashing_1 = __nccwpck_require__(8915); const lfs_hashing_1 = __nccwpck_require__(8915);
const remote_client_1 = __nccwpck_require__(48135); const remote_client_1 = __nccwpck_require__(48135);
@ -504,10 +503,9 @@ class Cli {
return; return;
} }
static InitCliMode() { static InitCliMode() {
cli_functions_repository_1.CliFunctionsRepository.PushCliFunctionSource(aws_cli_commands_1.AwsCliCommands); cli_functions_repository_1.CliFunctionsRepository.PushCliFunctionSource(remote_client_1.RemoteClient);
cli_functions_repository_1.CliFunctionsRepository.PushCliFunctionSource(caching_1.Caching); cli_functions_repository_1.CliFunctionsRepository.PushCliFunctionSource(caching_1.Caching);
cli_functions_repository_1.CliFunctionsRepository.PushCliFunctionSource(lfs_hashing_1.LfsHashing); cli_functions_repository_1.CliFunctionsRepository.PushCliFunctionSource(lfs_hashing_1.LfsHashing);
cli_functions_repository_1.CliFunctionsRepository.PushCliFunctionSource(remote_client_1.RemoteClient);
const program = new commander_ts_1.Command(); const program = new commander_ts_1.Command();
program.version('0.0.1'); program.version('0.0.1');
const properties = cloud_runner_options_reader_1.default.GetProperties(); const properties = cloud_runner_options_reader_1.default.GetProperties();
@ -582,14 +580,14 @@ class Cli {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const buildParameter = yield __1.BuildParameters.create(); const buildParameter = yield __1.BuildParameters.create();
yield __1.CloudRunner.setup(buildParameter); yield __1.CloudRunner.setup(buildParameter);
return yield __1.CloudRunner.Provider.listResources(); return (yield __1.CloudRunner.Provider.listResources()).map((x) => x.Name);
}); });
} }
static ListWorfklow() { static ListWorfklow() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const buildParameter = yield __1.BuildParameters.create(); const buildParameter = yield __1.BuildParameters.create();
yield __1.CloudRunner.setup(buildParameter); yield __1.CloudRunner.setup(buildParameter);
return yield __1.CloudRunner.Provider.listWorkflow(); return (yield __1.CloudRunner.Provider.listWorkflow()).map((x) => x.Name);
}); });
} }
static Watch() { static Watch() {
@ -603,14 +601,14 @@ class Cli {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const buildParameter = yield __1.BuildParameters.create(); const buildParameter = yield __1.BuildParameters.create();
yield __1.CloudRunner.setup(buildParameter); yield __1.CloudRunner.setup(buildParameter);
return yield __1.CloudRunner.Provider.inspectResources(); return (yield __1.CloudRunner.Provider.inspectResources()).Name;
}); });
} }
static InspectWorkflow() { static InspectWorkflow() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const buildParameter = yield __1.BuildParameters.create(); const buildParameter = yield __1.BuildParameters.create();
yield __1.CloudRunner.setup(buildParameter); yield __1.CloudRunner.setup(buildParameter);
return yield __1.CloudRunner.Provider.inspectWorkflow(); return (yield __1.CloudRunner.Provider.inspectWorkflow()).Name;
}); });
} }
static PostCLIBuild() { static PostCLIBuild() {
@ -630,7 +628,7 @@ __decorate([
cli_functions_repository_1.CliFunction(`print-input`, `prints all input`) cli_functions_repository_1.CliFunction(`print-input`, `prints all input`)
], Cli, "logInput", null); ], Cli, "logInput", null);
__decorate([ __decorate([
cli_functions_repository_1.CliFunction(`cli`, `runs a cloud runner build`) cli_functions_repository_1.CliFunction(`cli-build`, `runs a cloud runner build`)
], Cli, "CLIBuild", null); ], Cli, "CLIBuild", null);
__decorate([ __decorate([
cli_functions_repository_1.CliFunction(`garbage-collect`, `runs garbage collection`) cli_functions_repository_1.CliFunction(`garbage-collect`, `runs garbage collection`)
@ -2286,130 +2284,6 @@ Resources:
`; `;
/***/ }),
/***/ 34340:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.AwsCliCommands = void 0;
const cli_functions_repository_1 = __nccwpck_require__(85301);
const task_service_1 = __nccwpck_require__(67205);
const garbage_collection_service_1 = __nccwpck_require__(53859);
const tertiary_resources_service_1 = __nccwpck_require__(61627);
class AwsCliCommands {
static awsListAll() {
return __awaiter(this, void 0, void 0, function* () {
yield AwsCliCommands.awsListStacks();
yield AwsCliCommands.awsListTasks();
yield AwsCliCommands.awsListLogGroups();
});
}
static garbageCollectAws() {
return __awaiter(this, void 0, void 0, function* () {
yield garbage_collection_service_1.GarbageCollectionService.cleanup(false);
});
}
static garbageCollectAwsAll() {
return __awaiter(this, void 0, void 0, function* () {
yield garbage_collection_service_1.GarbageCollectionService.cleanup(true);
});
}
static garbageCollectAwsAllOlderThanOneDay() {
return __awaiter(this, void 0, void 0, function* () {
yield garbage_collection_service_1.GarbageCollectionService.cleanup(true, true);
});
}
static awsListStacks(perResultCallback = false) {
return __awaiter(this, void 0, void 0, function* () {
return task_service_1.TaskService.awsListStacks(perResultCallback);
});
}
static awsListTasks(perResultCallback = false) {
return __awaiter(this, void 0, void 0, function* () {
return task_service_1.TaskService.awsListJobs(perResultCallback);
});
}
static awsListLogGroups(perResultCallback = false) {
return __awaiter(this, void 0, void 0, function* () {
yield tertiary_resources_service_1.TertiaryResourcesService.AwsListLogGroups(perResultCallback);
});
}
static awsListJobs(perResultCallback = false) {
return __awaiter(this, void 0, void 0, function* () {
return task_service_1.TaskService.awsListJobs(perResultCallback);
});
}
static listTasks(perResultCallback = false) {
return __awaiter(this, void 0, void 0, function* () {
return task_service_1.TaskService.awsListJobs(perResultCallback);
});
}
static watchTasks() {
return __awaiter(this, void 0, void 0, function* () {
return task_service_1.TaskService.watch();
});
}
static describe(options) {
return __awaiter(this, void 0, void 0, function* () {
// return CloudRunner.Provider.inspect();
return yield task_service_1.TaskService.awsDescribeJob(options.select);
});
}
}
__decorate([
cli_functions_repository_1.CliFunction(`aws-list-all`, `List all resources`)
], AwsCliCommands, "awsListAll", null);
__decorate([
cli_functions_repository_1.CliFunction(`aws-garbage-collect-list`, `garbage collect aws resources not in use !WIP!`)
], AwsCliCommands, "garbageCollectAws", null);
__decorate([
cli_functions_repository_1.CliFunction(`aws-garbage-collect-all`, `garbage collect aws resources regardless of whether they are in use`)
], AwsCliCommands, "garbageCollectAwsAll", null);
__decorate([
cli_functions_repository_1.CliFunction(`aws-garbage-collect-all-1d-older`, `garbage collect aws resources created more than 1d ago (ignore if they are in use)`)
], AwsCliCommands, "garbageCollectAwsAllOlderThanOneDay", null);
__decorate([
cli_functions_repository_1.CliFunction(`aws-list-stacks`, `List stacks`)
], AwsCliCommands, "awsListStacks", null);
__decorate([
cli_functions_repository_1.CliFunction(`aws-list-tasks`, `List tasks`)
], AwsCliCommands, "awsListTasks", null);
__decorate([
cli_functions_repository_1.CliFunction(`aws-list-log-groups`, `List tasks`)
], AwsCliCommands, "awsListLogGroups", null);
__decorate([
cli_functions_repository_1.CliFunction(`aws-list-jobs`, `List tasks`)
], AwsCliCommands, "awsListJobs", null);
__decorate([
cli_functions_repository_1.CliFunction(`list-tasks`, `List tasks`)
], AwsCliCommands, "listTasks", null);
__decorate([
cli_functions_repository_1.CliFunction(`watch`, `List tasks`)
], AwsCliCommands, "watchTasks", null);
__decorate([
cli_functions_repository_1.CliFunction(`describe-resource`, `desribe tasks`)
], AwsCliCommands, "describe", null);
exports.AwsCliCommands = AwsCliCommands;
/***/ }), /***/ }),
/***/ 90480: /***/ 90480:
@ -2455,35 +2329,49 @@ const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
const aws_job_stack_1 = __nccwpck_require__(70633); const aws_job_stack_1 = __nccwpck_require__(70633);
const aws_base_stack_1 = __nccwpck_require__(26112); const aws_base_stack_1 = __nccwpck_require__(26112);
const __1 = __nccwpck_require__(41359); const __1 = __nccwpck_require__(41359);
const aws_cli_commands_1 = __nccwpck_require__(34340);
const tertiary_resources_service_1 = __nccwpck_require__(61627); const tertiary_resources_service_1 = __nccwpck_require__(61627);
const task_service_1 = __nccwpck_require__(67205);
const garbage_collection_service_1 = __nccwpck_require__(53859); const garbage_collection_service_1 = __nccwpck_require__(53859);
const task_service_1 = __nccwpck_require__(67205);
class AWSBuildEnvironment { class AWSBuildEnvironment {
constructor(buildParameters) { constructor(buildParameters) {
this.baseStackName = buildParameters.awsBaseStackName; this.baseStackName = buildParameters.awsBaseStackName;
} }
listResources() {
return __awaiter(this, void 0, void 0, function* () {
yield task_service_1.TaskService.awsListJobs();
yield tertiary_resources_service_1.TertiaryResourcesService.awsListLogGroups();
yield task_service_1.TaskService.awsListTasks();
yield task_service_1.TaskService.awsListStacks();
return [];
});
}
inspectResources() {
return __awaiter(this, void 0, void 0, function* () {
yield new Promise((result) => result);
return {
Name: yield task_service_1.TaskService.awsDescribeJob(``),
};
});
}
listWorkflow() { listWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectWorkflow() { inspectWorkflow() {
throw new Error('Method not implemented.');
}
inspectResources() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
return yield task_service_1.TaskService.awsDescribeJob(''); yield new Promise((result) => result);
return {
Name: yield task_service_1.TaskService.awsDescribeJob(``),
};
}); });
} }
watchWorkflow() { watchWorkflow() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
// eslint-disable-next-line no-unused-vars return yield task_service_1.TaskService.watch();
const { output, shouldCleanup } = yield aws_task_runner_1.default.streamLogsUntilTaskStops(process.env.cluster || ``, process.env.taskArn || ``, process.env.streamName || ``);
return output;
}); });
} }
listOtherResources() { listOtherResources() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
yield tertiary_resources_service_1.TertiaryResourcesService.AwsListLogGroups(); yield tertiary_resources_service_1.TertiaryResourcesService.awsListLogGroups();
return ''; return '';
}); });
} }
@ -2499,14 +2387,6 @@ class AWSBuildEnvironment {
return ``; return ``;
}); });
} }
listResources() {
return __awaiter(this, void 0, void 0, function* () {
yield aws_cli_commands_1.AwsCliCommands.awsListStacks();
yield aws_cli_commands_1.AwsCliCommands.awsListTasks();
yield aws_cli_commands_1.AwsCliCommands.awsListLogGroups();
return [];
});
}
cleanupWorkflow( cleanupWorkflow(
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
buildGuid, buildGuid,
@ -2610,7 +2490,8 @@ const aws_sdk_1 = __importDefault(__nccwpck_require__(71786));
const cli_functions_repository_1 = __nccwpck_require__(85301); const cli_functions_repository_1 = __nccwpck_require__(85301);
const input_1 = __importDefault(__nccwpck_require__(91933)); const input_1 = __importDefault(__nccwpck_require__(91933));
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855)); const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
const aws_cli_commands_1 = __nccwpck_require__(34340); const task_service_1 = __nccwpck_require__(67205);
const tertiary_resources_service_1 = __nccwpck_require__(61627);
class GarbageCollectionService { class GarbageCollectionService {
static garbageCollectAws() { static garbageCollectAws() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
@ -2638,7 +2519,7 @@ class GarbageCollectionService {
const ecs = new aws_sdk_1.default.ECS(); const ecs = new aws_sdk_1.default.ECS();
const cwl = new aws_sdk_1.default.CloudWatchLogs(); const cwl = new aws_sdk_1.default.CloudWatchLogs();
const taskDefinitionsInUse = new Array(); const taskDefinitionsInUse = new Array();
yield aws_cli_commands_1.AwsCliCommands.awsListTasks((taskElement, element) => __awaiter(this, void 0, void 0, function* () { yield task_service_1.TaskService.awsListTasks((taskElement, element) => __awaiter(this, void 0, void 0, function* () {
var _a; var _a;
taskDefinitionsInUse.push(taskElement.taskDefinitionArn); taskDefinitionsInUse.push(taskElement.taskDefinitionArn);
if (deleteResources && (!OneDayOlderOnly || GarbageCollectionService.isOlderThan1day(taskElement.CreatedAt))) { if (deleteResources && (!OneDayOlderOnly || GarbageCollectionService.isOlderThan1day(taskElement.CreatedAt))) {
@ -2646,7 +2527,7 @@ class GarbageCollectionService {
yield ecs.stopTask({ task: taskElement.taskArn || '', cluster: element }).promise(); yield ecs.stopTask({ task: taskElement.taskArn || '', cluster: element }).promise();
} }
})); }));
yield aws_cli_commands_1.AwsCliCommands.awsListStacks((element) => __awaiter(this, void 0, void 0, function* () { yield task_service_1.TaskService.awsListStacks((element) => __awaiter(this, void 0, void 0, function* () {
var _b; var _b;
if ((_b = (yield CF.describeStackResources({ StackName: element.StackName }).promise()).StackResources) === null || _b === void 0 ? void 0 : _b.some((x) => x.ResourceType === 'AWS::ECS::TaskDefinition' && taskDefinitionsInUse.includes(x.PhysicalResourceId))) { if ((_b = (yield CF.describeStackResources({ StackName: element.StackName }).promise()).StackResources) === null || _b === void 0 ? void 0 : _b.some((x) => x.ResourceType === 'AWS::ECS::TaskDefinition' && taskDefinitionsInUse.includes(x.PhysicalResourceId))) {
cloud_runner_logger_1.default.log(`Skipping ${element.StackName} - active task was running not deleting`); cloud_runner_logger_1.default.log(`Skipping ${element.StackName} - active task was running not deleting`);
@ -2662,7 +2543,7 @@ class GarbageCollectionService {
yield CF.deleteStack(deleteStackInput).promise(); yield CF.deleteStack(deleteStackInput).promise();
} }
})); }));
yield aws_cli_commands_1.AwsCliCommands.awsListLogGroups((element) => __awaiter(this, void 0, void 0, function* () { yield tertiary_resources_service_1.TertiaryResourcesService.awsListLogGroups((element) => __awaiter(this, void 0, void 0, function* () {
if (deleteResources && if (deleteResources &&
(!OneDayOlderOnly || GarbageCollectionService.isOlderThan1day(new Date(element.createdAt)))) { (!OneDayOlderOnly || GarbageCollectionService.isOlderThan1day(new Date(element.createdAt)))) {
cloud_runner_logger_1.default.log(`Deleting ${element.logGroupName}`); cloud_runner_logger_1.default.log(`Deleting ${element.logGroupName}`);
@ -2709,9 +2590,14 @@ const aws_sdk_1 = __importDefault(__nccwpck_require__(71786));
const input_1 = __importDefault(__nccwpck_require__(91933)); const input_1 = __importDefault(__nccwpck_require__(91933));
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855)); const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
const base_stack_formation_1 = __nccwpck_require__(29643); const base_stack_formation_1 = __nccwpck_require__(29643);
const aws_task_runner_1 = __importDefault(__nccwpck_require__(15518));
class TaskService { class TaskService {
static watch() { static watch() {
throw new Error('Method not implemented.'); return __awaiter(this, void 0, void 0, function* () {
// eslint-disable-next-line no-unused-vars
const { output, shouldCleanup } = yield aws_task_runner_1.default.streamLogsUntilTaskStops(process.env.cluster || ``, process.env.taskArn || ``, process.env.streamName || ``);
return output;
});
} }
static awsListStacks(perResultCallback = false) { static awsListStacks(perResultCallback = false) {
var _a, _b; var _a, _b;
@ -2844,7 +2730,7 @@ const aws_sdk_1 = __importDefault(__nccwpck_require__(71786));
const input_1 = __importDefault(__nccwpck_require__(91933)); const input_1 = __importDefault(__nccwpck_require__(91933));
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855)); const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
class TertiaryResourcesService { class TertiaryResourcesService {
static AwsListLogGroups(perResultCallback = false) { static awsListLogGroups(perResultCallback = false) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
process.env.AWS_REGION = input_1.default.region; process.env.AWS_REGION = input_1.default.region;
const ecs = new aws_sdk_1.default.CloudWatchLogs(); const ecs = new aws_sdk_1.default.CloudWatchLogs();
@ -2902,21 +2788,21 @@ const __1 = __nccwpck_require__(41359);
const fs_1 = __nccwpck_require__(57147); const fs_1 = __nccwpck_require__(57147);
const cloud_runner_1 = __importDefault(__nccwpck_require__(79144)); const cloud_runner_1 = __importDefault(__nccwpck_require__(79144));
class LocalDockerCloudRunner { class LocalDockerCloudRunner {
listResources() {
throw new Error('Method not implemented.');
}
inspectResources() {
throw new Error('Method not implemented.');
}
listWorkflow() { listWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectWorkflow() { inspectWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectResources() {
throw new Error('Method not implemented.');
}
watchWorkflow() { watchWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
listResources() {
throw new Error('Method not implemented.');
}
garbageCollect( garbageCollect(
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter, filter,
@ -3072,21 +2958,21 @@ class Kubernetes {
this.namespace = 'default'; this.namespace = 'default';
this.buildParameters = buildParameters; this.buildParameters = buildParameters;
} }
listResources() {
throw new Error('Method not implemented.');
}
inspectResources() {
throw new Error('Method not implemented.');
}
listWorkflow() { listWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectWorkflow() { inspectWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectResources() {
throw new Error('Method not implemented.');
}
watchWorkflow() { watchWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
listResources() {
throw new Error('Method not implemented.');
}
garbageCollect( garbageCollect(
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter, filter,
@ -3804,21 +3690,21 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
const cloud_runner_system_1 = __nccwpck_require__(99393); const cloud_runner_system_1 = __nccwpck_require__(99393);
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855)); const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
class LocalCloudRunner { class LocalCloudRunner {
listResources() {
throw new Error('Method not implemented.');
}
inspectResources() {
throw new Error('Method not implemented.');
}
listWorkflow() { listWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectWorkflow() { inspectWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectResources() {
throw new Error('Method not implemented.');
}
watchWorkflow() { watchWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
listResources() {
throw new Error('Method not implemented.');
}
garbageCollect( garbageCollect(
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter, filter,
@ -3892,21 +3778,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855)); const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
class TestCloudRunner { class TestCloudRunner {
listResources() {
throw new Error('Method not implemented.');
}
inspectResources() {
throw new Error('Method not implemented.');
}
listWorkflow() { listWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectWorkflow() { inspectWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectResources() {
throw new Error('Method not implemented.');
}
watchWorkflow() { watchWorkflow() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
listResources() {
throw new Error('Method not implemented.');
}
garbageCollect( garbageCollect(
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter, filter,
@ -5259,9 +5145,8 @@ class SharedWorkspaceLocking {
if (!cloud_runner_options_1.default.retainWorkspaces) { if (!cloud_runner_options_1.default.retainWorkspaces) {
return; return;
} }
cloud_runner_logger_1.default.log(`run agent ${runId} is trying to access a workspace`);
if (yield SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext)) {
const workspaces = yield SharedWorkspaceLocking.GetFreeWorkspaces(buildParametersContext); const workspaces = yield SharedWorkspaceLocking.GetFreeWorkspaces(buildParametersContext);
cloud_runner_logger_1.default.log(`run agent ${runId} is trying to access a workspace, free: ${JSON.stringify(workspaces)}`);
for (const element of workspaces) { for (const element of workspaces) {
const lockResult = yield SharedWorkspaceLocking.LockWorkspace(element, runId, buildParametersContext); const lockResult = yield SharedWorkspaceLocking.LockWorkspace(element, runId, buildParametersContext);
cloud_runner_logger_1.default.log(`run agent ${runId} try lock workspace: ${element} result: ${lockResult}`); cloud_runner_logger_1.default.log(`run agent ${runId} try lock workspace: ${element} result: ${lockResult}`);
@ -5269,7 +5154,6 @@ class SharedWorkspaceLocking {
return true; return true;
} }
} }
}
const createResult = yield SharedWorkspaceLocking.CreateWorkspace(workspace, buildParametersContext, runId); const createResult = yield SharedWorkspaceLocking.CreateWorkspace(workspace, buildParametersContext, runId);
cloud_runner_logger_1.default.log(`run agent ${runId} didn't find a free workspace so created: ${workspace} createWorkspaceSuccess: ${createResult}`); cloud_runner_logger_1.default.log(`run agent ${runId} didn't find a free workspace so created: ${workspace} createWorkspaceSuccess: ${createResult}`);
return createResult; return createResult;
@ -5295,7 +5179,7 @@ class SharedWorkspaceLocking {
.sort((x) => x.timestamp); .sort((x) => x.timestamp);
const lockMatches = locks.filter((x) => x.name.includes(runId)); const lockMatches = locks.filter((x) => x.name.includes(runId));
const includesRunLock = lockMatches.length > 0 && locks.indexOf(lockMatches[0]) === 0; const includesRunLock = lockMatches.length > 0 && locks.indexOf(lockMatches[0]) === 0;
cloud_runner_logger_1.default.log(`Checking has workspace lock, runId: ${runId} workspace: ${workspace} success: ${includesRunLock} \n Num of LockMatches for Run Agent: ${lockMatches.length} Num of Locks ${locks.length} orderedLockIndex for Run Agent ${locks.indexOf(lockMatches[0])}`); cloud_runner_logger_1.default.log(`Checking has workspace lock, runId: ${runId} workspace: ${workspace} success: ${includesRunLock} \n- Num of LockMatches for Run Agent: ${lockMatches.length} Num of Locks ${locks.length} orderedLockIndex for Run Agent ${locks.indexOf(lockMatches[0])} \n \n`);
return includesRunLock; return includesRunLock;
}); });
} }
@ -5328,7 +5212,7 @@ class SharedWorkspaceLocking {
ordered.sort((x) => x.timestamp); ordered.sort((x) => x.timestamp);
const matches = ordered.filter((x) => x.name.includes(workspace)); const matches = ordered.filter((x) => x.name.includes(workspace));
const isWorkspaceBelowMax = matches.length > 0 && ordered.indexOf(matches[0]) < buildParametersContext.maxRetainedWorkspaces; const isWorkspaceBelowMax = matches.length > 0 && ordered.indexOf(matches[0]) < buildParametersContext.maxRetainedWorkspaces;
cloud_runner_logger_1.default.log(`isWorkspaceBelowMax ${isWorkspaceBelowMax} = ${matches} > 0 && ${ordered.indexOf(matches[0])} < ${buildParametersContext.maxRetainedWorkspaces}`); cloud_runner_logger_1.default.log(`isWorkspaceBelowMax ${isWorkspaceBelowMax} = ${matches.length} > 0 && ${ordered.indexOf(matches[0])} < ${buildParametersContext.maxRetainedWorkspaces}`);
return isWorkspaceBelowMax; return isWorkspaceBelowMax;
}); });
} }
@ -5369,7 +5253,7 @@ class SharedWorkspaceLocking {
fs.rmSync(file); fs.rmSync(file);
const workspaces = yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`); const workspaces = yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`);
cloud_runner_logger_1.default.log(`All workspaces ${workspaces}`); cloud_runner_logger_1.default.log(`All workspaces ${workspaces}`);
if (yield SharedWorkspaceLocking.IsWorkspaceBelowMax(workspace, buildParametersContext)) { if (!(yield SharedWorkspaceLocking.IsWorkspaceBelowMax(workspace, buildParametersContext))) {
cloud_runner_logger_1.default.log(`Workspace is below max ${workspaces} ${buildParametersContext.maxRetainedWorkspaces}`); cloud_runner_logger_1.default.log(`Workspace is below max ${workspaces} ${buildParametersContext.maxRetainedWorkspaces}`);
yield SharedWorkspaceLocking.CleanupWorkspace(workspace, buildParametersContext); yield SharedWorkspaceLocking.CleanupWorkspace(workspace, buildParametersContext);
return false; return false;

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -5,7 +5,6 @@ import { ActionYamlReader } from '../input-readers/action-yaml';
import CloudRunnerLogger from '../cloud-runner/services/cloud-runner-logger'; import CloudRunnerLogger from '../cloud-runner/services/cloud-runner-logger';
import CloudRunnerQueryOverride from '../cloud-runner/services/cloud-runner-query-override'; import CloudRunnerQueryOverride from '../cloud-runner/services/cloud-runner-query-override';
import { CliFunction, CliFunctionsRepository } from './cli-functions-repository'; import { CliFunction, CliFunctionsRepository } from './cli-functions-repository';
import { AwsCliCommands } from '../cloud-runner/providers/aws/commands/aws-cli-commands';
import { Caching } from '../cloud-runner/remote-client/caching'; import { Caching } from '../cloud-runner/remote-client/caching';
import { LfsHashing } from '../cloud-runner/services/lfs-hashing'; import { LfsHashing } from '../cloud-runner/services/lfs-hashing';
import { RemoteClient } from '../cloud-runner/remote-client'; import { RemoteClient } from '../cloud-runner/remote-client';
@ -32,10 +31,9 @@ export class Cli {
} }
public static InitCliMode() { public static InitCliMode() {
CliFunctionsRepository.PushCliFunctionSource(AwsCliCommands); CliFunctionsRepository.PushCliFunctionSource(RemoteClient);
CliFunctionsRepository.PushCliFunctionSource(Caching); CliFunctionsRepository.PushCliFunctionSource(Caching);
CliFunctionsRepository.PushCliFunctionSource(LfsHashing); CliFunctionsRepository.PushCliFunctionSource(LfsHashing);
CliFunctionsRepository.PushCliFunctionSource(RemoteClient);
const program = new Command(); const program = new Command();
program.version('0.0.1'); program.version('0.0.1');
@ -103,7 +101,7 @@ export class Cli {
core.info(`\n`); core.info(`\n`);
} }
@CliFunction(`cli`, `runs a cloud runner build`) @CliFunction(`cli-build`, `runs a cloud runner build`)
public static async CLIBuild(): Promise<string> { public static async CLIBuild(): Promise<string> {
const buildParameter = await BuildParameters.create(); const buildParameter = await BuildParameters.create();
const baseImage = new ImageTag(buildParameter); const baseImage = new ImageTag(buildParameter);
@ -126,7 +124,7 @@ export class Cli {
await CloudRunner.setup(buildParameter); await CloudRunner.setup(buildParameter);
return await CloudRunner.Provider.listResources(); return (await CloudRunner.Provider.listResources()).map((x) => x.Name);
} }
@CliFunction(`list-worfklow`, `lists running workflows`) @CliFunction(`list-worfklow`, `lists running workflows`)
@ -135,7 +133,7 @@ export class Cli {
await CloudRunner.setup(buildParameter); await CloudRunner.setup(buildParameter);
return await CloudRunner.Provider.listWorkflow(); return (await CloudRunner.Provider.listWorkflow()).map((x) => x.Name);
} }
@CliFunction(`watch`, `follows logs of a running workflow`) @CliFunction(`watch`, `follows logs of a running workflow`)
@ -153,7 +151,7 @@ export class Cli {
await CloudRunner.setup(buildParameter); await CloudRunner.setup(buildParameter);
return await CloudRunner.Provider.inspectResources(); return (await CloudRunner.Provider.inspectResources()).Name;
} }
@CliFunction(`inspect-workflow`, `inspects details of a running workflow`) @CliFunction(`inspect-workflow`, `inspects details of a running workflow`)
@ -162,7 +160,7 @@ export class Cli {
await CloudRunner.setup(buildParameter); await CloudRunner.setup(buildParameter);
return await CloudRunner.Provider.inspectWorkflow(); return (await CloudRunner.Provider.inspectWorkflow()).Name;
} }
@CliFunction(`remote-cli-post-build`, `runs a cloud runner build`) @CliFunction(`remote-cli-post-build`, `runs a cloud runner build`)

View File

@ -1,62 +0,0 @@
import { CliFunction } from '../../../../cli/cli-functions-repository';
import { TaskService } from '../services/task-service';
import { GarbageCollectionService } from '../services/garbage-collection-service';
import { TertiaryResourcesService } from '../services/tertiary-resources-service';
export class AwsCliCommands {
@CliFunction(`aws-list-all`, `List all resources`)
public static async awsListAll() {
await AwsCliCommands.awsListStacks();
await AwsCliCommands.awsListTasks();
await AwsCliCommands.awsListLogGroups();
}
@CliFunction(`aws-garbage-collect-list`, `garbage collect aws resources not in use !WIP!`)
static async garbageCollectAws() {
await GarbageCollectionService.cleanup(false);
}
@CliFunction(`aws-garbage-collect-all`, `garbage collect aws resources regardless of whether they are in use`)
static async garbageCollectAwsAll() {
await GarbageCollectionService.cleanup(true);
}
@CliFunction(
`aws-garbage-collect-all-1d-older`,
`garbage collect aws resources created more than 1d ago (ignore if they are in use)`,
)
static async garbageCollectAwsAllOlderThanOneDay() {
await GarbageCollectionService.cleanup(true, true);
}
@CliFunction(`aws-list-stacks`, `List stacks`)
static async awsListStacks(perResultCallback: any = false) {
return TaskService.awsListStacks(perResultCallback);
}
@CliFunction(`aws-list-tasks`, `List tasks`)
static async awsListTasks(perResultCallback: any = false) {
return TaskService.awsListJobs(perResultCallback);
}
@CliFunction(`aws-list-log-groups`, `List tasks`)
static async awsListLogGroups(perResultCallback: any = false) {
await TertiaryResourcesService.AwsListLogGroups(perResultCallback);
}
@CliFunction(`aws-list-jobs`, `List tasks`)
public static async awsListJobs(perResultCallback: any = false) {
return TaskService.awsListJobs(perResultCallback);
}
@CliFunction(`list-tasks`, `List tasks`)
static async listTasks(perResultCallback: any = false) {
return TaskService.awsListJobs(perResultCallback);
}
@CliFunction(`watch`, `List tasks`)
static async watchTasks() {
return TaskService.watch();
}
@CliFunction(`describe-resource`, `desribe tasks`)
static async describe(options) {
// return CloudRunner.Provider.inspect();
return await TaskService.awsDescribeJob(options.select);
}
}

View File

@ -9,10 +9,11 @@ import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { AWSJobStack as AwsJobStack } from './aws-job-stack'; import { AWSJobStack as AwsJobStack } from './aws-job-stack';
import { AWSBaseStack as AwsBaseStack } from './aws-base-stack'; import { AWSBaseStack as AwsBaseStack } from './aws-base-stack';
import { Input } from '../../..'; import { Input } from '../../..';
import { AwsCliCommands } from './commands/aws-cli-commands';
import { TertiaryResourcesService } from './services/tertiary-resources-service'; import { TertiaryResourcesService } from './services/tertiary-resources-service';
import { TaskService } from './services/task-service';
import { GarbageCollectionService } from './services/garbage-collection-service'; import { GarbageCollectionService } from './services/garbage-collection-service';
import { ProviderResource } from '../provider-resource';
import { ProviderWorkflow } from '../provider-workflow';
import { TaskService } from './services/task-service';
class AWSBuildEnvironment implements ProviderInterface { class AWSBuildEnvironment implements ProviderInterface {
private baseStackName: string; private baseStackName: string;
@ -20,28 +21,37 @@ class AWSBuildEnvironment implements ProviderInterface {
constructor(buildParameters: BuildParameters) { constructor(buildParameters: BuildParameters) {
this.baseStackName = buildParameters.awsBaseStackName; this.baseStackName = buildParameters.awsBaseStackName;
} }
listWorkflow(): Promise<string[]> { async listResources(): Promise<ProviderResource[]> {
await TaskService.awsListJobs();
await TertiaryResourcesService.awsListLogGroups();
await TaskService.awsListTasks();
await TaskService.awsListStacks();
return [];
}
async inspectResources(): Promise<ProviderResource> {
await new Promise((result) => result);
return {
Name: await TaskService.awsDescribeJob(``),
};
}
listWorkflow(): Promise<ProviderWorkflow[]> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectWorkflow(): Promise<string> { async inspectWorkflow(): Promise<ProviderWorkflow> {
throw new Error('Method not implemented.'); await new Promise((result) => result);
}
async inspectResources(): Promise<string> { return {
return await TaskService.awsDescribeJob(''); Name: await TaskService.awsDescribeJob(``),
};
} }
async watchWorkflow(): Promise<string> { async watchWorkflow(): Promise<string> {
// eslint-disable-next-line no-unused-vars return await TaskService.watch();
const { output, shouldCleanup } = await AwsTaskRunner.streamLogsUntilTaskStops(
process.env.cluster || ``,
process.env.taskArn || ``,
process.env.streamName || ``,
);
return output;
} }
async listOtherResources(): Promise<string> { async listOtherResources(): Promise<string> {
await TertiaryResourcesService.AwsListLogGroups(); await TertiaryResourcesService.awsListLogGroups();
return ''; return '';
} }
@ -61,14 +71,6 @@ class AWSBuildEnvironment implements ProviderInterface {
return ``; return ``;
} }
async listResources() {
await AwsCliCommands.awsListStacks();
await AwsCliCommands.awsListTasks();
await AwsCliCommands.awsListLogGroups();
return [];
}
async cleanupWorkflow( async cleanupWorkflow(
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
buildGuid: string, buildGuid: string,

View File

@ -2,7 +2,8 @@ import AWS from 'aws-sdk';
import { CliFunction } from '../../../../cli/cli-functions-repository'; import { CliFunction } from '../../../../cli/cli-functions-repository';
import Input from '../../../../input'; import Input from '../../../../input';
import CloudRunnerLogger from '../../../services/cloud-runner-logger'; import CloudRunnerLogger from '../../../services/cloud-runner-logger';
import { AwsCliCommands } from '../commands/aws-cli-commands'; import { TaskService } from './task-service';
import { TertiaryResourcesService } from './tertiary-resources-service';
export class GarbageCollectionService { export class GarbageCollectionService {
@CliFunction(`aws-garbage-collect-list`, `garbage collect aws resources not in use !WIP!`) @CliFunction(`aws-garbage-collect-list`, `garbage collect aws resources not in use !WIP!`)
@ -32,14 +33,14 @@ export class GarbageCollectionService {
const ecs = new AWS.ECS(); const ecs = new AWS.ECS();
const cwl = new AWS.CloudWatchLogs(); const cwl = new AWS.CloudWatchLogs();
const taskDefinitionsInUse = new Array(); const taskDefinitionsInUse = new Array();
await AwsCliCommands.awsListTasks(async (taskElement, element) => { await TaskService.awsListTasks(async (taskElement, element) => {
taskDefinitionsInUse.push(taskElement.taskDefinitionArn); taskDefinitionsInUse.push(taskElement.taskDefinitionArn);
if (deleteResources && (!OneDayOlderOnly || GarbageCollectionService.isOlderThan1day(taskElement.CreatedAt))) { if (deleteResources && (!OneDayOlderOnly || GarbageCollectionService.isOlderThan1day(taskElement.CreatedAt))) {
CloudRunnerLogger.log(`Stopping task ${taskElement.containers?.[0].name}`); CloudRunnerLogger.log(`Stopping task ${taskElement.containers?.[0].name}`);
await ecs.stopTask({ task: taskElement.taskArn || '', cluster: element }).promise(); await ecs.stopTask({ task: taskElement.taskArn || '', cluster: element }).promise();
} }
}); });
await AwsCliCommands.awsListStacks(async (element) => { await TaskService.awsListStacks(async (element) => {
if ( if (
(await CF.describeStackResources({ StackName: element.StackName }).promise()).StackResources?.some( (await CF.describeStackResources({ StackName: element.StackName }).promise()).StackResources?.some(
(x) => x.ResourceType === 'AWS::ECS::TaskDefinition' && taskDefinitionsInUse.includes(x.PhysicalResourceId), (x) => x.ResourceType === 'AWS::ECS::TaskDefinition' && taskDefinitionsInUse.includes(x.PhysicalResourceId),
@ -60,7 +61,7 @@ export class GarbageCollectionService {
await CF.deleteStack(deleteStackInput).promise(); await CF.deleteStack(deleteStackInput).promise();
} }
}); });
await AwsCliCommands.awsListLogGroups(async (element) => { await TertiaryResourcesService.awsListLogGroups(async (element) => {
if ( if (
deleteResources && deleteResources &&
(!OneDayOlderOnly || GarbageCollectionService.isOlderThan1day(new Date(element.createdAt))) (!OneDayOlderOnly || GarbageCollectionService.isOlderThan1day(new Date(element.createdAt)))

View File

@ -2,10 +2,18 @@ import AWS from 'aws-sdk';
import Input from '../../../../input'; import Input from '../../../../input';
import CloudRunnerLogger from '../../../services/cloud-runner-logger'; import CloudRunnerLogger from '../../../services/cloud-runner-logger';
import { BaseStackFormation } from '../cloud-formations/base-stack-formation'; import { BaseStackFormation } from '../cloud-formations/base-stack-formation';
import AwsTaskRunner from '../aws-task-runner';
export class TaskService { export class TaskService {
static watch() { static async watch() {
throw new Error('Method not implemented.'); // eslint-disable-next-line no-unused-vars
const { output, shouldCleanup } = await AwsTaskRunner.streamLogsUntilTaskStops(
process.env.cluster || ``,
process.env.taskArn || ``,
process.env.streamName || ``,
);
return output;
} }
public static async awsListStacks(perResultCallback: any = false) { public static async awsListStacks(perResultCallback: any = false) {
process.env.AWS_REGION = Input.region; process.env.AWS_REGION = Input.region;

View File

@ -3,7 +3,7 @@ import Input from '../../../../input';
import CloudRunnerLogger from '../../../services/cloud-runner-logger'; import CloudRunnerLogger from '../../../services/cloud-runner-logger';
export class TertiaryResourcesService { export class TertiaryResourcesService {
public static async AwsListLogGroups(perResultCallback: any = false) { public static async awsListLogGroups(perResultCallback: any = false) {
process.env.AWS_REGION = Input.region; process.env.AWS_REGION = Input.region;
const ecs = new AWS.CloudWatchLogs(); const ecs = new AWS.CloudWatchLogs();
let logStreamInput: AWS.CloudWatchLogs.DescribeLogGroupsRequest = { let logStreamInput: AWS.CloudWatchLogs.DescribeLogGroupsRequest = {

View File

@ -7,25 +7,27 @@ import Docker from '../../../docker';
import { Action } from '../../..'; import { Action } from '../../..';
import { writeFileSync } from 'fs'; import { writeFileSync } from 'fs';
import CloudRunner from '../../cloud-runner'; import CloudRunner from '../../cloud-runner';
import { ProviderResource } from '../provider-resource';
import { ProviderWorkflow } from '../provider-workflow';
class LocalDockerCloudRunner implements ProviderInterface { class LocalDockerCloudRunner implements ProviderInterface {
public buildParameters: BuildParameters | undefined; public buildParameters: BuildParameters | undefined;
listWorkflow(): Promise<string[]> { listResources(): Promise<ProviderResource[]> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectWorkflow(): Promise<string> { inspectResources(): Promise<ProviderResource> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectResources(): Promise<string> { listWorkflow(): Promise<ProviderWorkflow[]> {
throw new Error('Method not implemented.');
}
inspectWorkflow(): Promise<ProviderWorkflow> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
watchWorkflow(): Promise<string> { watchWorkflow(): Promise<string> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
listResources(): Promise<string[]> {
throw new Error('Method not implemented.');
}
garbageCollect( garbageCollect(
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter: string, filter: string,

View File

@ -13,6 +13,8 @@ import KubernetesServiceAccount from './kubernetes-service-account';
import CloudRunnerLogger from '../../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { CoreV1Api } from '@kubernetes/client-node'; import { CoreV1Api } from '@kubernetes/client-node';
import CloudRunner from '../../cloud-runner'; import CloudRunner from '../../cloud-runner';
import { ProviderResource } from '../provider-resource';
import { ProviderWorkflow } from '../provider-workflow';
class Kubernetes implements ProviderInterface { class Kubernetes implements ProviderInterface {
private kubeConfig: k8s.KubeConfig; private kubeConfig: k8s.KubeConfig;
@ -39,21 +41,21 @@ class Kubernetes implements ProviderInterface {
this.namespace = 'default'; this.namespace = 'default';
this.buildParameters = buildParameters; this.buildParameters = buildParameters;
} }
listWorkflow(): Promise<string[]> { listResources(): Promise<ProviderResource[]> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectWorkflow(): Promise<string> { inspectResources(): Promise<ProviderResource> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectResources(): Promise<string> { listWorkflow(): Promise<ProviderWorkflow[]> {
throw new Error('Method not implemented.');
}
inspectWorkflow(): Promise<ProviderWorkflow> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
watchWorkflow(): Promise<string> { watchWorkflow(): Promise<string> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
listResources(): Promise<string[]> {
throw new Error('Method not implemented.');
}
garbageCollect( garbageCollect(
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter: string, filter: string,

View File

@ -4,23 +4,25 @@ import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environm
import CloudRunnerLogger from '../../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { ProviderInterface } from '../provider-interface'; import { ProviderInterface } from '../provider-interface';
import CloudRunnerSecret from '../../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
import { ProviderResource } from '../provider-resource';
import { ProviderWorkflow } from '../provider-workflow';
class LocalCloudRunner implements ProviderInterface { class LocalCloudRunner implements ProviderInterface {
listWorkflow(): Promise<string[]> { listResources(): Promise<ProviderResource[]> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectWorkflow(): Promise<string> { inspectResources(): Promise<ProviderResource> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectResources(): Promise<string> { listWorkflow(): Promise<ProviderWorkflow[]> {
throw new Error('Method not implemented.');
}
inspectWorkflow(): Promise<ProviderWorkflow> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
watchWorkflow(): Promise<string> { watchWorkflow(): Promise<string> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
listResources(): Promise<string[]> {
throw new Error('Method not implemented.');
}
garbageCollect( garbageCollect(
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter: string, filter: string,

View File

@ -1,6 +1,8 @@
import BuildParameters from '../../build-parameters'; import BuildParameters from '../../build-parameters';
import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable';
import CloudRunnerSecret from '../services/cloud-runner-secret'; import CloudRunnerSecret from '../services/cloud-runner-secret';
import { ProviderResource } from './provider-resource';
import { ProviderWorkflow } from './provider-workflow';
export interface ProviderInterface { export interface ProviderInterface {
cleanupWorkflow( cleanupWorkflow(
@ -51,9 +53,9 @@ export interface ProviderInterface {
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
baseDependencies: boolean, baseDependencies: boolean,
): Promise<string>; ): Promise<string>;
listResources(): Promise<string[]>; listResources(): Promise<ProviderResource[]>;
inspectResources(): Promise<string>; inspectResources(): Promise<ProviderResource>;
listWorkflow(): Promise<string[]>; listWorkflow(): Promise<ProviderWorkflow[]>;
inspectWorkflow(): Promise<string>; inspectWorkflow(): Promise<ProviderWorkflow>;
watchWorkflow(): Promise<string>; watchWorkflow(): Promise<string>;
} }

View File

@ -0,0 +1,3 @@
export class ProviderResource {
public Name!: string;
}

View File

@ -0,0 +1,3 @@
export class ProviderWorkflow {
public Name!: string;
}

View File

@ -3,23 +3,25 @@ import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environm
import CloudRunnerLogger from '../../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { ProviderInterface } from '../provider-interface'; import { ProviderInterface } from '../provider-interface';
import CloudRunnerSecret from '../../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
import { ProviderResource } from '../provider-resource';
import { ProviderWorkflow } from '../provider-workflow';
class TestCloudRunner implements ProviderInterface { class TestCloudRunner implements ProviderInterface {
listWorkflow(): Promise<string[]> { listResources(): Promise<ProviderResource[]> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectWorkflow(): Promise<string> { inspectResources(): Promise<ProviderResource> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
inspectResources(): Promise<string> { listWorkflow(): Promise<ProviderWorkflow[]> {
throw new Error('Method not implemented.');
}
inspectWorkflow(): Promise<ProviderWorkflow> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
watchWorkflow(): Promise<string> { watchWorkflow(): Promise<string> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
listResources(): Promise<string[]> {
throw new Error('Method not implemented.');
}
garbageCollect( garbageCollect(
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter: string, filter: string,