class Chef::Knife::CloudstackSecuritygroupList
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/cloudstack_securitygroup_list.rb, line 72 def run $stdout.sync = true validate! groupid = locate_config_value(:groupid) groupname = locate_config_value(:groupname) if (groupid == 'none' and groupname == 'none') securitygroup_list = [ ui.color('ID', :bold), ui.color('Name', :bold), ui.color('Description', :bold) ] response = connection.list_security_groups['listsecuritygroupsresponse'] if securitygroups = response['securitygroup'] securitygroups.each do |securitygroup| securitygroup_list << securitygroup['id'].to_s securitygroup_list << securitygroup['name'].to_s securitygroup_list << securitygroup['description'].to_s end end puts ui.list(securitygroup_list, :columns_across, 3) else securitygroup_details = [ ui.color('Protocol', :bold), ui.color('Start Port', :bold), ui.color('End Port', :bold), ui.color('Restricted To', :bold) ] securitygroup_list = [ ui.color('ID', :bold), ui.color('Name', :bold), ui.color('Description', :bold) ] if response = connection.list_security_groups['listsecuritygroupsresponse'] if securitygroups = response['securitygroup'] filters = {} filters[:groupid] = groupid unless groupid == 'none' filters[:groupname] = groupname unless groupname == 'none' sg_details_list(securitygroup_list, securitygroup_details, securitygroups, filters) puts ui.list(securitygroup_list, :columns_across, 3) puts ui.list(securitygroup_details, :columns_across, 4) end end end end
sg_details_list(securitygroup_list, securitygroup_details, groups, options={})
click to toggle source
# File lib/chef/knife/cloudstack_securitygroup_list.rb, line 39 def sg_details_list(securitygroup_list, securitygroup_details, groups, options={}) temp = groups if groupid = options[:groupid] temp.reject!{|g| g['id'] != groupid.to_i} end if groupname = options[:groupname] temp.reject!{|g| g['name'] != groupname} end temp.each do |securitygroup| securitygroup_list << securitygroup['id'].to_s securitygroup_list << securitygroup['name'].to_s securitygroup_list << securitygroup['description'].to_s if securitygroup['ingressrule'].nil? securitygroup_details << ' ' else securitygroup['ingressrule'].each do |ingressrule| rule_details = [] securitygroup_details << ingressrule['protocol'].to_s securitygroup_details << ingressrule['startport'].to_s securitygroup_details << ingressrule['endport'].to_s if ingressrule['cidr'].nil? rule_details << ingressrule['securitygroupname'].to_s rule_details << ingressrule['account'].to_s else rule_details << ingressrule['cidr'].to_s end securitygroup_details << rule_details.join(", ") end end end end