Class: Fog::GoGrid::Real

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

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Real

Returns a new instance of Real.



47
48
49
50
51
52
53
54
55
# File 'lib/fog/go_grid.rb', line 47

def initialize(options={})
  @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



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

def common_lookup_list(lookup, options={})
  request(
    :path     => 'common/lookup/list',
    :query    => {'lookup' => lookup}.merge!(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



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

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



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

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



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

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

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

Create a new server

Parameters

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

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

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

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

  • ‘options’<~Hash>:

    • ‘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



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

def grid_server_add(image, ip, name, server_ram, options={})
  request(
    :path     => 'grid/server/add',
    :query    => {
      'image'       => image,
      'ip'          => ip,
      'name'        => name,
      'server.ram'  => server_ram
    }.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/go_grid/requests/grid_server_power.rb', line 15

def grid_server_delete(server, power)
  request(
    :path     => 'grid/server/power',
    :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



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

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



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

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

#reloadObject



57
58
59
# File 'lib/fog/go_grid.rb', line 57

def reload
  @connection.reset
end

#request(params) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/fog/go_grid.rb', line 61

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.4'
  })

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

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

  response
end