rest_connection 0.1.3 → 0.1.4

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.
@@ -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