UNPKG

@artilleryio/platform-fargate

Version:
88 lines (76 loc) 2.17 kB
'use strict'; const A = require('async'); const debug = require('debug')('commands:list-tests'); const util = require('../util'); const createS3Client = require('../utils/create-s3-client'); const setDefaultAWSCredentials = require('../utils/aws-set-default-credentials'); function tryDeleteTest(testName, options) { deleteTest(testName, options); } async function deleteTest(testName, options) { await setDefaultAWSCredentials(); A.waterfall( [ A.constant({ testName: testName }), async function(context) { context.s3Bucket = await util.getBucketName(); return context; }, listTestObjects, deleteTestObjects ], function(err, context) { if (err) { // Check error type - special message for when test does not exist? Or list first to make // sure. console.error(`Error: ${err.message}`); debug(err); process.exit(1); } else { console.log(`Deleted named test ${testName}`); } }); } function listTestObjects(context, callback) { const prefix = `tests/${context.testName}/`; util.listAllObjectsWithPrefix( context.s3Bucket, prefix, (err, testObjects) => { if (err) { return callback(err, context); } if (testObjects.length === 0) { return callback(new Error(`Test ${context.testName} not found`), context); } else { context.testObjectKeys = testObjects; return callback(null, context); } }); } // TODO: deleteObjects supports up to 1000 objects at a time. This function // should work with more than 1000 objects OR 1000 objects should be a limit // for a test package. function deleteTestObjects(context, callback) { const s3 = createS3Client(); const params = { Bucket: context.s3Bucket, Delete: { Objects: context.testObjectKeys.map((o) => { return { Key: o.Key }; }), Quiet: true } }; s3.deleteObjects( params, (s3Err, s3Resp) => { if (s3Err) { return callback(s3Err, context); } return callback(null, context); }); } module.exports = { tryDeleteTest };