improve cleanup to not delete in use task clusters
parent
1d2c23fdad
commit
8bd51be73f
|
|
@ -2103,7 +2103,21 @@ class AwsCliCommands {
|
||||||
const CF = new aws_sdk_1.default.CloudFormation();
|
const CF = new aws_sdk_1.default.CloudFormation();
|
||||||
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();
|
||||||
|
yield AwsCliCommands.awsListTasks((taskElement, element) => __awaiter(this, void 0, void 0, function* () {
|
||||||
|
var _a;
|
||||||
|
taskDefinitionsInUse.push(taskElement.taskDefinitionArn);
|
||||||
|
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(taskElement.CreatedAt))) {
|
||||||
|
cloud_runner_logger_1.default.log(`Stopping task ${(_a = taskElement.containers) === null || _a === void 0 ? void 0 : _a[0].name}`);
|
||||||
|
yield ecs.stopTask({ task: taskElement.taskArn || '', cluster: element }).promise();
|
||||||
|
}
|
||||||
|
}));
|
||||||
yield AwsCliCommands.awsListStacks((element) => __awaiter(this, void 0, void 0, function* () {
|
yield AwsCliCommands.awsListStacks((element) => __awaiter(this, void 0, void 0, function* () {
|
||||||
|
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))) {
|
||||||
|
cloud_runner_logger_1.default.log(`Skipping ${element.StackName} - active task was running not deleting`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(element.CreationTime))) {
|
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(element.CreationTime))) {
|
||||||
if (element.StackName === 'game-ci' || element.TemplateDescription === 'Game-CI base stack') {
|
if (element.StackName === 'game-ci' || element.TemplateDescription === 'Game-CI base stack') {
|
||||||
cloud_runner_logger_1.default.log(`Skipping ${element.StackName} ignore list`);
|
cloud_runner_logger_1.default.log(`Skipping ${element.StackName} ignore list`);
|
||||||
|
|
@ -2114,13 +2128,6 @@ class AwsCliCommands {
|
||||||
yield CF.deleteStack(deleteStackInput).promise();
|
yield CF.deleteStack(deleteStackInput).promise();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
yield AwsCliCommands.awsListTasks((taskElement, element) => __awaiter(this, void 0, void 0, function* () {
|
|
||||||
var _a;
|
|
||||||
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(taskElement.CreatedAt))) {
|
|
||||||
cloud_runner_logger_1.default.log(`Stopping task ${(_a = taskElement.containers) === null || _a === void 0 ? void 0 : _a[0].name}`);
|
|
||||||
yield ecs.stopTask({ task: taskElement.taskArn || '', cluster: element }).promise();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
yield AwsCliCommands.awsListLogGroups((element) => __awaiter(this, void 0, void 0, function* () {
|
yield AwsCliCommands.awsListLogGroups((element) => __awaiter(this, void 0, void 0, function* () {
|
||||||
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(new Date(element.createdAt)))) {
|
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(new Date(element.createdAt)))) {
|
||||||
cloud_runner_logger_1.default.log(`Deleting ${element.logGroupName}`);
|
cloud_runner_logger_1.default.log(`Deleting ${element.logGroupName}`);
|
||||||
|
|
@ -2134,7 +2141,7 @@ __decorate([
|
||||||
cli_functions_repository_1.CliFunction(`aws-list-all`, `List all resources`)
|
cli_functions_repository_1.CliFunction(`aws-list-all`, `List all resources`)
|
||||||
], AwsCliCommands, "awsListAll", null);
|
], AwsCliCommands, "awsListAll", null);
|
||||||
__decorate([
|
__decorate([
|
||||||
cli_functions_repository_1.CliFunction(`aws-garbage-collect`, `garbage collect aws resources not in use !WIP!`)
|
cli_functions_repository_1.CliFunction(`aws-garbage-collect-list`, `garbage collect aws resources not in use !WIP!`)
|
||||||
], AwsCliCommands, "garbageCollectAws", null);
|
], AwsCliCommands, "garbageCollectAws", null);
|
||||||
__decorate([
|
__decorate([
|
||||||
cli_functions_repository_1.CliFunction(`aws-garbage-collect-all`, `garbage collect aws resources regardless of whether they are in use`)
|
cli_functions_repository_1.CliFunction(`aws-garbage-collect-all`, `garbage collect aws resources regardless of whether they are in use`)
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -11,7 +11,7 @@ export class AwsCliCommands {
|
||||||
await AwsCliCommands.awsListTasks();
|
await AwsCliCommands.awsListTasks();
|
||||||
await AwsCliCommands.awsListLogGroups(undefined, true);
|
await AwsCliCommands.awsListLogGroups(undefined, true);
|
||||||
}
|
}
|
||||||
@CliFunction(`aws-garbage-collect`, `garbage collect aws resources not in use !WIP!`)
|
@CliFunction(`aws-garbage-collect-list`, `garbage collect aws resources not in use !WIP!`)
|
||||||
static async garbageCollectAws() {
|
static async garbageCollectAws() {
|
||||||
await AwsCliCommands.cleanup(false);
|
await AwsCliCommands.cleanup(false);
|
||||||
}
|
}
|
||||||
|
|
@ -142,7 +142,24 @@ export class AwsCliCommands {
|
||||||
const CF = new AWS.CloudFormation();
|
const CF = new AWS.CloudFormation();
|
||||||
const ecs = new AWS.ECS();
|
const ecs = new AWS.ECS();
|
||||||
const cwl = new AWS.CloudWatchLogs();
|
const cwl = new AWS.CloudWatchLogs();
|
||||||
|
const taskDefinitionsInUse = new Array();
|
||||||
|
await AwsCliCommands.awsListTasks(async (taskElement, element) => {
|
||||||
|
taskDefinitionsInUse.push(taskElement.taskDefinitionArn);
|
||||||
|
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(taskElement.CreatedAt))) {
|
||||||
|
CloudRunnerLogger.log(`Stopping task ${taskElement.containers?.[0].name}`);
|
||||||
|
await ecs.stopTask({ task: taskElement.taskArn || '', cluster: element }).promise();
|
||||||
|
}
|
||||||
|
});
|
||||||
await AwsCliCommands.awsListStacks(async (element) => {
|
await AwsCliCommands.awsListStacks(async (element) => {
|
||||||
|
if (
|
||||||
|
(await CF.describeStackResources({ StackName: element.StackName }).promise()).StackResources?.some(
|
||||||
|
(x) => x.ResourceType === 'AWS::ECS::TaskDefinition' && taskDefinitionsInUse.includes(x.PhysicalResourceId),
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
CloudRunnerLogger.log(`Skipping ${element.StackName} - active task was running not deleting`);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(element.CreationTime))) {
|
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(element.CreationTime))) {
|
||||||
if (element.StackName === 'game-ci' || element.TemplateDescription === 'Game-CI base stack') {
|
if (element.StackName === 'game-ci' || element.TemplateDescription === 'Game-CI base stack') {
|
||||||
CloudRunnerLogger.log(`Skipping ${element.StackName} ignore list`);
|
CloudRunnerLogger.log(`Skipping ${element.StackName} ignore list`);
|
||||||
|
|
@ -154,12 +171,6 @@ export class AwsCliCommands {
|
||||||
await CF.deleteStack(deleteStackInput).promise();
|
await CF.deleteStack(deleteStackInput).promise();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
await AwsCliCommands.awsListTasks(async (taskElement, element) => {
|
|
||||||
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(taskElement.CreatedAt))) {
|
|
||||||
CloudRunnerLogger.log(`Stopping task ${taskElement.containers?.[0].name}`);
|
|
||||||
await ecs.stopTask({ task: taskElement.taskArn || '', cluster: element }).promise();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
await AwsCliCommands.awsListLogGroups(async (element) => {
|
await AwsCliCommands.awsListLogGroups(async (element) => {
|
||||||
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(new Date(element.createdAt)))) {
|
if (deleteResources && (!OneDayOlderOnly || AwsCliCommands.isOlderThan1day(new Date(element.createdAt)))) {
|
||||||
CloudRunnerLogger.log(`Deleting ${element.logGroupName}`);
|
CloudRunnerLogger.log(`Deleting ${element.logGroupName}`);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue