rest_connection 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,7 +4,7 @@
4
4
  "gem install rest_connection"
5
5
 
6
6
  ==== Installing from source
7
- "git clone http://github.com/twrodriguez/rest_connection.git"
7
+ "git clone http://github.com/rightscale/rest_connection.git"
8
8
  "gem install jeweler rspec"
9
9
  "rake check_dependencies" <- Install any gems listed.
10
10
  "rake install"
@@ -205,7 +205,7 @@ module RestConnection
205
205
  def handle_response(res)
206
206
  if res.code.to_i == 201 or res.code.to_i == 202
207
207
  return res['Location']
208
- elsif [200,203,204,302].detect { |d| d == res.code.to_i }
208
+ elsif [200,203,204].detect { |d| d == res.code.to_i }
209
209
  if res.body
210
210
  begin
211
211
  return JSON.load(res.body)
@@ -54,6 +54,7 @@ module RightScale
54
54
  end
55
55
 
56
56
  def nickname
57
+ raise TypeError.new("@params isn't a Hash! @params.to_s=#{@params.to_s}") unless @params.is_a?(Hash)
57
58
  @params["nickname"] || @params["name"]
58
59
  end
59
60
 
@@ -94,7 +95,7 @@ module RightScale
94
95
  end
95
96
 
96
97
  def method_missing(method_name, *args)
97
- puts "DEBUG: method_missing in #{self.class.to_s}: #{method_name}" if ENV['REST_CONNECT_DEBUG']
98
+ puts "DEBUG: method_missing in #{self.class.to_s}: #{method_name.to_s}" if ENV['REST_CONNECT_DEBUG']
98
99
  mn = method_name.to_s
99
100
  assignment = mn.gsub!(/=/,"")
100
101
  mn_dash = mn.gsub(/_/,"-")
@@ -118,7 +119,8 @@ module RightScale
118
119
  return self[mn]
119
120
  else
120
121
  return nil
121
- #raise "called unknown method #{method_name} with #{args.inspect}"
122
+ warn "!!!! WARNING - called unknown method #{method_name.to_s}# with #{args.inspect}"
123
+ #raise "called unknown method #{method_name.to_s}# with #{args.inspect}"
122
124
  end
123
125
  end
124
126
 
@@ -5,13 +5,13 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rest_connection"
8
- s.version = "0.1.0"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jeremy Deininger", "Timothy Rodriguez"]
12
- s.date = "2011-11-01"
12
+ s.date = "2012-02-27"
13
13
  s.description = "provides rest_connection"
14
- s.email = ["jeremy@rubyonlinux.org", "tw.rodriguez@gmail.com"]
14
+ s.email = ["daniel.onorato@rightscale.com"]
15
15
  s.extra_rdoc_files = [
16
16
  "README.rdoc"
17
17
  ]
@@ -110,7 +110,7 @@ Gem::Specification.new do |s|
110
110
  "spec/spec_helper.rb",
111
111
  "spec/tag_spec.rb"
112
112
  ]
113
- s.homepage = "http://github.com/twrodriguez/rest_connection"
113
+ s.homepage = "http://github.com/rigthscale/rest_connection"
114
114
  s.require_paths = ["lib"]
115
115
  s.rubygems_version = "1.7.2"
116
116
  s.summary = "lib for restful connections to the rightscale api"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_connection
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jeremy Deininger
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-02-10 00:00:00 Z
19
+ date: 2012-02-27 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: activesupport
@@ -78,24 +78,9 @@ dependencies:
78
78
  version: "0"
79
79
  type: :runtime
80
80
  version_requirements: *id004
81
- - !ruby/object:Gem::Dependency
82
- name: rest-client
83
- prerelease: false
84
- requirement: &id005 !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- hash: 3
90
- segments:
91
- - 0
92
- version: "0"
93
- type: :runtime
94
- version_requirements: *id005
95
- description: "A Modular RESTful API library. Current implemented modules: RightScale API"
81
+ description: provides rest_connection
96
82
  email:
97
- - jeremy@rubyonlinux.org
98
- - tw.rodriguez@gmail.com
83
+ - daniel.onorato@rightscale.com
99
84
  executables: []
