hubot-aws-cfpb
Version:
CFPB-specific Hubot aws commands. Forked from the excellent https://github.com/yoheimuta/hubot-aws/ and heavily modified for our particular usage needs
58 lines (44 loc) • 1.7 kB
text/coffeescript
ec2 = require('../../ec2.coffee')
moment = require('moment')
validator = require('validator')
tags =
DEFAULT_SCHEDULE: "8:18"
SCHEDULE_TAG: "RunSchedule"
# convert our concise schedule strings ("8:18") to the new UTC-based format
formatSchedule: (hours) ->
[_, start, stop] = hours.match /^(\d{1,2}):(\d{1,2})$/
invalidHours = [start, stop]
.map((e) -> validator.isInt(e, {min: 0, max: 24}))
.some((e) -> !e)
if invalidHours
throw new Error("Start/stop hours must be between 0 and 24")
startUtc = moment({hour: start, minute: 0}).utc().hour().toString()
stopUtc = moment({hour: stop, minute: 0}).utc().hour().toString()
[
"#{startUtc.padStart(2, '0').padEnd(4, '0')}",
"#{stopUtc.padStart(2, '0').padEnd(4, '0')}",
"utc",
"mon,tue,wed,thu,fri",
].join ";"
addSchedule: (msg, instances, schedule = tags.DEFAULT_SCHEDULE) ->
try
scheduleFmt = if schedule then tags.formatSchedule(schedule) else ""
catch e
return msg.send(
"Error parsing schedule; verify correct 24-hour format (eg '8:18')."
)
ec2.createTags(
{Resources: instances, Tags: [Key: tags.SCHEDULE_TAG, Value: scheduleFmt]},
(err, res) ->
if err
console.log "Error creating tags: #{err}"
if msg
return msg.send "Error creating tags: #{err}" if err
)
removeSchedule: (msg, instances) ->
return tags.addSchedule(msg, instances, "")
addReservation:(msg, instance, content) ->
ec2.createTags {Resources: [instance], Tags: content}, (err, res) ->
if msg
return msg.send "Error creating tags: #{err}" if err
module.exports = tags