Class: Fog::GoGrid::Compute::Real

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/compute/go_grid.rb,
lib/fog/compute/requests/go_grid/grid_ip_list.rb,
lib/fog/compute/requests/go_grid/grid_image_get.rb,
lib/fog/compute/requests/go_grid/grid_image_list.rb,
lib/fog/compute/requests/go_grid/grid_server_add.rb,
lib/fog/compute/requests/go_grid/grid_server_get.rb,
lib/fog/compute/requests/go_grid/grid_server_list.rb,
lib/fog/compute/requests/go_grid/grid_server_power.rb,
lib/fog/compute/requests/go_grid/common_lookup_list.rb,
lib/fog/compute/requests/go_grid/grid_server_delete.rb,
lib/fog/compute/requests/go_grid/grid_loadbalancer_list.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Real

Returns a new instance of Real.



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/fog/compute/go_grid.rb', line 58

def initialize(options={})
  unless options.delete(:provider)
    location = caller.first
    warning = "[yellow][WARN] Fog::GoGrid::Compute.new is deprecated, use Fog::Compute.new(:provider => 'GoGrid') instead[/]"
    warning << " [light_black](" << location << ")[/] "
    Formatador.display_line(warning)
  end

  require 'digest/md5'
  require 'json'
  @go_grid_api_key = options[:go_grid_api_key]
  @go_grid_shared_secret = options[:go_grid_shared_secret]
  @host   = options[:host]    || "api.gogrid.com"
  @path   = options[:path]    || "/api"
  @port   = options[:port]    || 443
  @scheme = options[:scheme]  || 'https'
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
end

Instance Method Details

#common_lookup_list(lookup, options = {}) ⇒ Object

List options and lookups

Parameters

  • ‘lookup’<~String> - the lookup to be listed

  • options<~Hash>:

    • ‘sort’<~String> - column to sort result by in [‘description’, ‘id’, ‘name’]

    • ‘asc’<~String> - order to sort in [‘true’,‘false’]

Returns

  • response<~Excon::Response>:

    • body<~Array>:

TODO: docs



18
19
20
21
22
23
# File 'lib/fog/compute/requests/go_grid/common_lookup_list.rb', line 18

def common_lookup_list(lookup, options={})
  request(
    :path     => 'common/lookup/list',
    :query    => {'lookup' => lookup}.merge!(options)
  )
end

#grid_image_get(options = {}) ⇒ Object

List images

Parameters

  • options<~Hash>:

    • ‘id’<~String> - ID of the image

    • ‘name’<~String> - Name of the image

    • ‘image’<~String> - ID(s) or Name(s) of the images to retrive. Can be speicifed multiple times

Returns

  • response<~Excon::Response>:

    • body<~Array>:

TODO: docs



18
19
20
21
22
23
# File 'lib/fog/compute/requests/go_grid/grid_image_get.rb', line 18

def grid_image_get(options={})
  request(
    :path     => 'grid/image/get',
    :query    => options
  )
end

#grid_image_list(options = {}) ⇒ Object

List images

Parameters

  • options<~Hash>:

    • ‘datacenter’<~String> - datacenter to limit results to

    • ‘isPublic’<~String> - If true only returns public images, in [‘false’, ‘true’]

    • ‘num_items’<~Integer> - Number of items to return

    • ‘page’<~Integer> - Page index for paginated results

    • ‘state’<~String> - state to limit results to, in [‘Saving’, ‘Available’]

    • ‘type’<~String> - image type to limit results to

Returns

  • response<~Excon::Response>:

    • body<~Array>:

TODO: docs



21
22
23
24
25
26
# File 'lib/fog/compute/requests/go_grid/grid_image_list.rb', line 21

def grid_image_list(options={})
  request(
    :path     => 'grid/image/list',
    :query    => options
  )
end

#grid_ip_list(options = {}) ⇒ Object

List ips

Parameters

  • options<~Hash>:

    • ‘datacenter’<~String> - datacenter to limit results to

    • ‘ip.state’<~String> - state to limit results to in ip.state

    • ‘ip.type’<~String> - type to limit results to in ip.type

    • ‘num_items’<~Integer> - Number of items to return

    • ‘page’<~Integer> - Page index for paginated results

Returns

  • response<~Excon::Response>:

    • body<~Array>:

TODO: docs



20
21
22
23
24
25
# File 'lib/fog/compute/requests/go_grid/grid_ip_list.rb', line 20

def grid_ip_list(options={})
  request(
    :path     => 'grid/ip/list',
    :query    => options
  )
end

#grid_loadbalancer_list(options = {}) ⇒ Object

List load balancers

Parameters

  • options<~Hash>:

    • ‘datacenter’<~String> - datacenter to limit results to

    • ‘num_items’<~Integer> - Number of items to return

    • ‘page’<~Integer> - Page index for paginated results