100
85
 
101
86
  extensions: []
@@ -116,7 +101,6 @@ files:
116
101
  - examples/cucumber/step_definitions/spot_check_steps.rb
117
102
  - examples/relaunch_deployment.rb
118
103
  - examples/right_scale_ec2_instances_api_test.rb
119
- - git_hooks/post-commit
120
104
  - git_hooks/post-commit.disabled
121
105
  - git_hooks/post-merge.disabled
122
106
  - git_hooks/pre-commit
@@ -124,12 +108,9 @@ files:
124
108
  - lib/rest_connection/patches.rb
125
109
  - lib/rest_connection/rightscale/account.rb
126
110
  - lib/rest_connection/rightscale/alert_spec.rb
127
- - lib/rest_connection/rightscale/alert_spec_subject.rb
128
111
  - lib/rest_connection/rightscale/audit_entry.rb
129
- - lib/rest_connection/rightscale/backup.rb
130
112
  - lib/rest_connection/rightscale/child_account.rb
131
113
  - lib/rest_connection/rightscale/cloud.rb
132
- - lib/rest_connection/rightscale/cloud_account.rb
133
114
  - lib/rest_connection/rightscale/credential.rb
134
115
  - lib/rest_connection/rightscale/deployment.rb
135
116
  - lib/rest_connection/rightscale/ec2_ebs_snapshot.rb
@@ -137,14 +118,12 @@ files:
137
118
  - lib/rest_connection/rightscale/ec2_elastic_ip.rb
138
119
  - lib/rest_connection/rightscale/ec2_security_group.rb
139
120
  - lib/rest_connection/rightscale/ec2_server_array.rb
140
- - lib/rest_connection/rightscale/ec2_server_array_internal.rb
141
121
  - lib/rest_connection/rightscale/ec2_ssh_key.rb
142
122
  - lib/rest_connection/rightscale/ec2_ssh_key_internal.rb
143
123
  - lib/rest_connection/rightscale/executable.rb
144
124
  - lib/rest_connection/rightscale/instance.rb
145
125
  - lib/rest_connection/rightscale/instance_type.rb
146
126
  - lib/rest_connection/rightscale/macro.rb
147
- - lib/rest_connection/rightscale/mc_audit_entry.rb
148
127
  - lib/rest_connection/rightscale/mc_datacenter.rb
149
128
  - lib/rest_connection/rightscale/mc_deployment.rb
150
129
  - lib/rest_connection/rightscale/mc_image.rb
@@ -156,7 +135,6 @@ files:
156
135
  - lib/rest_connection/rightscale/mc_server.rb
157
136
  - lib/rest_connection/rightscale/mc_server_array.rb
158
137
  - lib/rest_connection/rightscale/mc_server_template.rb
159
- - lib/rest_connection/rightscale/mc_server_template_multi_cloud_image.rb
160
138
  - lib/rest_connection/rightscale/mc_ssh_key.rb
161
139
  - lib/rest_connection/rightscale/mc_tag.rb
162
140
  - lib/rest_connection/rightscale/mc_volume.rb
@@ -169,7 +147,6 @@ files:
169
147
  - lib/rest_connection/rightscale/multi_cloud_image_internal.rb
170
148
  - lib/rest_connection/rightscale/permission.rb
171
149
  - lib/rest_connection/rightscale/right_script.rb
172
- - lib/rest_connection/rightscale/right_script_attachment_internal.rb
173
150
  - lib/rest_connection/rightscale/right_script_internal.rb
174
151
  - lib/rest_connection/rightscale/rightscale_api_base.rb
175
152
  - lib/rest_connection/rightscale/rightscale_api_gateway.rb
@@ -180,20 +157,15 @@ files:
180
157
  - lib/rest_connection/rightscale/rightscale_api_taggable.rb
181
158
  - lib/rest_connection/rightscale/rs_internal.rb
182
159
  - lib/rest_connection/rightscale/s3_bucket.rb
183
- - lib/rest_connection/rightscale/security_group_rule.rb
184
160
  - lib/rest_connection/rightscale/server.rb
185
- - lib/rest_connection/rightscale/server_ec2_ebs_volume.rb
186
161
  - lib/rest_connection/rightscale/server_interface.rb
