awful 0.0.93 → 0.0.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a0a4132adc118afec50403d29200e553ec057b19
4
- data.tar.gz: 79bc71f1b91f45ede9f6d2686ac380aa3768a87a
3
+ metadata.gz: 9932dbe8c2c2317a74d5eef41bb3ccf472833910
4
+ data.tar.gz: d67153dad78acac983e8375364964be7503e8701
5
5
  SHA512:
6
- metadata.gz: 4fbd2c3c0ade46f60c641ecc4697f6c10cd7c49bab410df2a5c310dd05a0003f9ddafce7da78b4f166c4331fe97b9281a66332a3aa9dc19c8ef563fc9ce96769
7
- data.tar.gz: 932792e53431084af0b5fffb1722e23f70c128b334f9b03b284b1a6b375266605f8c7e59fb947bdb0f610031945c3d3ddf321b32ba36443ee718254f7d1877a5
6
+ metadata.gz: ea8acf559c5e07a562428aee94fb3cb15e8bbe44c5113c3384c29a3f412e9593ac864fa381146fb682549914e081f0e1812e1deb1d3fe8c405f45d86732065a5
7
+ data.tar.gz: eac45d06cfc36d50cd12069ea58782e1048cc9348c79073e50b1faead012da8db4f35bb2cb8245356a5e8b24361eb2a04033f1fe072e454783ad658e3ba0761c
data/lib/awful/route53.rb CHANGED
@@ -11,6 +11,12 @@ module Awful
11
11
  @route53 ||= Aws::Route53::Client.new
12
12
  end
13
13
 
14
+ ## extract domain part of dns name
15
+ def get_domain(name)
16
+ name.split('.').last(2).join('.')
17
+ end
18
+
19
+ ## get hosted zone id from domain name
14
20
  def get_zone_by_name(name)
15
21
  if name.match(/^Z[A-Z0-9]{13}$/) # id is 14 char upcase string starting with Z
16
22
  name
@@ -30,6 +36,12 @@ module Awful
30
36
  end
31
37
  end
32
38
  end
39
+
40
+ ## return dns name and hosted zone id
41
+ def get_elb_dns(name)
42
+ desc = elb.describe_load_balancers(load_balancer_names: [name]).load_balancer_descriptions[0]
43
+ ['dualstack.' + desc.dns_name, desc.canonical_hosted_zone_name_id]
44
+ end
33
45
  end
34
46
 
35
47
  desc 'ls [NAME]', 'list hosted zones'
@@ -96,68 +108,39 @@ module Awful
96
108
  end
97
109
 
98
110
  # desc 'update NAME', 'change a record set'
99
- # method_option :type, aliases: '-t', type: :string, default: 'A', desc: 'Type of record: SOA, A, TXT, NS, CNAME, MX, PTR, SRV, SPF, AAAA'
100
- # method_option :alias, aliases: '-a', type: :boolean, default: false, desc: 'Create an ALIAS record'
111
+ # # method_option :type, aliases: '-t', type: :string, default: 'A', desc: 'Type of record: SOA, A, TXT, NS, CNAME, MX, PTR, SRV, SPF, AAAA'
112
+ # # method_option :alias, aliases: '-a', type: :boolean, default: false, desc: 'Create an ALIAS record'
101
113
  # def update(name, target)
102
- # zone = name.split('.').last(2).join('.')
103
- # hosted_zone_id = get_zone_by_name(zone)
104
- # rrset = {
105
- # name: name,
106
- # type: options[:type].upcase
107
- # }
108
- # if options[:alias]
109
- # rrset.merge!(
110
- # alias_target: {
111
- # hosted_zone_id: 'Z35SXDOTRQ7X7K',
112
- # # dns_name: 'dualstack.release-1-elbadmin-uhcp4ix1utqo-918434006.us-east-1.elb.amazonaws.com.',
113
- # dns_name: target,
114
- # evaluate_target_health: false
115
- # }
116
- # )
117
- # else
118
- # rrset.merge!(
119
- # ttl: 180, # required for non-alias, not allowed for alias
120
- # resource_records: [{value: target}]
121
- # )
122
- # end
123
-
124
- # params = {
125
- # hosted_zone_id: hosted_zone_id,
126
- # change_batch: {
127
- # changes: [
128
- # {
129
- # action: 'UPSERT',
130
- # resource_record_set: rrset
131
- # # {
132
- # # name: name,
133
- # # type: options[:type].upcase,
134
- # # ttl: 180, # required for non-alias, not allowed for alias
135
- # # # resource_records: [
136
- # # # {value: target}
137
- # # # ]
138
- # # alias_target: {
139
- # # hosted_zone_id: 'Z35SXDOTRQ7X7K',
140
- # # dns_name: 'dualstack.release-1-elbadmin-uhcp4ix1utqo-918434006.us-east-1.elb.amazonaws.com.',
141
- # # evaluate_target_health: false
142
- # # }
143
- # # }
144
- # }
145
- # ]
146
- # }
147
- # }
148
- # # if options[:alias]
149
- # # params[:change_batch][:changes][0][:alias_target] = {
150
- # # # hosted_zone_id: '/hostedzone/Z3DZXE0Q79N41H',
151
- # # hosted_zone_id: 'Z35SXDOTRQ7X7K',
152
- # # # dns_name: target,
153
- # # dns_name: 'dualstack.release-1-elbadmin-uhcp4ix1utqo-918434006.us-east-1.elb.amazonaws.com.',
154
- # # evaluate_target_health: false
155
- # # }
156
- # # end
157
- # p params
158
- # route53.change_resource_record_sets(params).tap do |response|
159
- # puts YAML.dump(stringify_keys(response.change_info.to_hash))
160
- # end
161
114
  # end
115
+
116
+ ## create/update alias to ELB record; later add S3, CF, Beanstalk, rrsets
117
+ desc 'alias NAME', 'upsert an alias to an AWS resource given by name'
118
+ method_option :resource, aliases: '-r', type: :string, default: 'elb', desc: 'Type of target resource, for now just `elb`'
119
+ method_option :type, aliases: '-t', type: :string, default: 'A', desc: 'Type of record: A, SOA, TXT, NS, CNAME, MX, PTR, SRV, SPF, AAAA'
120
+ def alias(name, target)
121
+ dns_name, hosted_zone_id = send("get_#{options[:resource]}_dns", target)
122
+ params = {
123
+ hosted_zone_id: get_zone_by_name(get_domain(name)),
124
+ change_batch: {
125
+ changes: [
126
+ {
127
+ action: 'UPSERT',
128
+ resource_record_set: {
129
+ name: name,
130
+ type: options[:type],
131
+ alias_target: {
132
+ hosted_zone_id: hosted_zone_id,
133
+ dns_name: dns_name,
134
+ evaluate_target_health: false
135
+ }
136
+ }
137
+ }
138
+ ]
139
+ }
140
+ }
141
+ route53.change_resource_record_sets(params).tap do |response|
142
+ puts YAML.dump(stringify_keys(response.change_info.to_hash))
143
+ end
144
+ end
162
145
  end
163
146
  end
data/lib/awful/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Awful
2
- VERSION = '0.0.93'
2
+ VERSION = '0.0.94'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.93
4
+ version: 0.0.94
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ric Lister
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-02 00:00:00.000000000 Z
11
+ date: 2016-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler