rest_connection 0.0.13 → 0.0.14

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.13
1
+ 0.0.14
@@ -29,7 +29,7 @@ module RestConnection
29
29
  # :api_url =>
30
30
  # :user =>
31
31
  # :pass =>
32
- attr_accessor :settings
32
+ attr_accessor :settings, :cookie
33
33
 
34
34
  # RestConnection api settings configuration file:
35
35
  # Settings are loaded from a yaml configuration file in users home directory.
@@ -48,6 +48,8 @@ module RestConnection
48
48
  logger("WARNING: see GEM_HOME/rest_connection/config/rest_api_config.yaml for example config")
49
49
  @settings = {}
50
50
  end
51
+ @settings[:extension] = ".js"
52
+ @settings[:api_href] = @settings[:api_url] unless @settings[:api_href]
51
53
  end
52
54
 
53
55
  # Main HTTP connection loop. Common settings are set here, then we yield(BASE_URI, OPTIONAL_HEADERS) to other methods for each type of HTTP request: GET, PUT, POST, DELETE
@@ -60,16 +62,19 @@ module RestConnection
60
62
  # end
61
63
  #
62
64
  def rest_connect(&block)
63
- uri = URI.parse(@settings[:api_url])
65
+ uri = URI.parse(@settings[:api_href])
64
66
  http = Net::HTTP.new(uri.host, uri.port)
65
67
  if uri.scheme == 'https'
66
68
  http.use_ssl = true
67
69
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
68
70
  end
69
71
  headers = @settings[:common_headers]
72
+ headers.merge!("Cookie" => @cookie) if @cookie
70
73
  http.start do |http|
71
74
  req = yield(uri, headers)
72
- req.basic_auth(@settings[:user], @settings[:pass]) if @settings[:user]
75
+ unless @cookie
76
+ req.basic_auth(@settings[:user], @settings[:pass]) if @settings[:user]
77
+ end
73
78
  logger("#{req.method}: #{req.path}")
74
79
  logger("\trequest body: #{req.body}") if req.body
75
80
  response, body = http.request(req)
@@ -84,7 +89,7 @@ module RestConnection
84
89
  def get(href, additional_parameters = "")
85
90
  rest_connect do |base_uri,headers|
86
91
  href = "#{base_uri}/#{href}" unless begins_with_slash(href)
87
- new_path = URI.escape(href + '.js?' + requestify(additional_parameters))
92
+ new_path = URI.escape(href + @settings[:extension] + "?") + requestify(additional_parameters)
88
93
  Net::HTTP::Get.new(new_path, headers)
89
94
  end
90
95
  end
@@ -146,7 +151,7 @@ module RestConnection
146
151
  def handle_response(res)
147
152
  if res.code.to_i == 201
148
153
  return res['Location']
149
- elsif [200,203,204].detect { |d| d == res.code.to_i }
154
+ elsif [200,203,204,302].detect { |d| d == res.code.to_i }
150
155
  if res.body
151
156
  begin
152
157
  return JSON.load(res.body)
@@ -36,4 +36,13 @@ class Deployment
36
36
  s.reload
37
37
  end
38
38
  end
39
+
40
+ def duplicate
41
+ clone
42
+ end
43
+
44
+ def clone
45
+ deploy_href = URI.parse(self.href)
46
+ Deployment.new(:href => connection.post(deploy_href.path + "/duplicate"))
47
+ end
39
48
  end
@@ -0,0 +1,39 @@
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 McServer
20
+ include RightScale::Api::Gateway
21
+ extend RightScale::Api::GatewayExtend
22
+
23
+ def resource_plural_name
24
+ "servers"
25
+ end
26
+
27
+ def resource_singular_name
28
+ "server"
29
+ end
30
+
31
+ def self.resource_plural_name
32
+ "servers"
33
+ end
34
+
35
+ def self.resource_singular_name
36
+ "server"
37
+ end
38
+
39
+ end
@@ -20,6 +20,11 @@ module RightScale
20
20
  module BaseExtend
21
21
  def connection()
22
22
  @@connection ||= RestConnection::Connection.new
23
+ settings = @@connection.settings
24
+ settings[:common_headers]["X_API_VERSION"] = "1.0"
25
+ settings[:api_href] = settings[:api_url]
26
+ settings[:extension] = ".js"
27
+ @@connection
23
28
  end
24
29
 
25
30
  def resource_plural_name
@@ -121,6 +126,11 @@ module RightScale
121
126
 
122
127
  def connection()
123
128
  @@connection ||= RestConnection::Connection.new
129
+ settings = @@connection.settings
130
+ settings[:common_headers]["X_API_VERSION"] = "1.0"
131
+ settings[:api_href] = settings[:api_url]
132
+ settings[:extension] = ".js"
133
+ @@connection
124
134
  end
