Class: Fog::Compute::BareMetalCloud::Real

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/bare_metal_cloud/compute.rb,
lib/fog/bare_metal_cloud/requests/compute/list_plans.rb,
lib/fog/bare_metal_cloud/requests/compute/get_server.rb,
lib/fog/bare_metal_cloud/requests/compute/add_server.rb,
lib/fog/bare_metal_cloud/requests/compute/list_images.rb,
lib/fog/bare_metal_cloud/requests/compute/list_servers.rb,
lib/fog/bare_metal_cloud/requests/compute/reboot_server.rb,
lib/fog/bare_metal_cloud/requests/compute/cancel_server.rb,
lib/fog/bare_metal_cloud/requests/compute/list_configurations.rb,
lib/fog/bare_metal_cloud/requests/compute/add_server_by_configuration.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
56
57
# File 'lib/fog/bare_metal_cloud/compute.rb', line 47

def initialize(options={})

  @bare_metal_cloud_password = options[:bare_metal_cloud_password]
  @bare_metal_cloud_username = options[:bare_metal_cloud_username]
  @connection_options = options[:connection_options] || {}
  @host       = options[:host]        || "noc.newservers.com"
  @persistent = options[:persistent]  || false
  @port       = options[:port]        || 443
  @scheme     = options[:scheme]      || 'https'
  @connection = Fog::XML::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
end

Instance Method Details

#add_server(plan_id, options = {}) ⇒ Object

Boot a new server

Parameters

  • planId<~String> - The id of the plan to boot the server with

  • options<~Hash>: optional extra arguments

    • imageId<~String> - Optional image to boot server from

    • name<~String> - Name to boot new server with

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'server'<~Hash>:

        • 'id'<~String> - Id of the image



19
20
21
22
23
24
25
26
27
# File 'lib/fog/bare_metal_cloud/requests/compute/add_server.rb', line 19

def add_server(plan_id, options = {})
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::ToHashDocument.new,
    :path     => 'api/addServer',
    :query    => {'planId' => plan_id}.merge!(options)
  )
end

#add_server_by_configuration(config, options = {}) ⇒ Object

Boot a new server by configuration

Parameters

  • config<~String> - The Hardware configuration string

  • options<~Hash>: optional extra arguments

    • imageName<~String> - Optional imageName to be installed

    • name<~String> - Optional server Name

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'server'<~Hash>:

        • 'id'<~String> - Id of the image



19
20
21
22
23
24
25
26
27
# File 'lib/fog/bare_metal_cloud/requests/compute/add_server_by_configuration.rb', line 19

def add_server_by_configuration(config, options = {})
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::ToHashDocument.new,
    :path     => 'api/addServerByConfiguration',
    :query    => {'configuration' => config}.merge!(options)
  )
end

#cancel_server(server_id) ⇒ Object

Shutdown a running server

Parameters

  • serverId<~String> - The id of the server to shutdown

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'server'<~Hash>:

        • 'id'<~String> - Id of the image



16
17
18
19
20
21
22
23
24
# File 'lib/fog/bare_metal_cloud/requests/compute/cancel_server.rb', line 16

def cancel_server(server_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::ToHashDocument.new,
    :path     => 'api/cancelServer',
    :query    => {'serverId' => server_id}
  )
end

#get_server(server_id) ⇒ Object

List servers

Parameters

  • serverId<~String> - Id of the server

Returns

  • response<~Excon::Response>:

    • body<~Has>:

      • server<~Hash>:

        • 'id'<~String> - Id of the server

        • 'mac-address'<~String> - mac-address of the server

        • 'ip'<~Hash>:

          • 'address'<~String> - Address of the ip

          • 'name'<~String> - Name of the ip

        • 'login'<~Hash>:

          • 'name'<~String> - Name of the login

          • 'password'<~String> - Password of the login

          • 'username'<~String> - Username of the login

        • 'name'<~String> - Name of the server

        • 'notes'<~String> - Notes about the server

        • 'state'<~String> - State of the server



