aws_helper 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,142 +1,142 @@
1
- #
2
- # Copyright:: Copyright (c) 2009 Opscode, Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require 'json'
19
- require 'open-uri'
20
- require 'syslog'
21
- require 'right_aws'
22
-
23
-
24
- module Awshelper
25
- module Ec2
26
- def find_snapshot_id(volume_id="", find_most_recent=false)
27
- snapshot_id = nil
28
- snapshots = if find_most_recent
29
- ec2.describe_snapshots.sort { |a,b| a[:aws_started_at] <=> b[:aws_started_at] }
30
- else
31
- ec2.describe_snapshots.sort { |a,b| b[:aws_started_at] <=> a[:aws_started_at] }
32
- end
33
- snapshots.each do |snapshot|
34
- if snapshot[:aws_volume_id] == volume_id
35
- snapshot_id = snapshot[:aws_id]
36
- end
37
- end
38
- log("Cannot find snapshot id!",'err') unless snapshot_id
39
- raise "Cannot find snapshot id!" unless snapshot_id
40
- log("Snapshot ID is #{snapshot_id}")
41
- snapshot_id
42
- end
43
-
44
- def ec2
45
- @@ec2 ||= create_aws_interface
46
- #(RightAws::Ec2)
47
- end
48
-
49
- def instance_id
50
- @@instance_id ||= query_instance_id
51
- end
52
-
53
- def ami_id
54
- @@ami_id ||= query_ami_id
55
- end
56
-
57
- def local_ipv4
58
- @@local_ipv4 ||= query_local_ipv4
59
- end
60
-
61
- def instance_availability_zone
62
- @@instance_availability_zone ||= query_instance_availability_zone
63
- end
64
-
65
- private
66
-
67
- def create_aws_interface
68
-
69
- region = instance_availability_zone
70
- region = region[0, region.length-1]
71
-
72
- aws_access_key = ENV['AWS_ACCESS_KEY_ID']
73
- aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
74
-
75
- if aws_access_key and aws_secret_access_key
76
- RightAws::Ec2.new(aws_access_key,aws_secret_access_key, {:region => region}) # :logger => Chef::Log,
77
- else
78
- log("No env var AWS_ACCESS_KEY_ID and 'AWS_SECRET_ACCESS_KEY so trying role credentials")
79
- creds = query_role_credentials
80
- RightAws::Ec2.new(creds['AccessKeyId'], creds['SecretAccessKey'], { :region => region, :token => creds['Token']})
81
- end
82
- end
83
-
84
- def query_role
85
- r = open("http://169.254.169.254/latest/meta-data/iam/security-credentials/",options = {:proxy => false}).readlines.first
86
- r
87
- end
88
-
89
- def query_role_credentials(role = query_role)
90
- log("Instance has no IAM role.",'err') if role.to_s.empty?
91
- fail "Instance has no IAM role." if role.to_s.empty?
92
- creds = open("http://169.254.169.254/latest/meta-data/iam/security-credentials/#{role}",options = {:proxy => false}){|f| JSON.parse(f.string)}
93
- log("Retrieved instance credentials for IAM role #{role}")
94
- creds
95
- end
96
-
97
- def query_instance_id
98
- instance_id = open('http://169.254.169.254/latest/meta-data/instance-id',options = {:proxy => false}){|f| f.gets}
99
- log("Cannot find instance id!",'err') unless instance_id
100
- raise "Cannot find instance id!" unless instance_id
101
- log("Instance ID is #{instance_id}")
102
- instance_id
103
- end
104
-
105
- def query_ami_id
106
- ami_id = open('http://169.254.169.254/latest/meta-data/ami-id',options = {:proxy => false}){|f| f.gets}
107
- log("Cannot find ami id!",'err') unless ami_id
108
- raise "Cannot find instance id!" unless ami_id
109
- log("Aim ID is #{ami_id}")
110
- ami_id
111
- end
112
-
113
- def query_local_ipv4
114
- local_ipv4 = open('http://169.254.169.254/latest/meta-data/local-ipv4',options = {:proxy => false}){|f| f.gets}
115
- log("Cannot find local_ipv4!",'err') unless local_ipv4
116
- raise "Cannot find local_ipv4!" unless local_ipv4
117
- log("local_ipv4 is #{local_ipv4}")
118
- local_ipv4
119
- end
120
-
121
- def query_instance_availability_zone
122
- availability_zone = open('http://169.254.169.254/latest/meta-data/placement/availability-zone/', options = {:proxy => false}){|f| f.gets}
123
- log("Cannot find availability zone!",'err') unless availability_zone
124
- raise "Cannot find availability zone!" unless availability_zone
125
- log("Instance's availability zone is #{availability_zone}")
126
- availability_zone
127
- end
128
-
129
- def log(message,type="info")
130
- # $0 is the current script name
131
- puts message
132
- Syslog.open($0, Syslog::LOG_PID | Syslog::LOG_CONS) { |s| s.info message } if type == "info"
133
- Syslog.open($0, Syslog::LOG_PID | Syslog::LOG_CONS) { |s| s.info message } if type == "err"
134
- end
135
-
136
- def proxy
137
- p = ENV['HTTP_PROXY'] if ENV['HTTP_PROXY']
138
- p
139
- end
140
- end
141
- end
142
-
1
+ #
2
+ # Copyright:: Copyright (c) 2009 Opscode, Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'json'
19
+ require 'open-uri'
20
+ require 'syslog'
21
+ require 'right_aws'
22
+
23
+
24
+ module Awshelper
25
+ module Ec2
26
+ def find_snapshot_id(volume_id="", find_most_recent=false)
27
+ snapshot_id = nil
28
+ snapshots = if find_most_recent
29
+ ec2.describe_snapshots.sort { |a,b| a[:aws_started_at] <=> b[:aws_started_at] }
30
+ else
31
+ ec2.describe_snapshots.sort { |a,b| b[:aws_started_at] <=> a[:aws_started_at] }
32
+ end
33
+ snapshots.each do |snapshot|
34
+ if snapshot[:aws_volume_id] == volume_id
35
+ snapshot_id = snapshot[:aws_id]
36
+ end
37
+ end
38
+ log("Cannot find snapshot id!",'err') unless snapshot_id
39
+ raise "Cannot find snapshot id!" unless snapshot_id
40
+ log("Snapshot ID is #{snapshot_id}")
41
+ snapshot_id
42
+ end
43
+
44
+ def ec2
45
+ @@ec2 ||= create_aws_interface
46
+ #(RightAws::Ec2)
47
+ end
48
+
49
+ def instance_id
50
+ @@instance_id ||= query_instance_id
51
+ end
52
+
53
+ def ami_id
54
+ @@ami_id ||= query_ami_id
55
+ end
56
+
57
+ def local_ipv4
58
+ @@local_ipv4 ||= query_local_ipv4
59
+ end
60
+
61
+ def instance_availability_zone
62
+ @@instance_availability_zone ||= query_instance_availability_zone
63
+ end
64
+
65
+ private
66
+
67
+ def create_aws_interface
68
+
69
+ region = instance_availability_zone
70
+ region = region[0, region.length-1]
71
+
72
+ aws_access_key = ENV['AWS_ACCESS_KEY_ID']
73
+ aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
74
+
75
+ if aws_access_key and aws_secret_access_key
76
+ RightAws::Ec2.new(aws_access_key,aws_secret_access_key, {:region => region}) # :logger => Chef::Log,
77
+ else
78
+ log("No env var AWS_ACCESS_KEY_ID and 'AWS_SECRET_ACCESS_KEY so trying role credentials")
79
+ creds = query_role_credentials
80
+ RightAws::Ec2.new(creds['AccessKeyId'], creds['SecretAccessKey'], { :region => region, :token => creds['Token']})
81
+ end
82
+ end
83
+
84
+ def query_role
85
+ r = open("http://169.254.169.254/latest/meta-data/iam/security-credentials/",options = {:proxy => false}).readlines.first
86
+ r
87
+ end
88
+
89
+ def query_role_credentials(role = query_role)
90
+ log("Instance has no IAM role.",'err') if role.to_s.empty?
91
+ fail "Instance has no IAM role." if role.to_s.empty?
92
+ creds = open("http://169.254.169.254/latest/meta-data/iam/security-credentials/#{role}",options = {:proxy => false}){|f| JSON.parse(f.string)}
93
+ log("Retrieved instance credentials for IAM role #{role}")
94
+ creds
95
+ end
96
+
97
+ def query_instance_id
98
+ instance_id = open('http://169.254.169.254/latest/meta-data/instance-id',options = {:proxy => false}){|f| f.gets}
99
+ log("Cannot find instance id!",'err') unless instance_id
100
+ raise "Cannot find instance id!" unless instance_id
101
+ log("Instance ID is #{instance_id}")
102
+ instance_id
103
+ end
104
+
105
+ def query_ami_id
106
+ ami_id = open('http://169.254.169.254/latest/meta-data/ami-id',options = {:proxy => false}){|f| f.gets}
107
+ log("Cannot find ami id!",'err') unless ami_id
108
+ raise "Cannot find instance id!" unless ami_id
109
+ log("Aim ID is #{ami_id}")
110
+ ami_id
111
+ end
112
+
113
+ def query_local_ipv4
114
+ local_ipv4 = open('http://169.254.169.254/latest/meta-data/local-ipv4',options = {:proxy => false}){|f| f.gets}
115
+ log("Cannot find local_ipv4!",'err') unless local_ipv4
116
+ raise "Cannot find local_ipv4!" unless local_ipv4
117
+ log("local_ipv4 is #{local_ipv4}")
118
+ local_ipv4
119
+ end
120
+
121
+ def query_instance_availability_zone
122
+ availability_zone = open('http://169.254.169.254/latest/meta-data/placement/availability-zone/', options = {:proxy => false}){|f| f.gets}
123
+ log("Cannot find availability zone!",'err') unless availability_zone
124
+ raise "Cannot find availability zone!" unless availability_zone
125
+ log("Instance's availability zone is #{availability_zone}")
126
+ availability_zone
127
+ end
128
+
129
+ def log(message,type="info")
130
+ # $0 is the current script name
131
+ puts message
132
+ Syslog.open($0, Syslog::LOG_PID | Syslog::LOG_CONS) { |s| s.info message } if type == "info"
133
+ Syslog.open($0, Syslog::LOG_PID | Syslog::LOG_CONS) { |s| s.info message } if type == "err"
134
+ end
135
+
136
+ def proxy
137
+ p = ENV['HTTP_PROXY'] if ENV['HTTP_PROXY']
138
+ p
139
+ end
140
+ end
141
+ end
142
+
@@ -1,12 +1,12 @@
1
- require File.join(File.dirname(__FILE__), 'ec2')
2
-
3
- module AwsHelper
4
- module Elb
5
- include AwsHelper::Ec2
6
-
7
- def elb
8
- @@elb ||= create_aws_interface(RightAws::ElbInterface)
9
- end
10
- end
11
- end
12
- end
1
+ require File.join(File.dirname(__FILE__), 'ec2')
2
+
3
+ module AwsHelper
4
+ module Elb
5
+ include AwsHelper::Ec2
6
+
7
+ def elb
8
+ @@elb ||= create_aws_interface(RightAws::ElbInterface)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
- module Awshelper
2
- VERSION = "0.0.9"
3
- end
1
+ module Awshelper
2
+ VERSION = "0.0.10"
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neill Turner
@@ -14,28 +14,28 @@ dependencies:
14
14
  name: right_aws
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description: "== DESCRIPTION:\n\nAws Helper for an instance \n\n== FEATURES:\n\nAllows
@@ -64,17 +64,17 @@ require_paths:
64
64
  - lib
65
65
  required_ruby_version: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  required_rubygems_version: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - '>='
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  requirements: []
76
- rubyforge_project: '[none]'
77
- rubygems_version: 2.0.14.1
76
+ rubyforge_project: "[none]"
77
+ rubygems_version: 2.2.2
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: Aws Helper for an instance