rackspace-monitoring 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/VERSION +1 -1
  2. data/lib/rackspace-monitoring.rb +54 -28
  3. metadata +20 -20
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.2.4
@@ -9,7 +9,7 @@ module Fog
9
9
  ENDPOINT = 'https://monitoring.api.rackspacecloud.com/v1.0'
10
10
 
11
11
  requires :rackspace_api_key, :rackspace_username
12
- recognizes :rackspace_auth_url, :persistent
12
+ recognizes :rackspace_auth_url, :persistent, :raise_errors
13
13
  recognizes :rackspace_auth_token, :rackspace_service_url, :rackspace_account_id
14
14
 
15
15
  model_path 'rackspace-monitoring/monitoring/models'
@@ -66,8 +66,16 @@ module Fog
66
66
  @rackspace_service_url = options[:rackspace_service_url] || ENDPOINT
67
67
  @rackspace_must_reauthenticate = false
68
68
  @connection_options = options[:connection_options] || {}
69
+
70
+ if options.has_key("raise_errors")
71
+ @raise_errors = options[:raise_errors]
72
+ else
73
+ @raise_errors = true
74
+ end
75
+
69
76
  authenticate
70
77
  @persistent = options[:persistent] || false
78
+
71
79
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
72
80
  end
73
81
 
@@ -75,37 +83,48 @@ module Fog
75
83
  @connection.reset
76
84
  end
77
85
 
86
+ def raise_error(error)
87
+ if @raise_errors
88
+ raise error
89
+ else
90
+ print "Error occurred: " + error.message
91
+ end
92
+ end
93
+
78
94
  def request(params)
79
- print params
80
95
  begin
81
- response = @connection.request(params.merge({
82
- :headers => {
83
- 'Content-Type' => 'application/json',
84
- 'X-Auth-Token' => @auth_token
85
- }.merge!(params[:headers] || {}),
86
- :host => @host,
87
- :path => "#{@path}/#{params[:path]}"
88
- }))
89
- rescue Excon::Errors::Unauthorized => error
90
- if error.response.body != 'Bad username or password' # token expiration
91
- @rackspace_must_reauthenticate = true
92
- authenticate
93
- retry
94
- else # bad credentials
95
- raise error
96
+ begin
97
+ response = @connection.request(params.merge({
98
+ :headers => {
99
+ 'Content-Type' => 'application/json',
100
+ 'X-Auth-Token' => @auth_token
101
+ }.merge!(params[:headers] || {}),
102
+ :host => @host,
103
+ :path => "#{@path}/#{params[:path]}"
104
+ }))
105
+ rescue Excon::Errors::Unauthorized => error
106
+ if error.response.body != 'Bad username or password' # token expiration
107
+ @rackspace_must_reauthenticate = true
108
+ authenticate
109
+ retry
110
+ else # bad credentials
111
+ raise error
112
+ end
113
+ rescue Excon::Errors::HTTPStatusError => error
114
+ raise case error
115
+ when Excon::Errors::NotFound
116
+ Fog::Monitoring::Rackspace::NotFound.slurp(error)
117
+ else
118
+ error
119
+ end
96
120
  end
97
- rescue Excon::Errors::HTTPStatusError => error
98
- raise case error
99
- when Excon::Errors::NotFound
100
- Fog::Monitoring::Rackspace::NotFound.slurp(error)
101
- else
102
- error
121
+ unless response.body.empty?
122
+ response.body = JSON.parse(response.body)
103
123
  end
124
+ response
125
+ rescue Exception => error
126
+ raise_error(error)
104
127
  end
105
- unless response.body.empty?
106
- response.body = JSON.parse(response.body)
107
- end
108
- response
109
128
  end
110
129
 
111
130
  private
@@ -117,7 +136,14 @@ module Fog
117
136
  :rackspace_username => @rackspace_username,
118
137
  :rackspace_auth_url => @rackspace_auth_url
119
138
  }