27
28
29
30
31
32
33
34
35
# File 'lib/fog/bare_metal_cloud/requests/compute/get_server.rb', line 27

def get_server(server_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::ToHashDocument.new,
    :path     => 'api/getServer',
    :query    => {'serverId' => server_id}
  )
end

#list_configurationsObject

List Configurations

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • available-server<~Array>:

        • 'configuration'<~String> - Hardware Configuration string

        • 'quantity'<~String>: - quantity of servers to a certain configuration



14
15
16
17
18
19
20
21
# File 'lib/fog/bare_metal_cloud/requests/compute/list_configurations.rb', line 14

def list_configurations
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::ToHashDocument.new,
    :path     => 'api/listConfigurations'
  )
end

#list_imagesObject

List images

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'image'<~Array>

        • 'Size'<~String> - Size of the image

        • 'Name'<~String> - Name of the image



14
15
16
17
18
19
20
21
# File 'lib/fog/bare_metal_cloud/requests/compute/list_images.rb', line 14

def list_images
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::ToHashDocument.new,
    :path     => 'api/listImages'
  )
end

#list_plansObject

List available plans

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'plan'<~Array>

        • 'id'<~String> - Id of the plan

        • 'name'<~String> - Name of the plan

        • 'rate'<~String> - Cost per hour of the plan

        • 'os'<~String> - Operating system of the plan

        • 'config'<~String> - Configuration of the plan



17
18
19
20
21
22
23
24
# File 'lib/fog/bare_metal_cloud/requests/compute/list_plans.rb', line 17

def list_plans
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::ToHashDocument.new,
    :path     => 'api/listPlans'
  )
end

#list_serversObject

List servers

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • server<~Array>:

        • 'id'<~String> - Id of the server

        • 'ip'<~Hash>:

          • 'address'<~String> - Address of the ip

          • 'name'<~String> - Name of the ip

        • 'login'<~Hash>:

          • 'name'<~String> - Name of the login

          • 'password'<~String> - Password of the login

          • 'username'<~String> - Username of the login

        • 'name'<~String> - Name of the server

        • 'notes'<~String> - Notes about the server

        • 'state'<~String> - State of the server



23
24
25
26
27
28
29
30
# File 'lib/fog/bare_metal_cloud/requests/compute/list_servers.rb', line 23

def list_servers
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::ToHashDocument.new,
    :path     => 'api/listServers'
  )
end

#reboot_server(server_id) ⇒ Object

Reboot a running server

Parameters

  • serverId<~String> - The id of the server to reboot



10
11
12
13
14
15
16
17
18
# File 'lib/fog/bare_metal_cloud/requests/compute/reboot_server.rb', line 10

def reboot_server(server_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::ToHashDocument.new,
    :path     => 'api/rebootServer',
    :query    => {'serverId' => server_id}
  )
end

#reloadObject



59
60
61
# File 'lib/fog/bare_metal_cloud/compute.rb', line 59

def reload
  @connection.reset
end

#request(params) ⇒ Object



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
# File 'lib/fog/bare_metal_cloud/compute.rb', line 63

def request(params)
  params[:query] ||= {}
  params[:query].merge!({
    :password => @bare_metal_cloud_password,
    :username => @bare_metal_cloud_username
  })
  params[:headers] ||= {}
  case params[:method]
  when 'DELETE', 'GET', 'HEAD'
    params[:headers]['Accept'] = 'application/xml'
  when 'POST', 'PUT'
    params[:headers]['Content-Type'] = 'application/xml'
  end

  begin
    response = @connection.request(params)
  rescue Excon::Errors::HTTPStatusError => error
    raise case error
    when Excon::Errors::NotFound
      Fog::Compute::BareMetalCloud::NotFound.slurp(error)
    else
      error
    end
  end

  response
end