class Cloudscreener::Api

Allows to configure and search for cloud infrastructure

Attributes

currency[RW]
dc[RW]
fields[RW]
providers[RW]

Public Class Methods

new(email = nil, password = nil) click to toggle source
# File lib/cloudscreener_ruby_sdk/api.rb, line 13
def initialize(email = nil, password = nil)
  @vms = []
  @email = email
  @password = password
  @fields = %i[name cpucs ram pnam dsiz dcnas]
  @currency = 'USD'
  @providers = []
  @dc = nil
end

Public Instance Methods

add_vm(vm) click to toggle source
# File lib/cloudscreener_ruby_sdk/api.rb, line 23
def add_vm(vm)
  raise 'No VM given, please use add_vm(new VM(...))' unless vm

  @vms << vm

  self
end
configure_credentials(email, password) click to toggle source
# File lib/cloudscreener_ruby_sdk/api.rb, line 31
def configure_credentials(email, password)
  @email = email
  @password = password
end
vm_by_name(vm_name) click to toggle source
# File lib/cloudscreener_ruby_sdk/api.rb, line 36
def vm_by_name(vm_name)
  @vms.find { |v| v.name == vm_name }
end

Private Instance Methods

compute_query() click to toggle source
# File lib/cloudscreener_ruby_sdk/api.rb, line 50
def compute_query
  raise 'You must select at least one VM. Please use add_vm()' unless @vms.any?
  raise 'You must select at least one provider. Please use api.providers = %w[...]' unless @providers.any?

  {
    multi: @vms.map { |vm| vm.compute_query(@providers, @dc) },
    slice: @fields,
    currency: @currency
  }
end