class Chef::Knife::ClcTemplateList

Public Instance Methods

cloud_templates() click to toggle source
# File lib/chef/knife/clc_template_list.rb, line 28
def cloud_templates
  if config[:clc_datacenter]
    connection.list_templates(config[:clc_datacenter])
  elsif config[:clc_all]
    datacenters = connection.list_datacenters

    datacenters.map do |dc|
      connection.list_templates(dc['id'])
    end.flatten
  end
end
execute() click to toggle source
# File lib/chef/knife/clc_template_list.rb, line 23
def execute
  context[:templates] = cloud_templates
  render
end
fields() click to toggle source
# File lib/chef/knife/clc_template_list.rb, line 63
def fields
  # TODO AS: Displaying shortened list of fields for now
  # %w(name osType description storageSizeGB capabilities apiOnly)
  %w(name storageSizeGB capabilities)
end
filters() click to toggle source
# File lib/chef/knife/clc_template_list.rb, line 46
def filters
  {
    'storageSizeGB' => ->(size) { (size.zero? ? '-' : "#{size} GB").rjust(7) },
    'apiOnly' => ->(api_flag) { (api_flag ? '+' : '-').center(9) },
    'capabilities' => ->(capabilities) { capabilities.empty? ? '-' : capabilities.join(', ') }
  }
end
headers() click to toggle source
# File lib/chef/knife/clc_template_list.rb, line 69
def headers
  {
    'name' => 'Name',
    'osType' => 'OS Type',
    'description' => 'Description',
    'storageSizeGB' => 'Storage',
    'capabilities' => 'Capabilities',
    'apiOnly' => 'API Only'
  }
end
parse_and_validate_parameters() click to toggle source
# File lib/chef/knife/clc_template_list.rb, line 40
def parse_and_validate_parameters
  if config[:clc_datacenter].nil? && !config[:clc_all]
    errors << 'Datacenter ID is required'
  end
end
render() click to toggle source
# File lib/chef/knife/clc_template_list.rb, line 80
def render
  ui.info Hirb::Helpers::AutoTable.render(context[:templates],
    :headers => headers,
    :fields => fields,
    :filters => filters,
    :max_fields => width_limits,
    :resize => false,
    :description => false)
end
width_limits() click to toggle source
# File lib/chef/knife/clc_template_list.rb, line 54
def width_limits
  {
    'description' => 0.2,
    'storageSizeGB' => 7,
    'capabilities' => 15,
    'apiOnly' => 9
  }
end