Returns

  • response<~Excon::Response>:

    • body<~Array>:

TODO: docs



18
19
20
21
22
23
# File 'lib/fog/compute/requests/go_grid/grid_loadbalancer_list.rb', line 18

def grid_loadbalancer_list(options={})
  request(
    :path     => 'grid/loadbalancer/list',
    :query    => options
  )
end

#grid_server_add(name, image, ip, options = {}) ⇒ Object

Create a new server

Parameters

  • ‘name’<~String> - name of the server, 20 or fewer characters

  • ‘image’<~String> - image to use, in grid_image_list

  • ‘ip’<~String> - initial public ip for this server

  • ‘options’<~Hash>:

    • ‘server.ram’<~String> - flavor to use, in common_lookup_list(‘server.ram’)

    • ‘description’<~String> - description of this server

    • ‘isSandbox’<~String> - treat this server as image sandbox? in [‘true’, ‘false’]

Returns

  • response<~Excon::Response>:

    • body<~Array>:

TODO: docs



21
22
23
24
25
26
27
28
29
30
# File 'lib/fog/compute/requests/go_grid/grid_server_add.rb', line 21

def grid_server_add(name, image, ip, options={})
  request(
    :path     => 'grid/server/add',
    :query    => {
      'image'       => image,
      'ip'          => ip,
      'name'        => name,
    }.merge!(options)
  )
end

#grid_server_delete(server) ⇒ Object

Delete a server

Parameters

  • ‘server’<~String> - id or name of server to delete

Returns

  • response<~Excon::Response>:

    • body<~Array>:

TODO: docs



15
16
17
18
19
20
# File 'lib/fog/compute/requests/go_grid/grid_server_delete.rb', line 15

def grid_server_delete(server)
  request(
    :path     => 'grid/server/delete',
    :query    => {'server' => server}
  )
end

#grid_server_get(servers) ⇒ Object

Get one or more servers by name

Parameters

  • ‘server’<~String> - id or name of server(s) to lookup

Returns

  • response<~Excon::Response>:

    • body<~Array>:

TODO: docs



15
16
17
18
19
20
# File 'lib/fog/compute/requests/go_grid/grid_server_get.rb', line 15

def grid_server_get(servers)
  request(
    :path     => 'grid/server/get',
    :query    => {'server' => [*servers]}
  )
end

#grid_server_list(options = {}) ⇒ Object

List servers

Parameters

  • options<~Hash>:

    • ‘datacenter’<~String> - datacenter to limit results to

    • ‘isSandbox’<~String> - If true only returns Image Sandbox servers, in [‘false’, ‘true’]

    • ‘num_items’<~Integer> - Number of items to return

    • ‘page’<~Integer> - Page index for paginated results

    • ‘server.type’<~String> - server type to limit results to

Returns

  • response<~Excon::Response>:

    • body<~Array>:

TODO: docs



20
21
22
23
24
25
# File 'lib/fog/compute/requests/go_grid/grid_server_list.rb', line 20

def grid_server_list(options={})
  request(
    :path     => 'grid/server/list',
    :query    => options
  )
end

#grid_server_power(server, power) ⇒ Object

Start, Stop or Restart a server

Parameters

  • ‘server’<~String> - id or name of server to power

  • ‘power’<~String> - power operation, in [‘restart’, ‘start’, ‘stop’]

Returns

  • response<~Excon::Response>:

    • body<~Array>:

TODO: docs



16
17
18
19
20
21
# File 'lib/fog/compute/requests/go_grid/grid_server_power.rb', line 16

def grid_server_power(server, power)
  request(
    :path     => 'grid/server/power',
    :query    => {'server' => server}
  )
end

#reloadObject



77
78
79
# File 'lib/fog/compute/go_grid.rb', line 77

def reload
  @connection.reset
end

#request(params) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/fog/compute/go_grid.rb', line 81

def request(params)
  params = {
    :expects  => 200,
    :method   => 'GET'
  }.merge!(params)

  params[:query] ||= {}
  params[:query].merge!({
    'api_key' => @go_grid_api_key,
    'format'  => 'json',
    'sig'     => Digest::MD5.hexdigest("#{@go_grid_api_key}#{@go_grid_shared_secret}#{Time.now.to_i}"),
    'v'       => '1.5'
  })

  begin
    response = @connection.request(
      params.merge!(:path => "#{@path}/#{params[:path]}")
    )
  rescue Excon::Errors::HTTPStatusError => error
    raise case error
    when Excon::Errors::NotFound
      Fog::GoGrid::Compute::NotFound.slurp(error)
    else
      error
    end
  end

  unless response.body.empty?
    response.body = JSON.parse(response.body)
  end

  response
end