@salto-io/da-playa
Version:
Deploy locks management (CLI and Slackbot)
98 lines • 5.49 kB
JavaScript
;
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