in backend/src/cleanup/clear-ecs-cluster.js [7:121]
clearEcsCluster: function (event, context, cb) {
console.log("Event=", event);
console.log("Context=", context);
if (event.RequestType === 'Delete') {
var tasks = null;
var taskDefinitions = null;
var failure = 0;
var blankArray = new Object();
blankArray = [];
var clusterName = event.ResourceProperties.ECSClusterName;
var taskRoleArn = event.ResourceProperties.ECSTaskRoleArn;
console.log("Found cluster name: ", clusterName);
tasks = listTasks(ecs, clusterName);
tasks.then(function(result) {
if (JSON.stringify(result.taskArns) === JSON.stringify(blankArray)) {
console.log("No tasks exist in cluster", clusterName);
console.log("listTasks API returned", result);
} else {
console.log("Task(s) found for cluster ", clusterName, ". DELETING");
console.log(result);
var stop = [];
for (var i = 0, len = result.taskArns.length; i < len; i++) {
stop.push(stopTask(ecs, clusterName, result.taskArns[i]));
}
Promise.all(stop)
.then(function(result) {
for (var i = 0, len = result.length; i < len; i++) {
console.log("Stopped Task", result[i].task.taskArn);
}
})
.catch(function(err) {
console.log("ERROR: stopTask API call failed!");
console.log(err);
sendResponse(event, context, "FAILED");
failure = 1;
});
}
}, function(err) {
console.log("ERROR: listTasks API call failed!");
console.log(err);
sendResponse(event, context, "FAILED");
failure = 1;
});
console.log("Found task role arn: ", taskRoleArn);
taskDefinitions = listActiveTaskDefinitions(ecs);
taskDefinitions.then(function(result) {
if (JSON.stringify(result.taskDefinitionArns) === JSON.stringify(blankArray)) {
console.log("No task definitions found with Role Arn ", taskRoleArn);
console.log("listTaskDefinitions API returned", result);
} else {
console.log("Task Definition(s) found. DELETING");
console.log(result);
var descTaskDef = [];
for (var i = 0, len = result.taskDefinitionArns.length; i < len; i++) {
descTaskDef.push(describeTaskDefinition(ecs, result.taskDefinitionArns[i]));
}
Promise.all(descTaskDef)
.then(function(result) {
var deregister = [];
for (var i = 0, len = result.length; i < len; i++) {
console.log(result[i].taskDefinition.taskRoleArn, " = ", taskRoleArn);
if ( result[i].taskDefinition.taskRoleArn === taskRoleArn ) {
deregister.push(deregisterTaskDefinition(ecs, result[i].taskDefinition.taskDefinitionArn));
}
Promise.all(deregister)
.then(function(result) {
for (var i = 0, len = result.length; i < len; i++) {
console.log("Deregistered Task Definition", result[i].taskDefinition.taskDefinitionArn);
}
})
.catch(function(err) {
console.log("ERROR: deregisterTaskDefinition API call failed!");
console.log(err);
sendResponse(event, context, "FAILED");
failure = 1;
});
}
})
.catch(function(err) {
console.log("ERROR: describeTaskDefinition API call failed!");
console.log(err);
sendResponse(event, context, "FAILED");
failure = 1;
});
}
}, function(err) {
console.log("ERROR: listTaskDefinitions API call failed!");
console.log(err);
sendResponse(event, context, "FAILED");
failure = 1;
});
if ( failure === 0 ) {
sendResponse(event, context, "SUCCESS");
}
} else {
console.log("Delete not requested.");
sendResponse(event, context, "SUCCESS");
}
}