187
162
  - lib/rest_connection/rightscale/server_internal.rb
188
163
  - lib/rest_connection/rightscale/server_template.rb
189
164
  - lib/rest_connection/rightscale/server_template_internal.rb
190
- - lib/rest_connection/rightscale/session.rb
191
- - lib/rest_connection/rightscale/sqs_queue.rb
192
165
  - lib/rest_connection/rightscale/status.rb
193
166
  - lib/rest_connection/rightscale/tag.rb
194
167
  - lib/rest_connection/rightscale/task.rb
195
168
  - lib/rest_connection/rightscale/user.rb
196
- - lib/rest_connection/rightscale/vpc_dhcp_option.rb
197
169
  - lib/rest_connection/ssh_hax.rb
198
170
  - rest_connection.gemspec
199
171
  - spec/ec2_server_array_spec.rb
@@ -209,7 +181,7 @@ files:
209
181
  - spec/server_template_internal.rb
210
182
  - spec/spec_helper.rb
211
183
  - spec/tag_spec.rb
212
- homepage: http://github.com/rightscale/rest_connection
184
+ homepage: http://github.com/rigthscale/rest_connection
213
185
  licenses: []
214
186
 
215
187
  post_install_message:
@@ -238,9 +210,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
238
210
  requirements: []
239
211
 
240
212
  rubyforge_project:
241
- rubygems_version: 1.7.2
213
+ rubygems_version: 1.8.17
242
214
  signing_key:
243
215
  specification_version: 3
244
- summary: Modular RESTful API library
216
+ summary: lib for restful connections to the rightscale api
245
217
  test_files: []
246
218
 
