mirror of
https://github.com/serverless/serverless.git
synced 2026-01-18 14:58:43 +00:00
79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
const AWS = require('aws-sdk');
|
|
const { region, persistentRequest } = require('../misc');
|
|
|
|
function findStacks(name, status) {
|
|
const CF = new AWS.CloudFormation({ region });
|
|
|
|
const params = {};
|
|
if (status) {
|
|
params.StackStatusFilter = status;
|
|
}
|
|
|
|
function recursiveFind(found, token) {
|
|
if (token) params.NextToken = token;
|
|
return CF.listStacks(params)
|
|
.promise()
|
|
.then(result => {
|
|
const matches = result.StackSummaries.filter(stack => stack.StackName.match(name));
|
|
if (matches.length) {
|
|
found.push(...matches);
|
|
}
|
|
if (result.NextToken) return recursiveFind(found, result.NextToken);
|
|
return found;
|
|
});
|
|
}
|
|
|
|
return recursiveFind([]);
|
|
}
|
|
|
|
function deleteStack(stack) {
|
|
const CF = new AWS.CloudFormation({ region });
|
|
|
|
const params = {
|
|
StackName: stack,
|
|
};
|
|
|
|
return CF.deleteStack(params).promise();
|
|
}
|
|
|
|
function listStackResources(stack) {
|
|
const CF = new AWS.CloudFormation({ region });
|
|
|
|
const params = {
|
|
StackName: stack,
|
|
};
|
|
|
|
function recursiveFind(resources, token) {
|
|
if (token) params.NextToken = token;
|
|
return CF.listStackResources(params)
|
|
.promise()
|
|
.then(result => {
|
|
resources.push(...result.StackResourceSummaries);
|
|
if (result.NextToken) return recursiveFind(resources, result.NextToken);
|
|
return resources;
|
|
});
|
|
}
|
|
|
|
return recursiveFind([]);
|
|
}
|
|
|
|
function listStacks(status) {
|
|
const CF = new AWS.CloudFormation({ region });
|
|
|
|
const params = {};
|
|
if (status) {
|
|
params.StackStatusFilter = status;
|
|
}
|
|
|
|
return CF.listStacks(params).promise();
|
|
}
|
|
|
|
module.exports = {
|
|
findStacks: persistentRequest.bind(this, findStacks),
|
|
deleteStack: persistentRequest.bind(this, deleteStack),
|
|
listStackResources: persistentRequest.bind(this, listStackResources),
|
|
listStacks: persistentRequest.bind(this, listStacks),
|
|
};
|