1 | Configuration = require './configuration'
|
2 | _ = require('underscore')._
|
3 |
|
4 | Async = require 'async'
|
5 |
|
6 | prepareFilters = (name, value, sensitive) ->
|
7 | if (_.isString(value) or _.isArray(value))
|
8 | if (sensitive)
|
9 | value = [
|
10 | "\*" + value.toUpperCase() + "\*",
|
11 | "\*" + value.toLowerCase() + "\*"
|
12 | ]
|
13 | else if (_.isString(value))
|
14 | value = ["\*" + value + "\*"]
|
15 |
|
16 | {"Filters": [{
|
17 | "Name": name,
|
18 | "Values": value
|
19 | }]}
|
20 |
|
21 |
|
22 | getInstancesByParams = (Ec2, params, callback) ->
|
23 | Ec2.describeInstances params, (err, data) ->
|
24 | if (not data?)
|
25 | callback(err)
|
26 | else
|
27 | callback null, _.reduceRight data.Reservations, (memo, reservation) ->
|
28 | memo.concat(reservation.Instances)
|
29 | , []
|
30 |
|
31 | getAllRecordSets = (Route53, callback) ->
|
32 | Route53.listHostedZones {}, (err, hostedZones) ->
|
33 | if (not hostedZones?)
|
34 | callback(err)
|
35 | else
|
36 | Async.concat hostedZones.HostedZones, (hz, cb) ->
|
37 | getAllRecordSetsAcc Route53, hz, [], null, null, cb
|
38 | , callback
|
39 |
|
40 | getAllRecordSetsAcc = (Route53, hz, acc, recordName, recordType, callback) ->
|
41 | if (recordName? and recordType?)
|
42 | params = {"HostedZoneId": hz.Id, "StartRecordName": recordName, "StartRecordType": recordType}
|
43 | else
|
44 | params = {"HostedZoneId": hz.Id}
|
45 |
|
46 | Route53.listResourceRecordSets params, (err, records) ->
|
47 | if (not records?)
|
48 | callback(err, [])
|
49 | else
|
50 | all = acc.concat records.ResourceRecordSets
|
51 |
|
52 | if (records.IsTruncated)
|
53 | getAllRecordSetsAcc(Route53, hz, all, records.NextRecordName, records.NextRecordType, callback)
|
54 | else
|
55 | callback(null, all)
|
56 |
|
57 | getLoadBalancersByNames = (Elb, names, callback) ->
|
58 | params = {"LoadBalancerNames": names}
|
59 |
|
60 | Elb.describeLoadBalancers params, (err, loadBalancers) ->
|
61 | if (not loadBalancers?)
|
62 | callback err
|
63 | else
|
64 | callback null, loadBalancers
|
65 |
|
66 | module.exports = {
|
67 | prepareFilters: prepareFilters,
|
68 | getInstancesByParams: getInstancesByParams,
|
69 | getAllRecordSets: getAllRecordSets,
|
70 | getLoadBalancersByNames: getLoadBalancersByNames
|
71 | }
|