@@ -1,43 +0,0 @@
1
- #!/usr/bin/env ruby
2
- puts <<EOS
3
- ..,ONMMMMMO.
4
- NM8~:~:.,+NMM=
5
- MO .MM:
6
- NM. ,MN
7
- .. .7MN . . 8M,
8
- ==. ?N: .MMN .,,.. 8$ZZ.~MN
9
- .$. N8 ,DD. ,MMN ...+:. .MMM
10
- D 8D.Z= .$. NMMM..,~8I ,88+. MMMM:.
11
- ,~... ,MM .N . MMMM7. .... MMMMM,
12
- DZ.. .:OZ.:M. ..8= .MMMM. .OMMMMM
13
- :7 . 8+$M:.D+ +MMMM, .:N+,MMD: 7MMMMM.
14
- .MM7:.... 8 .M. 7MMMMM. MMMMZMMMMO.7MMMMM.
15
- ,?. .. ..8 ,M =MMMMM MMN8$7O8DMM.OMMM~ +.
16
- N.. . .+ M, .MMMMMOM M8. .OM.MIMMMZ =,.
17
- =NZI+~, + I8 .MMMMMMM= .=DD, MMMMMI ~~
18
- O. .N + M. IMMMMMMMMMD ~MN 7MMMMMMM .Z
19
- .MNZZNMZ. . MM 7MMMMMMMMMMMMMMMMMMMMMMMM, .~M,.
20
- ID=. . . MMI MMMMMMMMMMMMMMMMMMMMMMMMMD. .+N
21
- .DMO,ZND+. MMM. :MMMMMMMMN =MMMMMMMMN:ZMMM,. +M~,$OD$
22
- .MMO... MMM OMMMMMMMM~ . ,I++O7. OMMM= .IM7 . .=..+MNI.
23
- .8MO :MMM .MMMMMMMMMM. MMMMM= ~D ?MO:7MN...
24
- +$ON. $NMM .NMMMMMMMMM7. .MMMMM. .8Z. :7N...MM:
25
- O7?N M+MMNMMMMMMMMMMMMMMMMMN MMMMMM8D. . $, .$8 M ..,$MN~,,.
26
- N$:=M. .NM.MM. ?MMMMMMO. .. D IO$IM:D.,$O, ,. O.I,Z :M: .+MI
27
- MO, MMI ..NM8.MM. =. MM..IMN7,. .,IDN7~MMMMMM, N .Z N.M. ,M. =N.
28
- .MO. MMMMMMMM::MM .: . .M :+I?=D.~.MMMMMMM?,,~INMMNNM+ ~ ~. D8. ,8.
29
- .M8. MMMMMMMM ZM$. 8 7. ~ M,MM+MMMMMMMMMMMMMMM.. , : ,M. .O+
30
- .MO. MMMMMMMI.MM, N = .....,IDI. MMMMMMMM8MMMMMM.. = M+ .M.
31
- .MZ~.MMMMMMM..MM . N .=. ?M,NMMMMMM?~MM$IMMM7MMMMM7 :O M
32
- M7I.NMMMMM8.$MZ.~ 8 .~, : MMMMMMMMMMMMM.~OOIMMM+MMMMM, .N M
33
- N=D OMMMMM, MM O .I .7. MMMMMMMMMMMMMMMMMMMMMD7NMM:MMMMN D .M
34
- O:M,~MMMMD NM? D.=, 8 OMMMMMMMMMMMMMMMMMMMMMZZMM?MMMM: ... Z .M
35
- +=M$ MMMZ :MN ~, D. I. ~MMMMMMM+,,~I, .NMMMMMZ.MDNMM7 I. . .M.
36
- .$NM .,.. MM .M :N. :~ .MMMMMM. MMMMMMZ=M,MM. .M. 7M
37
- .N.MM~ $MZ. O. N? N. ,MMMMMMM. MMMMMMMM+8Z: NZ. . .MI.
38
- .M.=MMMMN.. .+=..M. M. NMMMMMMMD 8MMMMMMM.MMM. $M. . ?, ~M.
39
- +. ~MM .. $, M: N: . 7MMMMMMN .~MMMMMM8,MMMMMMMMMMM ..M. :MM
40
- D N . ,M N NN. I8. $MMMMMMM?.. .?MMMMMMM?OMMMMMMMMMMMMMMMMMMMMI . ...MM$
41
- 7? .?N.7O DM ,M ZMMMMMMMMMM7.IMMMMMMMMD$MMMMMMMMMMMMMMMMMMMMMMMMZ: IMMN.
42
- .~MM?.=NM~DM8.. M 8MMMMMMMMMMMMMMMMM7=MMMMMMMMMMMMMMMMMD.IMMMNZZNMMN~
43
- EOS
@@ -1,21 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
- #
16
- class AlertSpecSubject
17
- include RightScale::Api::Base
18
- extend RightScale::Api::BaseExtend
19
-
20
- deny_methods :index, :destroy, :update, :show
21
- end
@@ -1,70 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
-
16
- #
17
- # You must have Beta v1.5 API access to use these internal API calls.
18
- #
19
- class Backup
20
- include RightScale::Api::Gateway
21
- extend RightScale::Api::GatewayExtend
22
-
23
- deny_methods :index
24
-
25
- def self.filters
26
- [:cloud_href, :committed, :completed, :from_master, :latest_before]
27
- end
28
-
29
- def self.find_all(lineage)
30
- index(lineage)
31
- end
32
-
33
- def self.find_with_filter(lineage, filter={})
34
- index(lineage, filter)
35
- end
36
-
37
- def self.index(lineage, filter={})
38
- filter_params = []
39
- filter.each { |key,val|
40
- unless self.filters.include?(key.to_sym)
41
- raise ArgumentError.new("#{key} is not a valid filter for resource #{self.resource_singular_name}")
42
- end
43
- filter_params << "#{key}==#{val}"
44
- }
45
-
46
- a = Array.new
47
- url = self.resource_plural_name
48
- hsh = {'lineage' => lineage}
49
- hsh.merge(:filter => filter_params) unless filter_params.empty?
50
- connection.get(url, hsh).each do |object|
51
- a << self.new(object)
52
- end
53
-
54
- return a
55
- end
56
-
57
- def self.cleanup(lineage, keep_last, params={})
58
- params.merge!('keep_last' => keep_last, 'lineage' => lineage)
59
- connection.post(resource_plural_name + "/cleanup", params)
60
- end
61
-
62
- def restore(instance_href, name=nil, description=nil)
63
- uri = URI.parse(self.href)
64
- params = {'instance_href' => instance_href}
65
- params.deep_merge!({'backup' => {'name' => name}}) if name
66
- params.deep_merge!({'backup' => {'description' => description}}) if description
67
- location = connection.post(uri.path + "/restore", params)
68
- Task.new('href' => location)
69
- end
70
- end
@@ -1,39 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
-
16
- #
17
- # You must have Beta v1.5 API access to use these internal API calls.
18
- #
19
- class CloudAccount
20
- include RightScale::Api::Gateway
21
- extend RightScale::Api::GatewayExtend
22
-
23
- deny_methods :update
24
-
25
- def cloud_id
26
- self.cloud.split("/").last
27
- end
28
-
29
- def create(opts)
30
- location = connection.post(self.resource_plural_name, self.resource_singular_name.to_sym => opts)
31
- if location =~ /aws/
32
- return "AWS Cloud Added successfully"
33
- else
34
- newrecord = self.new('links' => [ {'rel' => 'self', 'href' => location } ])
35
- newrecord.reload
36
- return newrecord
37
- end
38
- end
39
- end
@@ -1,43 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
-
16
- class Ec2ServerArray
17
- include RightScale::Api::Base
18
- extend RightScale::Api::BaseExtend
19
- include RightScale::Api::Taggable
20
- extend RightScale::Api::TaggableExtend
21
-
22
- deny_methods :index, :show, :create, :update, :destroy
23
-
24
- def run_script_on_instances(script, ec2_instance_hrefs=[], opts={})
25
- uri = URI.parse(self.href)
26
- case script
27
- when Executable then script = script.right_script
28
- when String then script = RightScript.new('href' => script)
29
- end
30
-
31
- params = {:right_script_href => script.href}
32
- unless ec2_instance_hrefs.nil? || ec2_instance_hrefs.empty?
33
- params[:ec2_instance_hrefs] = ec2_instance_hrefs
34
- end
35
- unless opts.nil? || opts.empty?
36
- params[:parameters] = opts
37
- end
38
- params = {:ec2_server_array => params}
39
- connection.post(uri.path + "/run_script_on_instances", params).map do |work_unit|
40
- Status.new('href' => location)
41
- end
42
- end
43
- end
@@ -1,101 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
-
16
- #
17
- # You must have Beta v1.5 API access to use these internal API calls.
18
- #
19
- class McAuditEntry
20
- include RightScale::Api::Gateway
21
- extend RightScale::Api::GatewayExtend
22
-
23
- deny_methods :destroy, :index
24
-
25
- def resource_plural_name
26
- "audit_entries"
27
- end
28
-
29
- def resource_singular_name
30
- "audit_entry"
31
- end
32
-
33
- def self.resource_plural_name
34
- "audit_entries"
35
- end
36
-
37
- def self.resource_singular_name
38
- "audit_entry"
39
- end
40
-
41
- def self.filters
42
- [:auditee_href, :user_email]
43
- end
44
-
45
- def self.find_all(start_date=nil, end_date=nil, limit=1000)
46
- start_date ||= (Time.now.utc - (60*60*24*31)).strftime(RightScale::Api::DATETIME_FMT)
47
- end_date ||= Time.now.utc.strftime(RightScale::Api::DATETIME_FMT)
48
- index(start_date, end_date, limit)
49
- end
50
-
51
- def self.find_with_filter(start_date, end_date, limit, filter)
52
- index(start_date, end_date, limit, filter)
53
- end
54
-
55
- def self.index(start_date, end_date, limit=1000, filter={})
56
- # Validate index params
57
- ex_fmt = "2011/06/25 00:00:00 +0000"
58
- regex = /^(\d{4})\/(\d{2})\/(\d{2}) (\d{2}):(\d{2}):(\d{2}) ([+-]\d{4})$/
59
- unless start_date =~ regex
60
- raise ArgumentError.new("start_date doesn't match format. e.g., #{ex_fmt}")
61
- end
62
- unless end_date =~ regex
63
- raise ArgumentError.new("end_date doesn't match format. e.g., #{ex_fmt}")
64
- end
65
- unless (1..1000) === limit.to_i
66
- raise ArgumentError.new("limit is not within the range of 1..1000")
67
- end
68
- filter_params = []
69
- filter.each { |key,val|
70
- unless self.filters.include?(key.to_sym)
71
- raise ArgumentError.new("#{key} is not a valid filter for resource #{self.resource_singular_name}")
72
- end
73
- filter_params << "#{key}==#{val}"
74
- }
75
-
76
- a = Array.new
77
- url = self.resource_plural_name
78
- if filter_params.empty?
79
- connection.get(url).each do |object|
80
- a << self.new(object)
81
- end
82
- else
83
- connection.get(url, :filter => filter_params).each do |object|
84
- a << self.new(object)
85
- end
86
- end
87
-
88
- return a
89
- end
90
-
91
- def append(detail, offset)
92
- uri = URI.parse(self.href)
93
- connection.post(uri.path + "/append", 'detail' => detail, 'offset' => offset)
94
- end
95
-
96
- def detail
97
- uri = URI.parse(self.href)
98
- res = connection.post(uri.path + "/detail")
99
- return res.body
100
- end
101
- end
@@ -1,50 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
-
16
- #
17
- # You must have Beta v1.5 API access to use these internal API calls.
18
- #
19
-
20
- class McServerTemplateMultiCloudImage
21
- include RightScale::Api::Gateway
22
- extend RightScale::Api::GatewayExtend
23
-
24
- deny_methods :update
25
-
26
- def resource_plural_name
27
- "server_template_multi_cloud_images"
28
- end
29
-
30
- def resource_singular_name
31
- "server_template_multi_cloud_image"
32
- end
33
-
34
- def self.resource_plural_name
35
- "server_template_multi_cloud_images"
36
- end
37
-
38
- def self.resource_singular_name
39
- "server_template_multi_cloud_image"
40
- end
41
-
42
- def self.filters
43
- [:is_default, :multi_cloud_image_href, :server_template_href]
44
- end
45
-
46
- def make_default
47
- my_href = URI.parse(self.href)
48
- connection.post(my_href + "/make_default")
49
- end
50
- end
@@ -1,92 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
-
16
- require 'rest-client'
17
- RestClient.log = ENV["REST_CONNECTION_LOG"] || "stdout"
18
-
19
- class RightScriptAttachmentInternal
20
- include RightScale::Api::Base
21
- extend RightScale::Api::BaseExtend
22
- include RightScale::Api::Internal
23
- extend RightScale::Api::InternalExtend
24
-
25
- deny_methods :index, :create, :update
26
-
27
- def resource_plural_name
28
- "right_script_attachments"
29
- end
30
-
31
- def resource_singular_name
32
- "right_script_attachment"
33
- end
34
-
35
- def self.resource_plural_name
36
- "right_script_attachments"
37
- end
38
-
39
- def self.resource_singular_name
40
- "right_script_attachment"
41
- end
42
-
43
- def self.get_s3_upload_params(right_script_href)
44
- url = self.resource_plural_name + "/get_s3_upload_params"
45
- params = {"right_script_href" => right_script_href}
46
- params = {self.resource_singular_name => params}
47
- connection.get(url, params)
48
- end
49
-
50
- =begin
51
- def self.upload(filepath, right_script_href)
52
- hsh = get_s3_upload_params(right_script_href)
53
- params = {}
54
- hsh.keys.each { |k| params[k.gsub(/-/,"_").to_sym] = hsh[k] }
55
- params[:file] = File.new(filepath, 'rb')
56
- req = RestClient::Request.new({
57
- :method => :post,
58
- :url => hsh["url"],
59
- :payload => params,
60
- :multipart => true,
61
- })
62
- s = req.payload.to_s
63
- splitter = s.split("\r\n").first
64
- a = s.split(/#{splitter}-?-?\r\n/)
65
- a.push(a.delete(a.detect { |n| n =~ %r{name="file";} }))
66
- new_payload = a.join(splitter + "\r\n") + splitter + "--\r\n"
67
-
68
- uri = URI.parse(hsh["url"])
69
- net_http = Net::HTTP::Post.new(uri.request_uri)
70
- req.transmit(uri, net_http, new_payload)
71
- # TODO: Precondition Failing
72
-
73
- callback_uri = URI.parse(hsh["success_action_redirect"])
74
- connection.get(callback_uri.request_uri)
75
- end
76
- =end
77
-
78
- def download
79
- self.reload unless @params["authenticated_s3_url"]
80
- RestClient.get(@params["authenticated_s3_url"])
81
- end
82
-
83
- def download_to_file(path=Dir.pwd)
84
- data = self.download
85
- File.open(File.join(path, @params["filename"]), 'w') { |f| f.write(data) }
86
- end
87
-
88
- def reload
89
- uri = URI.parse(self.href || "#{resource_plural_name}/#{@params["id"]}")
90
- @params ? @params.merge!(connection.get(uri.path)) : @params = connection.get(uri.path)
91
- end
92
- end
@@ -1,31 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
-
16
- #
17
- # You must have Beta v1.5 API access to use these internal API calls.
18
- #
19
- class SecurityGroupRule
20
- include RightScale::Api::Gateway
21
- extend RightScale::Api::GatewayExtend
22
-
23
- deny_methods :update
24
-
25
- def self.parse_args(cloud_id=nil, security_group_id=nil)
26
- if cloud_id.nil? ^ security_group_id.nil?
27
- raise ArgumentError.new("#{self} requires either 0 arguments, or 2 arguments")
28
- end
29
- "clouds/#{cloud_id}/security_groups/#{security_group_id}/"
30
- end
31
- end
@@ -1,40 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
- #
16
-
17
- class ServerEc2EbsVolume
18
- include RightScale::Api::Base
19
- extend RightScale::Api::BaseExtend
20
- include RightScale::Api::Taggable
21
- extend RightScale::Api::TaggableExtend
22
-
23
- deny_methods :index, :update
24
-
25
- def resource_plural_name
26
- "component_ec2_ebs_volumes"
27
- end
28
-
29
- def resource_singular_name
30
- "component_ec2_ebs_volume"
31
- end
32
-
33
- def self.resource_plural_name
34
- "component_ec2_ebs_volumes"
35
- end
36
-
37
- def self.resource_singular_name
38
- "component_ec2_ebs_volume"
39
- end
40
- end
@@ -1,61 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
-
16
- #
17
- # You must have Beta v1.5 API access to use these internal API calls.
18
- #
19
- class Session
20
- include RightScale::Api::Gateway
21
- extend RightScale::Api::GatewayExtend
22
-
23
- deny_methods :index, :destroy, :update, :show
24
-
25
- def self.index
26
- self.new(connection.get(resource_singular_name))
27
- end
28
-
29
- def self.create(opts={})
30
- settings = connection.settings
31
- ignored, account = settings[:api_url].split(/\/acct\//) if settings[:api_url].include?("acct")
32
- params = {
33
- "email" => settings[:user],
34
- "password" => settings[:pass],
35
- "account_href" => "/api/accounts/#{account}"
36
- }.merge(opts)
37
- resp = connection.post(resource_singular_name, params)
38
- connection.cookie = resp.response['set-cookie']
39
- end
40
-
41
- def self.accounts(opts={})
42
- settings = connection.settings
43
- params = {
44
- "email" => settings[:user],
45
- "password" => settings[:pass],
46
- }.merge(opts)
47
- a = Array.new
48
- connection.get(resource_singular_name + "/accounts").each do |object|
49
- a << Account.new(object)
50
- end
51
- return a
52
- end
53
-
54
- def self.create_instance_session
55
- # TODO
56
- end
57
-
58
- def self.index_instance_session
59
- # TODO
60
- end
61
- end
@@ -1,22 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
- #
16
-
17
- class SqsQueue
18
- include RightScale::Api::Base
19
- extend RightScale::Api::BaseExtend
20
-
21
- deny_methods :update
22
- end
@@ -1,19 +0,0 @@
1
- # This file is part of RestConnection
2
- #
3
- # RestConnection is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # RestConnection is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with RestConnection. If not, see <http://www.gnu.org/licenses/>.
15
-
16
- class VpcDhcpOption
17
- include RightScale::Api::Base
18
- extend RightScale::Api::BaseExtend
19
- end