class Chef::Knife::ClcServerList
Public Instance Methods
cloud_servers()
click to toggle source
# File lib/chef/knife/clc_server_list.rb, line 56 def cloud_servers if config[:clc_datacenter] connection.list_servers(config[:clc_datacenter]) elsif config[:clc_all] datacenters = connection.list_datacenters datacenters.map do |dc| connection.list_servers(dc['id']) end.flatten end end
execute()
click to toggle source
# File lib/chef/knife/clc_server_list.rb, line 29 def execute servers = cloud_servers merge_public_ips!(servers) merge_chef_nodes!(servers) if config[:clc_chef_nodes] context[:servers] = servers render end
fields()
click to toggle source
# File lib/chef/knife/clc_server_list.rb, line 81 def fields # TODO AS: Displaying shortened list of fields for now # default_fields = %w(id name publicIP groupId locationId osType status) default_fields = %w(name publicIP status) config[:clc_chef_nodes] ? default_fields.insert(3, 'chefNode') : default_fields end
filters()
click to toggle source
# File lib/chef/knife/clc_server_list.rb, line 88 def filters { 'publicIP' => ->(ip) { ip || '-' }, 'chefNode' => ->(name) { name || '-' } } end
headers()
click to toggle source
# File lib/chef/knife/clc_server_list.rb, line 68 def headers { 'id' => 'ID', 'name' => 'Name', 'publicIP' => 'Public IP', 'chefNode' => 'Chef Node', 'groupId' => 'Group', 'osType' => 'OS Type', 'status' => 'Status', 'locationId' => 'DC' } end
merge_chef_nodes!(servers)
click to toggle source
# File lib/chef/knife/clc_server_list.rb, line 47 def merge_chef_nodes!(servers) nodes = Chef::Node.list(true).values servers.map! do |server| existing_node = nodes.find { |node| node['machinename'] == server['name'] } server['chefNode'] = existing_node.name if existing_node server end end
merge_public_ips!(servers)
click to toggle source
# File lib/chef/knife/clc_server_list.rb, line 39 def merge_public_ips!(servers) servers.map! do |server| ip_link = server['links'].find { |link| link['rel'] == 'publicIPAddress' } server['publicIP'] = ip_link['id'] if ip_link server end end
parse_and_validate_parameters()
click to toggle source
# File lib/chef/knife/clc_server_list.rb, line 112 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_server_list.rb, line 102 def render ui.info Hirb::Helpers::AutoTable.render(context[:servers], :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_server_list.rb, line 95 def width_limits { 'chefNode' => 21, 'status' => 15 } end