class RightScaleCLI::Client

Represents a RightScale CLI Client

Attributes

client[RW]
render[RW]

Public Class Methods

new(options) click to toggle source
# File lib/rightscale_cli/client.rb, line 28
def initialize(options)
  config = RightScaleCLI::Config.new.directives
  config[:account_id] = options['account'] if options[:account]
  config[:email] = options['user'] if options[:user]
  config[:api_version] = options['api'] if options[:api]
  config[:timeout] = nil

  if options['password'] || \
     (!config[:password] && \
      !config[:password_base64] &&
      !config[:access_token])
    # fallback to asking for user password
    config[:password] = ask_pass
    # set this to nil so it is not used by precedence
    config[:password_base64] = nil
  end

  @options = options
  @client = RightApi::Client.new(config)
  @logger = RightScaleCLI::Logger.new
end

Public Instance Methods

create(resource, params) click to toggle source
# File lib/rightscale_cli/client.rb, line 69
def create(resource, params)
  if params[:cloud]
    resource = @client.clouds(id: params[:cloud]).show.send("#{resource}s")
               .create(params)
  else
    resource = @client.send("#{resource}s").create(params)
  end
  @logger.info("Created #{resource.href}.")
  resource.href
end
destroy(resource, resource_id) click to toggle source
# File lib/rightscale_cli/client.rb, line 80
def destroy(resource, resource_id)
  resource = @client.send("#{resource}s").index(id: resource_id)
  resource.destroy
  @logger.info("Deleted #{resource.href}.")
end
get(resource) click to toggle source
# File lib/rightscale_cli/client.rb, line 50
def get(resource)
  result = []
  @client.send(resource).index.each { |record| result.push(record.raw) }
  result
end
show(resource, resource_id, *args) click to toggle source
# File lib/rightscale_cli/client.rb, line 56
def show(resource, resource_id, *args)
  if args.count > 0
    result = []
    records = @client.send(resource).index(id: resource_id)
              .show.send(args[0]).index
    records.each { |record| result.push(record.raw) }
    @logger.info("Resource count: #{result.count}.")
  else
    result = @client.send(resource).index(id: resource_id).show.raw
  end
  result
end