125
135
 
126
136
  def resource_plural_name
@@ -0,0 +1,48 @@
1
+ module RightScale
2
+ module Api
3
+ module Gateway
4
+ def connection
5
+ @@gateway_connection ||= RestConnection::Connection.new
6
+ settings = @@gateway_connection.settings
7
+ settings[:common_headers]["X_API_VERSION"] = "1.5"
8
+ settings[:api_href], account = settings[:api_url].split(/\/acct\//) if settings[:api_url].include?("acct")
9
+ settings[:extension] = ""
10
+ unless @@gateway_connection.cookie
11
+ # login
12
+ params = { "email" => settings[:user], "password" => settings[:pass], "account_href" => "/api/accounts/#{account}" }
13
+ resp = @@gateway_connection.post("session", params)
14
+ raise "ERROR: Login failed. #{resp.message}. Code:#{resp.code}" unless resp.code == "302" || resp.code == "204"
15
+ @@gateway_connection.cookie = resp.response['set-cookie']
16
+
17
+ # test session
18
+ resp, data = @@gateway_connection.get("session")
19
+ raise "ERROR: Invalid session. #{resp.message}. Code:#{resp.code}" unless resp.code == "200"
20
+ end
21
+ @@gateway_connection
22
+ end
23
+ end
24
+
25
+ module GatewayExtend
26
+ def connection
27
+ @@gateway_connection ||= RestConnection::Connection.new
28
+ settings = @@gateway_connection.settings
29
+ settings[:common_headers]["X_API_VERSION"] = "1.5"
30
+ settings[:api_href], account = settings[:api_url].split(/\/acct\//) if settings[:api_url].include?("acct")
31
+ settings[:extension] = ""
32
+ unless @@gateway_connection.cookie
33
+ # login
34
+ params = { "email" => settings[:user], "password" => settings[:pass], "account_href" => "/api/accounts/#{account}" }
35
+ resp = @@gateway_connection.post("session", params)
36
+ raise "ERROR: Login failed. #{resp.message}. Code:#{resp.code}" unless resp.code == "302" || resp.code == "204"
37
+ @@gateway_connection.cookie = resp.response['set-cookie']
38
+
39
+ # test session
40
+ resp, data = @@gateway_connection.get("session")
41
+ raise "ERROR: Invalid session. #{resp.message}. Code:#{resp.code}" unless resp.code == "200"
42
+ end
43
+ @@gateway_connection
44
+ end
45
+ end
46
+ end
47
+ end
48
+
@@ -3,7 +3,10 @@ module RightScale
3
3
  module Internal
4
4
  def connection
5
5
  @@little_brother_connection ||= RestConnection::Connection.new
6
- @@little_brother_connection.settings[:common_headers] = { 'X-API-VERSION' => '0.1' }
6
+ settings = @@little_brother_connection.settings
7
+ settings[:common_headers]["X_API_VERSION"] = "0.1"
8
+ settings[:api_href] = settings[:api_url]
9
+ settings[:extension] = ".js"
7
10
  @@little_brother_connection
8
11
  end
9
12
  end
@@ -11,7 +14,10 @@ module RightScale
11
14
  module InternalExtend
12
15
  def connection
13
16
  @@little_brother_connection ||= RestConnection::Connection.new
14
- @@little_brother_connection.settings[:common_headers] = { 'X-API-VERSION' => '0.1' }
17
+ settings = @@little_brother_connection.settings
18
+ settings[:common_headers]["X_API_VERSION"] = "0.1"
19
+ settings[:api_href] = settings[:api_url]
20
+ settings[:extension] = ".js"
15
21
  @@little_brother_connection
16
22
  end
17
23
  end
@@ -16,6 +16,7 @@
16
16
 
17
17
  require 'rest_connection/rightscale/rightscale_api_base'
18
18
  require 'rest_connection/rightscale/rightscale_api_internal'
19
+ require 'rest_connection/rightscale/rightscale_api_gateway'
19
20
  require 'rest_connection/rightscale/executable'
20
21
  require 'rest_connection/rightscale/server'
21
22
  require 'rest_connection/rightscale/deployment'
@@ -33,6 +34,7 @@ require 'rest_connection/rightscale/alert_spec'
33
34
  require 'rest_connection/rightscale/ec2_ebs_volume'
34
35
  require 'rest_connection/rightscale/ec2_ebs_snapshot'
35
36
  require 'rest_connection/rightscale/server_internal'
37
+ require 'rest_connection/rightscale/mc_server'
36
38
  require 'rest_connection/rightscale/ec2_ssh_key_internal'
37
39
  require 'rest_connection/rightscale/server_template_internal'
38
40
  require 'rest_connection/rightscale/right_script_internal'
@@ -22,13 +22,19 @@ class RsInternal
22
22
 
23
23
  def connection
24
24
  @@little_brother_connection ||= RestConnection::Connection.new
25
- @@little_brother_connection.settings[:common_headers] = { 'X-API-VERSION' => '0.1' }
25
+ settings = @@little_brother_connection.settings
26
+ settings[:common_headers]["X_API_VERSION"] = "0.1"
27
+ settings[:api_href] = settings[:api_url]
28
+ settings[:extension] = ".js"
26
29
  @@little_brother_connection
27
30
  end
28
31
 
29
32
  def self.connection
30
33
  @@little_brother_connection ||= RestConnection::Connection.new
31
- @@little_brother_connection.settings[:common_headers] = { 'X-API-VERSION' => '0.1' }
34
+ settings = @@little_brother_connection.settings
35
+ settings[:common_headers]["X_API_VERSION"] = "0.1"
36
+ settings[:api_href] = settings[:api_url]
37
+ settings[:extension] = ".js"
32
38
  @@little_brother_connection
33
39
  end
34
40
 
@@ -184,9 +184,9 @@ class Server
184
184
  connection.post(serv_href.path + "/attach_volume", hash)
185
185
  end
186
186
 
187
- def get_sketchy_data
187
+ def get_sketchy_data(params = {})
188
188
  serv_href = URI.parse(self.href)
189
- @params.merge! connection.get(serv_href.path + "/get_sketchy_data")
189
+ @params.merge! connection.get(serv_href.path + "/get_sketchy_data", params)
190
190
  end
191
191
 
192
192
  def monitoring
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rest_connection}
8
- s.version = "0.0.13"
8
+ s.version = "0.0.14"
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"]
12
- s.date = %q{2010-11-01}
12
+ s.date = %q{2010-12-13}
13
13
  s.description = %q{provides rest_connection}
14
14
  s.email = %q{jeremy@rubyonlinux.org}
15
15
  s.extra_rdoc_files = [
@@ -42,12 +42,14 @@ Gem::Specification.new do |s|
42
42
  "lib/rest_connection/rightscale/ec2_ssh_key_internal.rb",
43
43
  "lib/rest_connection/rightscale/executable.rb",
44
44
  "lib/rest_connection/rightscale/instance.rb",
45
+ "lib/rest_connection/rightscale/mc_server.rb",
45
46
  "lib/rest_connection/rightscale/multi_cloud_image.rb",
46
47
  "lib/rest_connection/rightscale/multi_cloud_image_cloud_setting_internal.rb",
47
48
  "lib/rest_connection/rightscale/multi_cloud_image_internal.rb",
48
49
  "lib/rest_connection/rightscale/right_script.rb",
49
50
  "lib/rest_connection/rightscale/right_script_internal.rb",
50
51
  "lib/rest_connection/rightscale/rightscale_api_base.rb",
52
+ "lib/rest_connection/rightscale/rightscale_api_gateway.rb",
51
53
  "lib/rest_connection/rightscale/rightscale_api_internal.rb",
52
54
  "lib/rest_connection/rightscale/rightscale_api_resources.rb",
53
55
  "lib/rest_connection/rightscale/rs_internal.rb",
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: 5
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 13
10
- version: 0.0.13
9
+ - 14
10
+ version: 0.0.14
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jeremy Deininger
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-01 00:00:00 -07:00
18
+ date: 2010-12-13 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -95,12 +95,14 @@ files:
95
95
  - lib/rest_connection/rightscale/ec2_ssh_key_internal.rb
96
96
  - lib/rest_connection/rightscale/executable.rb
97
97
  - lib/rest_connection/rightscale/instance.rb
98
+ - lib/rest_connection/rightscale/mc_server.rb
98
99
  - lib/rest_connection/rightscale/multi_cloud_image.rb
99
100
  - lib/rest_connection/rightscale/multi_cloud_image_cloud_setting_internal.rb
100
101
  - lib/rest_connection/rightscale/multi_cloud_image_internal.rb
101
102
  - lib/rest_connection/rightscale/right_script.rb
102
103
  - lib/rest_connection/rightscale/right_script_internal.rb
103
104
  - lib/rest_connection/rightscale/rightscale_api_base.rb
105
+ - lib/rest_connection/rightscale/rightscale_api_gateway.rb
104
106
  - lib/rest_connection/rightscale/rightscale_api_internal.rb
105
107
  - lib/rest_connection/rightscale/rightscale_api_resources.rb
106
108
  - lib/rest_connection/rightscale/rs_internal.rb