120
- credentials = Fog::Rackspace.authenticate(options)
139
+
140
+ begin
141
+ credentials = Fog::Rackspace.authenticate(options)
142
+ rescue Exception => error
143
+ raise_error(error)
144
+ return
145
+ end
146
+
121
147
  @auth_token = credentials['X-Auth-Token']
122
148
  @account_id = credentials['X-Server-Management-Url'].match(/.*\/([\d]+)$/)[1]
123
149
  else
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rackspace-monitoring
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 3
10
- version: 0.2.3
9
+ - 4
10
+ version: 0.2.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dan Di Spaltro
@@ -15,10 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-06-21 00:00:00 Z
18
+ date: 2012-07-09 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- version_requirements: &id001 !ruby/object:Gem::Requirement
21
+ type: :runtime
22
+ requirement: &id001 !ruby/object:Gem::Requirement
22
23
  none: false
23
24
  requirements:
24
25
  - - "="
@@ -29,12 +30,12 @@ dependencies:
29
30
  - 7
30
31
  - 0
31
32
  version: 0.7.0
33
+ version_requirements: *id001
32
34
  name: fog
33
35
  prerelease: false
34
- type: :runtime
35
- requirement: *id001
36
36
  - !ruby/object:Gem::Dependency
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ type: :development
38
+ requirement: &id002 !ruby/object:Gem::Requirement
38
39
  none: false
39
40
  requirements:
40
41
  - - ">="
@@ -43,12 +44,12 @@ dependencies:
43
44
  segments:
44
45
  - 0
45
46
  version: "0"
47
+ version_requirements: *id002
46
48
  name: shoulda
47
49
  prerelease: false
48
- type: :development
49
- requirement: *id002
50
50
  - !ruby/object:Gem::Dependency
51
- version_requirements: &id003 !ruby/object:Gem::Requirement
51
+ type: :development
52
+ requirement: &id003 !ruby/object:Gem::Requirement
52
53
  none: false
53
54
  requirements:
54
55
  - - ~>
@@ -58,12 +59,12 @@ dependencies:
58
59
  - 3
59
60
  - 12
60
61
  version: "3.12"
62
+ version_requirements: *id003
61
63
  name: rdoc
62
64
  prerelease: false
63
- type: :development
64
- requirement: *id003
65
65
  - !ruby/object:Gem::Dependency
66
- version_requirements: &id004 !ruby/object:Gem::Requirement
66
+ type: :development
67
+ requirement: &id004 !ruby/object:Gem::Requirement
67
68
  none: false
68
69
  requirements:
69
70
  - - ">="
@@ -74,12 +75,12 @@ dependencies:
74
75
  - 0
75
76
  - 0
76
77
  version: 1.0.0
78
+ version_requirements: *id004
77
79
  name: bundler
78
80
  prerelease: false
79
- type: :development
80
- requirement: *id004
81
81
  - !ruby/object:Gem::Dependency
82
- version_requirements: &id005 !ruby/object:Gem::Requirement
82
+ type: :development
83
+ requirement: &id005 !ruby/object:Gem::Requirement
83
84
  none: false
84
85
  requirements:
85
86
  - - ~>
@@ -90,10 +91,9 @@ dependencies:
90
91
  - 8
91
92
  - 3
92
93
  version: 1.8.3
94
+ version_requirements: *id005
93
95
  name: jeweler
94
96
  prerelease: false
95
- type: :development
96
- requirement: *id005
97
97
  description: Rackspace Cloud Monitoring Ruby Bindings, built on top of fog.
98
98
  email: dan.dispaltro@gmail.com
99
99
  executables: []
@@ -173,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
173
  requirements: []
174
174
 
175
175
  rubyforge_project:
176
- rubygems_version: 1.8.15
176
+ rubygems_version: 1.8.13
177
177
  signing_key:
178
178
  specification_version: 3
179
179
  summary: Rackspace Cloud Monitoring Ruby Bindings