Class: Fog::Baremetal::OpenStack::Real
- Inherits:
-
Object
- Object
- Fog::Baremetal::OpenStack::Real
- Defined in:
- lib/fog/openstack/baremetal.rb,
lib/fog/openstack/requests/baremetal/get_node.rb,
lib/fog/openstack/requests/baremetal/get_port.rb,
lib/fog/openstack/requests/baremetal/get_driver.rb,
lib/fog/openstack/requests/baremetal/list_nodes.rb,
lib/fog/openstack/requests/baremetal/list_ports.rb,
lib/fog/openstack/requests/baremetal/patch_node.rb,
lib/fog/openstack/requests/baremetal/patch_port.rb,
lib/fog/openstack/requests/baremetal/create_node.rb,
lib/fog/openstack/requests/baremetal/create_port.rb,
lib/fog/openstack/requests/baremetal/delete_node.rb,
lib/fog/openstack/requests/baremetal/delete_port.rb,
lib/fog/openstack/requests/baremetal/get_chassis.rb,
lib/fog/openstack/requests/baremetal/list_chassis.rb,
lib/fog/openstack/requests/baremetal/list_drivers.rb,
lib/fog/openstack/requests/baremetal/patch_chassis.rb,
lib/fog/openstack/requests/baremetal/create_chassis.rb,
lib/fog/openstack/requests/baremetal/delete_chassis.rb,
lib/fog/openstack/requests/baremetal/list_nodes_detailed.rb,
lib/fog/openstack/requests/baremetal/list_ports_detailed.rb,
lib/fog/openstack/requests/baremetal/get_driver_properties.rb,
lib/fog/openstack/requests/baremetal/list_chassis_detailed.rb
Instance Attribute Summary collapse
-
#current_tenant ⇒ Object
readonly
Returns the value of attribute current_tenant.
-
#current_user ⇒ Object
readonly
Returns the value of attribute current_user.
Instance Method Summary collapse
-
#create_chassis(attributes) ⇒ Object
Create a new chassis.
-
#create_node(attributes) ⇒ Object
Create a new node.
-
#create_port(attributes) ⇒ Object
Create a new port.
- #credentials ⇒ Object
- #delete_chassis(chassis_uuid) ⇒ Object
- #delete_node(node_uuid) ⇒ Object
- #delete_port(port_uuid) ⇒ Object
- #get_chassis(chassis_uuid) ⇒ Object
- #get_driver(driver_name) ⇒ Object
- #get_driver_properties(driver_name) ⇒ Object
- #get_node(node_id) ⇒ Object
- #get_port(port_id) ⇒ Object
-
#initialize(options = {}) ⇒ Real
constructor
A new instance of Real.
- #list_chassis(parameters = nil) ⇒ Object
- #list_chassis_detailed(parameters = nil) ⇒ Object
- #list_drivers ⇒ Object
- #list_nodes(parameters = nil) ⇒ Object
- #list_nodes_detailed(parameters = nil) ⇒ Object
- #list_ports(parameters = nil) ⇒ Object
- #list_ports_detailed(parameters = nil) ⇒ Object
-
#patch_chassis(chassis_uuid, patch) ⇒ Object
Patch a chassis.
-
#patch_node(node_uuid, patch) ⇒ Object
Patch a node.
-
#patch_port(port_uuid, patch) ⇒ Object
Patch a port.
- #reload ⇒ Object
- #request(params) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Real
Returns a new instance of Real.
247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 |
# File 'lib/fog/openstack/baremetal.rb', line 247 def initialize(={}) @openstack_auth_token = [:openstack_auth_token] unless @openstack_auth_token missing_credentials = Array.new @openstack_api_key = [:openstack_api_key] @openstack_username = [:openstack_username] missing_credentials << :openstack_api_key unless @openstack_api_key missing_credentials << :openstack_username unless @openstack_username raise ArgumentError, "Missing required arguments: #{missing_credentials.join(', ')}" unless missing_credentials.empty? end @openstack_tenant = [:openstack_tenant] @openstack_auth_uri = URI.parse([:openstack_auth_url]) @openstack_management_url = [:openstack_management_url] @openstack_must_reauthenticate = false @openstack_service_type = [:openstack_service_type] || ['baremetal'] @openstack_service_name = [:openstack_service_name] @openstack_endpoint_type = [:openstack_endpoint_type] || 'adminURL' @openstack_region = [:openstack_region] @connection_options = [:connection_options] || {} @current_user = [:current_user] @current_tenant = [:current_tenant] authenticate @persistent = [:persistent] || false @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options) end |
Instance Attribute Details
#current_tenant ⇒ Object (readonly)
Returns the value of attribute current_tenant.
245 246 247 |
# File 'lib/fog/openstack/baremetal.rb', line 245 def current_tenant @current_tenant end |
#current_user ⇒ Object (readonly)
Returns the value of attribute current_user.
244 245 246 |
# File 'lib/fog/openstack/baremetal.rb', line 244 def current_user @current_user end |
Instance Method Details
#create_chassis(attributes) ⇒ Object
Create a new chassis
Attributes ===
description = Free text description of the chassis extra = Record arbitrary key/value metadata. Can be specified multiple times
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fog/openstack/requests/baremetal/create_chassis.rb', line 10 def create_chassis(attributes) = [ :description, :extra ] # Filter only allowed creation attributes data = attributes.select { |key, value| .include?(key.to_sym) } request( :body => Fog::JSON.encode(data), :expects => [200,201], :method => 'POST', :path => 'chassis' ) end |
#create_node(attributes) ⇒ Object
Create a new node
Attributes ===
chassis_uuid = UUID of the chassis that this node belongs to driver = Driver used to control the node [REQUIRED] driver_info = Key/value pairs used by the driver, such as out-of-band management credentials. Can be
specified multiple times
extra = Record arbitrary key/value metadata. Can be specified multiple times uuid = Unique UUID for the node properties = Key/value pairs describing the physical characteristics of the node. This is exported to
Nova and used by the scheduler. Can be specified multiple times
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/fog/openstack/requests/baremetal/create_node.rb', line 16 def create_node(attributes) = [ :chassis_uuid, :driver, :driver_info, :extra, :uuid, :properties ] # Filter only allowed creation attributes data = attributes.select { |key, value| .include?(key.to_sym) } request( :body => Fog::JSON.encode(data), :expects => [200,201], :method => 'POST', :path => 'nodes' ) end |
#create_port(attributes) ⇒ Object
Create a new port
Attributes ===
address = MAC Address for this port extra = Record arbitrary key/value metadata. Can be specified multiple times node_uuid = UUID of the node that this port belongs to
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/fog/openstack/requests/baremetal/create_port.rb', line 11 def create_port(attributes) = [ :address, :extra, :node_uuid ] # Filter only allowed creation attributes data = attributes.select { |key, value| .include?(key.to_sym) } request( :body => Fog::JSON.encode(data), :expects => [200,201], :method => 'POST', :path => 'ports' ) end |
#credentials ⇒ Object
280 281 282 283 284 285 286 287 |
# File 'lib/fog/openstack/baremetal.rb', line 280 def credentials { :provider => 'openstack', :openstack_auth_url => @openstack_auth_uri.to_s, :openstack_auth_token => @auth_token, :openstack_management_url => @openstack_management_url, :current_user => @current_user, :current_tenant => @current_tenant } end |
#delete_chassis(chassis_uuid) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/fog/openstack/requests/baremetal/delete_chassis.rb', line 5 def delete_chassis(chassis_uuid) data = { :chassis_uuid => chassis_uuid } request( :body => Fog::JSON.encode(data), :expects => [200, 204], :method => 'DELETE', :path => 'chassis' ) end |
#delete_node(node_uuid) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/fog/openstack/requests/baremetal/delete_node.rb', line 5 def delete_node(node_uuid) data = { :node_uuid => node_uuid } request( :body => Fog::JSON.encode(data), :expects => [200, 204], :method => 'DELETE', :path => 'nodes' ) end |
#delete_port(port_uuid) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/fog/openstack/requests/baremetal/delete_port.rb', line 5 def delete_port(port_uuid) data = { :port_uuid => port_uuid } request( :body => Fog::JSON.encode(data), :expects => [200, 204], :method => 'DELETE', :path => 'ports' ) end |
#get_chassis(chassis_uuid) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/fog/openstack/requests/baremetal/get_chassis.rb', line 5 def get_chassis(chassis_uuid) request( :expects => [200, 204], :method => 'GET', :path => "chassis/#{chassis_uuid}" ) end |
#get_driver(driver_name) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/fog/openstack/requests/baremetal/get_driver.rb', line 5 def get_driver(driver_name) request( :expects => [200, 204], :method => 'GET', :path => "drivers/#{driver_name}" ) end |
#get_driver_properties(driver_name) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/fog/openstack/requests/baremetal/get_driver_properties.rb', line 5 def get_driver_properties(driver_name) data = { :driver_name => driver_name } request( :body => Fog::JSON.encode(data), :expects => [200, 204], :method => 'GET', :path => "drivers/properties" ) end |
#get_node(node_id) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/fog/openstack/requests/baremetal/get_node.rb', line 5 def get_node(node_id) request( :expects => [200, 204], :method => 'GET', :path => "nodes/#{node_id}" ) end |
#get_port(port_id) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/fog/openstack/requests/baremetal/get_port.rb', line 5 def get_port(port_id) request( :expects => [200, 204], :method => 'GET', :path => "ports/#{port_id}" ) end |
#list_chassis(parameters = nil) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fog/openstack/requests/baremetal/list_chassis.rb', line 5 def list_chassis(parameters=nil) if parameters query = parameters.each { |k, v| parameters[k] = URI::encode(v) } else query = {} end request( :expects => [200, 204], :method => 'GET', :path => 'chassis', :query => query ) end |
#list_chassis_detailed(parameters = nil) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fog/openstack/requests/baremetal/list_chassis_detailed.rb', line 5 def list_chassis_detailed(parameters=nil) if parameters query = parameters.each { |k, v| parameters[k] = URI::encode(v) } else query = {} end request( :expects => [200, 204], :method => 'GET', :path => 'chassis/detail', :query => query ) end |
#list_drivers ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/fog/openstack/requests/baremetal/list_drivers.rb', line 5 def list_drivers request( :expects => [200, 204], :method => 'GET', :path => 'drivers' ) end |
#list_nodes(parameters = nil) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fog/openstack/requests/baremetal/list_nodes.rb', line 5 def list_nodes(parameters=nil) if parameters query = parameters.each { |k, v| parameters[k] = URI::encode(v) } else query = {} end request( :expects => [200, 204], :method => 'GET', :path => 'nodes', :query => query ) end |
#list_nodes_detailed(parameters = nil) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fog/openstack/requests/baremetal/list_nodes_detailed.rb', line 5 def list_nodes_detailed(parameters=nil) if parameters query = parameters.each { |k, v| parameters[k] = URI::encode(v) } else query = {} end request( :expects => [200, 204], :method => 'GET', :path => 'nodes/detail', :query => query ) end |
#list_ports(parameters = nil) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fog/openstack/requests/baremetal/list_ports.rb', line 5 def list_ports(parameters=nil) if parameters query = parameters.each { |k, v| parameters[k] = URI::encode(v) } else query = {} end request( :expects => [200, 204], :method => 'GET', :path => 'ports', :query => query ) end |
#list_ports_detailed(parameters = nil) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fog/openstack/requests/baremetal/list_ports_detailed.rb', line 5 def list_ports_detailed(parameters=nil) if parameters query = parameters.each { |k, v| parameters[k] = URI::encode(v) } else query = {} end request( :expects => [200, 204], :method => 'GET', :path => 'ports/detail', :query => query ) end |
#patch_chassis(chassis_uuid, patch) ⇒ Object
Patch a chassis
parameter example:
- ‘replace’, :path => “/extra/placement”, :value => “somewhere”
-
Patch parameter, list of jsonpatch ===
op = Operations: ‘add’, ‘replace’ or ‘remove’ path = Attributes to add/replace or remove (only PATH is necessary on remove),
e.g. /extra/placement
value = Value to set
15 16 17 18 19 20 21 22 |
# File 'lib/fog/openstack/requests/baremetal/patch_chassis.rb', line 15 def patch_chassis(chassis_uuid, patch) request( :body => Fog::JSON.encode(patch), :expects => 200, :method => 'PATCH', :path => "chassis/#{chassis_uuid}" ) end |
#patch_node(node_uuid, patch) ⇒ Object
Patch a node
parameter example:
- ‘replace’, :path => “/driver”, :value => “pxe_ssh”
-
Patch parameter, list of jsonpatch ===
op = Operations: ‘add’, ‘replace’ or ‘remove’ path = Attributes to add/replace or remove (only PATH is necessary on remove),
e.g. /driver_info/ipmi_address
value = Value to set
15 16 17 18 19 20 21 22 |
# File 'lib/fog/openstack/requests/baremetal/patch_node.rb', line 15 def patch_node(node_uuid, patch) request( :body => Fog::JSON.encode(patch), :expects => 200, :method => 'PATCH', :path => "nodes/#{node_uuid}" ) end |
#patch_port(port_uuid, patch) ⇒ Object
Patch a port
parameter example:
- ‘replace’, :path => “/driver_info/ipmi_address”, :value => “192.0.2.1”
-
Patch parameter, list of jsonpatch ===
op = Operations: ‘add’, ‘replace’ or ‘remove’ path = Attributes to add/replace or remove (only PATH is necessary on remove),
e.g. /driver_info/ipmi_address
value = Value to set
15 16 17 18 19 20 21 22 |
# File 'lib/fog/openstack/requests/baremetal/patch_port.rb', line 15 def patch_port(port_uuid, patch) request( :body => Fog::JSON.encode(patch), :expects => 200, :method => 'PATCH', :path => "ports/#{port_uuid}" ) end |
#reload ⇒ Object
289 290 291 |
# File 'lib/fog/openstack/baremetal.rb', line 289 def reload @connection.reset end |
#request(params) ⇒ Object
293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 |
# File 'lib/fog/openstack/baremetal.rb', line 293 def request(params) begin response = @connection.request(params.merge({ :headers => { 'Content-Type' => 'application/json', 'X-Auth-Token' => @auth_token }.merge!(params[:headers] || {}), :path => "#{@path}/#{params[:path]}"#, })) rescue Excon::Errors::Unauthorized => error if error.response.body != 'Bad username or password' # token expiration @openstack_must_reauthenticate = true authenticate retry else # bad credentials raise error end rescue Excon::Errors::HTTPStatusError => error raise case error when Excon::Errors::NotFound Fog::Compute::OpenStack::NotFound.slurp(error) else error end end unless response.body.empty? response.body = Fog::JSON.decode(response.body) end response end |