UNPKG

@salto-io/da-playa

Version:

Deploy locks management (CLI and Slackbot)

98 lines 5.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.jobCommands = exports.RunningJobsModelDetails = void 0; const commander_1 = require("commander"); const running_1 = require("../running"); const common_1 = require("./common"); var running_2 = require("../running"); Object.defineProperty(exports, "RunningJobsModelDetails", { enumerable: true, get: function () { return running_2.RunningJobsModelDetails; } }); const jobCommands = (envDynamoDBRegion) => { const getJobs = async ({ jobname, ttl, dynamoDBRegion, skipped = false, json = false, }) => { const runningJobs = await (0, running_1.RunningJobs)({ dynamoDBRegion }); const listOfJobs = await runningJobs[skipped ? 'getSkippedJobs' : 'getRunningJobs']({ ttl, jobname }); if (json) { (0, common_1.log)(JSON.stringify(listOfJobs)); return; } (0, common_1.log)(`Found ${common_1.prettify.misc(listOfJobs.length)} job${listOfJobs.length > 1 || listOfJobs.length === 0 ? 's' : ''} for ${common_1.prettify.env(jobname)}${listOfJobs.length > 0 ? ':' : ''}`); listOfJobs.forEach(job => { (0, common_1.log)(`User: ${common_1.prettify.user(job.user)}, Version: ${common_1.prettify.env(job.version)}`); }); }; const program = new commander_1.Command('jobs') .description('Manage running jobs'); program .command('get') .description('get a job') .requiredOption('--jobname <jobname>', 'Name') .requiredOption('--gitversion <version>', 'Version') .option('--json', 'Output raw json') .option('--dynamoDBRegion <dynamoDBRegion>', 'DynamoDB Region (Optional, Taken from DAPLAYA_AWS_REGION if set)', envDynamoDBRegion) .action(async ({ jobname, json, gitversion, ...rest }) => { const runningJobs = await (0, running_1.RunningJobs)(rest); const job = await runningJobs.getJob({ version: gitversion, jobname }); if (!job) { if (json) { return; } (0, common_1.log)(`No job found for version ${gitversion} on job ${jobname}`); return; } if (json) { (0, common_1.log)(JSON.stringify(job)); return; } (0, common_1.log)(`Found job ${common_1.prettify.env(job.jobname)} for ${common_1.prettify.user(job.user)} with version ${common_1.prettify.misc(job.version)}${common_1.prettify.error(job.skipped ? ' (skipped)' : '')}${common_1.prettify.user(job.ended !== undefined ? ' (ended)' : '')}`); }); program .command('start') .description('start a job') .requiredOption('--jobname <jobname>', 'Name') .requiredOption('--user <user>', 'Trigger user') .requiredOption('--gitversion <version>', 'Version') .option('--dynamoDBRegion <dynamoDBRegion>', 'DynamoDB Region (Optional, Taken from DAPLAYA_AWS_REGION if set)', envDynamoDBRegion) .action(async ({ jobname, user, gitversion, ...rest }) => { const runningJobs = await (0, running_1.RunningJobs)(rest); const created = await runningJobs.startJob({ user, version: gitversion, jobname }); (0, common_1.log)(`Created job ${common_1.prettify.env(created.jobname)} for ${common_1.prettify.user(created.user)} with version ${common_1.prettify.misc(created.version)}`); }); program .command('end') .description('end a job') .requiredOption('--jobname <jobname>', 'Name') .requiredOption('--user <user>', 'Trigger user') .requiredOption('--gitversion <version>', 'Version') .option('--dynamoDBRegion <dynamoDBRegion>', 'DynamoDB Region (Optional, Taken from DAPLAYA_AWS_REGION if set)', envDynamoDBRegion) .option('--skipped', 'Set job as skipped') .action(async ({ jobname, user, gitversion, skipped, ...rest }) => { const runningJobs = await (0, running_1.RunningJobs)(rest); const ended = await runningJobs.endJob({ user, version: gitversion, jobname, skipped }); if (!ended) { (0, common_1.log)('Did not find any job to end!'); } else { (0, common_1.log)(`Ended job ${common_1.prettify.env(ended.jobname)} for ${common_1.prettify.user(ended.user)} with version ${common_1.prettify.misc(ended.version)}${skipped ? ` and marked as ${common_1.prettify.misc('skipped')}` : ''}`); } }); program .command('active') .description('Get\'s all running jobs') .requiredOption('--jobname <jobname>', 'Job name') .option('--dynamoDBRegion <dynamoDBRegion>', 'DynamoDB Region (Optional, Taken from DAPLAYA_AWS_REGION if set)', envDynamoDBRegion) .option('--ttl <ttl>', 'Timeframe in milliseconds to lookup active jobs') .option('--json', 'Output raw json') .action(getJobs); program .command('skipped') .description('Get\'s all skipped jobs') .requiredOption('--jobname <jobname>', 'Job Name') .option('--dynamoDBRegion <dynamoDBRegion>', 'DynamoDB Region (Optional, Taken from DAPLAYA_AWS_REGION if set)', envDynamoDBRegion) .option('--ttl <ttl>', 'Timeframe in milliseconds to lookup active jobs') .option('--json', 'Output raw json') .action(params => getJobs({ ...params, skipped: true })); return program; }; exports.jobCommands = jobCommands; //# sourceMappingURL=jobs.js.map