class Chef::Knife::Cloud::OvirtVolumeList

Public Instance Methods

list(volumes) click to toggle source
# File lib/chef/knife/ovirt_volume_list.rb, line 33
def list(volumes)
  volume_list = [
    ui.color('ID', :bold),
    ui.color('Name', :bold),
    ui.color('Size', :bold),
    ui.color('Status', :bold),
    ui.color('Sparse', :bold),
    ui.color('Format', :bold),
    ui.color('Domain', :bold),
  ]
  begin
    volumes.each do |volume|
      volume_list << volume[:id]
      volume_list << volume[:name]
      volume_list << humanize(volume[:size])
      volume_list << volume[:status]
      volume_list << volume[:sparse]
      volume_list << volume[:format]
      volume_list << storage_domain_name(volume[:storage_domain])
      # There is a description field too, but it doesent seem to be available through fog.
    end
  rescue Excon::Errors::BadRequest => e
    response = Chef::JSONCompat.from_json(e.response.body)
    ui.fatal("Unknown server error (#{response['badRequest']['code']}): #{response['badRequest']['message']}")
    raise e
  end
  puts ui.list(volume_list, :uneven_columns_across, 7)
end
query_resource() click to toggle source
# File lib/chef/knife/ovirt_volume_list.rb, line 20
def query_resource
  @storage_domains = @service.connection.storage_domains
  @service.connection.list_volumes
rescue Excon::Errors::BadRequest => e
  response = Chef::JSONCompat.from_json(e.response.body)
  ui.fatal("Unknown server error (#{response['badRequest']['code']}): #{response['badRequest']['message']}")
  raise e
end
storage_domain_name(id) click to toggle source
# File lib/chef/knife/ovirt_volume_list.rb, line 29
def storage_domain_name(id)
  @storage_domains.select { |domain| domain.id == id }[0].name
end