knife-cloudstack 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES.rdoc +15 -0
 - data/README.rdoc +18 -0
 - data/lib/chef/knife/cs_aag_list.rb +58 -0
 - data/lib/chef/knife/cs_account_list.rb +32 -75
 - data/lib/chef/knife/cs_base.rb +2 -5
 - data/lib/chef/knife/cs_baselist.rb +37 -7
 - data/lib/chef/knife/cs_cluster_list.rb +18 -51
 - data/lib/chef/knife/cs_config_list.rb +14 -43
 - data/lib/chef/knife/cs_disk_list.rb +16 -47
 - data/lib/chef/knife/cs_domain_list.rb +15 -45
 - data/lib/chef/knife/cs_firewallrule_list.rb +19 -52
 - data/lib/chef/knife/cs_host_list.rb +19 -53
 - data/lib/chef/knife/cs_iso_list.rb +30 -44
 - data/lib/chef/knife/cs_keypair_list.rb +12 -51
 - data/lib/chef/knife/cs_network_list.rb +20 -51
 - data/lib/chef/knife/cs_oscategory_list.rb +12 -40
 - data/lib/chef/knife/cs_ostype_list.rb +15 -43
 - data/lib/chef/knife/cs_pod_list.rb +18 -51
 - data/lib/chef/knife/cs_project_list.rb +16 -45
 - data/lib/chef/knife/cs_publicip_list.rb +16 -49
 - data/lib/chef/knife/cs_router_list.rb +16 -46
 - data/lib/chef/knife/cs_securitygroup_list.rb +14 -89
 - data/lib/chef/knife/cs_server_add_nic.rb +109 -0
 - data/lib/chef/knife/cs_server_create.rb +25 -5
 - data/lib/chef/knife/cs_server_list.rb +35 -62
 - data/lib/chef/knife/cs_server_remove_nic.rb +101 -0
 - data/lib/chef/knife/cs_service_list.rb +19 -59
 - data/lib/chef/knife/cs_stack_create.rb +2 -0
 - data/lib/chef/knife/cs_template_list.rb +26 -55
 - data/lib/chef/knife/cs_template_register.rb +4 -4
 - data/lib/chef/knife/cs_user_list.rb +19 -50
 - data/lib/chef/knife/cs_volume_list.rb +17 -46
 - data/lib/chef/knife/cs_zone_list.rb +13 -57
 - data/lib/knife-cloudstack/connection.rb +60 -9
 - metadata +5 -3
 
| 
         @@ -103,6 +103,10 @@ module KnifeCloudstack 
     | 
|
| 
       103 
103 
     | 
    
         
             
                       :boolean => true,
         
     | 
| 
       104 
104 
     | 
    
         
             
                       :default => true
         
     | 
| 
       105 
105 
     | 
    
         | 
| 
      
 106 
     | 
    
         
            +
                option :ik_private_ip,
         
     | 
| 
      
 107 
     | 
    
         
            +
                       :long => "--private-ip PRIVATE_IPV4_ADDRESS",
         
     | 
| 
      
 108 
     | 
    
         
            +
                       :description => "Pass a certain private ipv4 address to cloudstack when deploying (only supported on isolated networks)"
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
       106 
110 
     | 
    
         
             
                option :chef_node_name,
         
     | 
| 
       107 
111 
     | 
    
         
             
                       :short => "-N NAME",
         
     | 
| 
       108 
112 
     | 
    
         
             
                       :long => "--node-name NAME",
         
     | 
| 
         @@ -128,6 +132,14 @@ module KnifeCloudstack 
     | 
|
| 
       128 
132 
     | 
    
         
             
                       :long => "--identity-file IDENTITY_FILE",
         
     | 
| 
       129 
133 
     | 
    
         
             
                       :description => "The SSH identity file used for authentication"
         
     | 
| 
       130 
134 
     | 
    
         | 
| 
      
 135 
     | 
    
         
            +
                option :secret_file,
         
     | 
| 
      
 136 
     | 
    
         
            +
                       :long => "--secret-file SECRET_FILE",
         
     | 
| 
      
 137 
     | 
    
         
            +
                       :description => "The path to the file that contains the encryption key."
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
                option :secret,
         
     | 
| 
      
 140 
     | 
    
         
            +
                       :long => "--secret SECRET",
         
     | 
| 
      
 141 
     | 
    
         
            +
                       :description => "The encryption key that is used for values contained within a data bag item."
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
       131 
143 
     | 
    
         
             
                option :prerelease,
         
     | 
| 
       132 
144 
     | 
    
         
             
                       :long => "--prerelease",
         
     | 
| 
       133 
145 
     | 
    
         
             
                       :description => "Install the pre-release chef gems"
         
     | 
| 
         @@ -257,6 +269,7 @@ module KnifeCloudstack 
     | 
|
| 
       257 
269 
     | 
    
         | 
| 
       258 
270 
     | 
    
         
             
                  params['keypair'] = locate_config_value :keypair  if locate_config_value :keypair
         
     | 
| 
       259 
271 
     | 
    
         
             
                  params['displayname'] = if locate_config_value :set_display_name and locate_config_value :chef_node_name then locate_config_value :chef_node_name else hostname end
         
     | 
| 
      
 272 
     | 
    
         
            +
                  params['ipaddress'] = locate_config_value(:ik_private_ip) if locate_config_value(:ik_private_ip) 
         
     | 
| 
       260 
273 
     | 
    
         | 
| 
       261 
274 
     | 
    
         
             
                  server = connection.create_server(
         
     | 
| 
       262 
275 
     | 
    
         
             
                      hostname,
         
     | 
| 
         @@ -268,6 +281,10 @@ module KnifeCloudstack 
     | 
|
| 
       268 
281 
     | 
    
         
             
                      params
         
     | 
| 
       269 
282 
     | 
    
         
             
                  )
         
     | 
| 
       270 
283 
     | 
    
         | 
| 
      
 284 
     | 
    
         
            +
                  zone_name = locate_config_value(:cloudstack_zone)
         
     | 
| 
      
 285 
     | 
    
         
            +
                  zone = zone_name ? connection.get_zone(zone_name) : connection.get_default_zone
         
     | 
| 
      
 286 
     | 
    
         
            +
             
     | 
| 
      
 287 
     | 
    
         
            +
                  config[:public_ip] = false if zone['networktype'] == 'Basic'
         
     | 
| 
       271 
288 
     | 
    
         
             
                  public_ip = find_or_create_public_ip(server, connection)
         
     | 
| 
       272 
289 
     | 
    
         | 
| 
       273 
290 
     | 
    
         
             
                  object_fields = []
         
     | 
| 
         @@ -326,9 +343,11 @@ module KnifeCloudstack 
     | 
|
| 
       326 
343 
     | 
    
         
             
                end
         
     | 
| 
       327 
344 
     | 
    
         | 
| 
       328 
345 
     | 
    
         
             
                def is_image_windows?
         
     | 
| 
       329 
     | 
    
         
            -
                     
     | 
| 
      
 346 
     | 
    
         
            +
                    template_name = locate_config_value(:cloudstack_template)
         
     | 
| 
      
 347 
     | 
    
         
            +
                    template = connection.get_template(template_name, locate_config_value(:cloudstack_zone))
         
     | 
| 
      
 348 
     | 
    
         
            +
                    template = connection.get_iso(template_name, locate_config_value(:cloudstack_zone)) unless template
         
     | 
| 
       330 
349 
     | 
    
         
             
                    if !template
         
     | 
| 
       331 
     | 
    
         
            -
                      ui.error("Template: #{ 
     | 
| 
      
 350 
     | 
    
         
            +
                      ui.error("Template: #{template_name} does not exist!")
         
     | 
| 
       332 
351 
     | 
    
         
             
                      exit 1
         
     | 
| 
       333 
352 
     | 
    
         
             
                    end
         
     | 
| 
       334 
353 
     | 
    
         
             
                    return template['ostypename'].scan('Windows').length > 0
         
     | 
| 
         @@ -376,7 +395,6 @@ module KnifeCloudstack 
     | 
|
| 
       376 
395 
     | 
    
         | 
| 
       377 
396 
     | 
    
         
             
                def find_or_create_public_ip(server, connection)
         
     | 
| 
       378 
397 
     | 
    
         
             
                  nic = connection.get_server_default_nic(server) || {}
         
     | 
| 
       379 
     | 
    
         
            -
                  #puts "#{ui.color("Not allocating public IP for server", :red)}" unless config[:public_ip]
         
     | 
| 
       380 
398 
     | 
    
         
             
                  if (config[:public_ip] == false)
         
     | 
| 
       381 
399 
     | 
    
         
             
                    nic['ipaddress']
         
     | 
| 
       382 
400 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -398,7 +416,7 @@ module KnifeCloudstack 
     | 
|
| 
       398 
416 
     | 
    
         | 
| 
       399 
417 
     | 
    
         
             
                def create_port_forwarding_rules(ip_address, server_id, connection)
         
     | 
| 
       400 
418 
     | 
    
         
             
                  Chef::Log.debug("Creating IP Forwarding Rule")
         
     | 
| 
       401 
     | 
    
         
            -
                  rules = locate_config_value(:port_rules)
         
     | 
| 
      
 419 
     | 
    
         
            +
                  rules = locate_config_value(:port_rules) || []
         
     | 
| 
       402 
420 
     | 
    
         
             
                  if config[:bootstrap]
         
     | 
| 
       403 
421 
     | 
    
         
             
                    if @bootstrap_protocol == 'ssh'
         
     | 
| 
       404 
422 
     | 
    
         
             
                      rules += ["#{locate_config_value(:ssh_port)}"] #SSH Port
         
     | 
| 
         @@ -409,7 +427,7 @@ module KnifeCloudstack 
     | 
|
| 
       409 
427 
     | 
    
         
             
                      exit 1
         
     | 
| 
       410 
428 
     | 
    
         
             
                    end
         
     | 
| 
       411 
429 
     | 
    
         
             
                  end
         
     | 
| 
       412 
     | 
    
         
            -
                  return  
     | 
| 
      
 430 
     | 
    
         
            +
                  return if rules.empty?
         
     | 
| 
       413 
431 
     | 
    
         
             
                  rules.each do |rule|
         
     | 
| 
       414 
432 
     | 
    
         
             
                    args = rule.split(':')
         
     | 
| 
       415 
433 
     | 
    
         
             
                    public_port = args[0]
         
     | 
| 
         @@ -595,6 +613,8 @@ module KnifeCloudstack 
     | 
|
| 
       595 
613 
     | 
    
         
             
                  locate_config_value(:cloudstack_password) ? bootstrap.config[:ssh_password] = server['password'] : bootstrap.config[:ssh_password] = locate_config_value(:ssh_password)
         
     | 
| 
       596 
614 
     | 
    
         
             
                  bootstrap.config[:ssh_port] = locate_config_value(:ssh_port) || 22
         
     | 
| 
       597 
615 
     | 
    
         
             
                  bootstrap.config[:identity_file] = locate_config_value(:identity_file)
         
     | 
| 
      
 616 
     | 
    
         
            +
                  bootstrap.config[:secret_file] = locate_config_value(:secret_file)
         
     | 
| 
      
 617 
     | 
    
         
            +
                  bootstrap.config[:secret] = locate_config_value(:secret)
         
     | 
| 
       598 
618 
     | 
    
         
             
                  bootstrap.config[:chef_node_name] = locate_config_value(:chef_node_name) || server["name"]
         
     | 
| 
       599 
619 
     | 
    
         
             
                  bootstrap.config[:use_sudo] = true unless locate_config_value(:ssh_user) == 'root'
         
     | 
| 
       600 
620 
     | 
    
         | 
| 
         @@ -18,21 +18,14 @@ 
     | 
|
| 
       18 
18 
     | 
    
         
             
            # limitations under the License.
         
     | 
| 
       19 
19 
     | 
    
         
             
            #
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            require 'chef/knife 
     | 
| 
      
 21 
     | 
    
         
            +
            require 'chef/knife'
         
     | 
| 
       22 
22 
     | 
    
         
             
            require 'chef/knife/cs_baselist'
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            module KnifeCloudstack
         
     | 
| 
       25 
25 
     | 
    
         
             
              class CsServerList < Chef::Knife
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
                include Chef::Knife::KnifeCloudstackBase
         
     | 
| 
       28 
27 
     | 
    
         
             
                include Chef::Knife::KnifeCloudstackBaseList
         
     | 
| 
       29 
28 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
                deps do
         
     | 
| 
       31 
     | 
    
         
            -
                  require 'chef/knife'
         
     | 
| 
       32 
     | 
    
         
            -
                  require 'knife-cloudstack/connection'
         
     | 
| 
       33 
     | 
    
         
            -
                  Chef::Knife.load_deps
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
29 
     | 
    
         
             
                banner "knife cs server list (options)"
         
     | 
| 
       37 
30 
     | 
    
         | 
| 
       38 
31 
     | 
    
         
             
                option :listall,
         
     | 
| 
         @@ -52,66 +45,46 @@ module KnifeCloudstack 
     | 
|
| 
       52 
45 
     | 
    
         
             
                       :short => "-a ACTION",
         
     | 
| 
       53 
46 
     | 
    
         
             
                       :long => "--action ACTION",
         
     | 
| 
       54 
47 
     | 
    
         
             
                       :description => "start, stop or destroy the instances in your result"
         
     | 
| 
      
 48 
     | 
    
         
            +
                       
         
     | 
| 
      
 49 
     | 
    
         
            +
                option :public_ip,
         
     | 
| 
      
 50 
     | 
    
         
            +
                       :long => "--[no-]public-ip",
         
     | 
| 
      
 51 
     | 
    
         
            +
                       :description => "Show or don't show the public IP for server in your result",
         
     | 
| 
      
 52 
     | 
    
         
            +
                       :boolean => true,
         
     | 
| 
      
 53 
     | 
    
         
            +
                       :default => true
         
     | 
| 
       55 
54 
     | 
    
         | 
| 
       56 
55 
     | 
    
         
             
                def run
         
     | 
| 
       57 
56 
     | 
    
         
             
                  validate_base_options
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                   
     | 
| 
       60 
     | 
    
         
            -
                     
     | 
| 
       61 
     | 
    
         
            -
                     
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                     
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                   
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                   
     | 
| 
       75 
     | 
    
         
            -
                   
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                    "virtualmachine",
         
     | 
| 
       80 
     | 
    
         
            -
                    locate_config_value(:filter),
         
     | 
| 
       81 
     | 
    
         
            -
                    locate_config_value(:listall),
         
     | 
| 
       82 
     | 
    
         
            -
                    locate_config_value(:keyword),
         
     | 
| 
       83 
     | 
    
         
            -
                    locate_config_value(:name)
         
     | 
| 
       84 
     | 
    
         
            -
                  )
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
                  output_format(connection_result)
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
                  rules = connection.list_port_forwarding_rules(nil, true)
         
     | 
| 
      
 57 
     | 
    
         
            +
             
         
     | 
| 
      
 58 
     | 
    
         
            +
                  columns = [
         
     | 
| 
      
 59 
     | 
    
         
            +
                    'Name       :name',
         
     | 
| 
      
 60 
     | 
    
         
            +
                    'Public IP  :ipaddress',
         
     | 
| 
      
 61 
     | 
    
         
            +
                    'Service    :serviceofferingname',
         
     | 
| 
      
 62 
     | 
    
         
            +
                    'Template   :templatename',
         
     | 
| 
      
 63 
     | 
    
         
            +
                    'State      :state',
         
     | 
| 
      
 64 
     | 
    
         
            +
                    'Instance   :instancename',
         
     | 
| 
      
 65 
     | 
    
         
            +
                    'Hypervisor :hostname'
         
     | 
| 
      
 66 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                  params = { 'command' => "listVirtualMachines" }
         
     | 
| 
      
 69 
     | 
    
         
            +
                  params['filter']  = locate_config_value(:filter)  if locate_config_value(:filter)
         
     | 
| 
      
 70 
     | 
    
         
            +
                  params['listall'] = locate_config_value(:listall) if locate_config_value(:listall)
         
     | 
| 
      
 71 
     | 
    
         
            +
                  params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  params['name']    = locate_config_value(:name)    if locate_config_value(:name)
         
     | 
| 
      
 73 
     | 
    
         
            +
                  
         
     | 
| 
      
 74 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 75 
     | 
    
         
            +
                  # Get the public IP address if possible, except when the option --no-public-ip is given.
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                  rules       = connection.list_port_forwarding_rules(nil, true)
         
     | 
| 
       89 
78 
     | 
    
         
             
                  public_list = connection.list_public_ip_addresses(true)
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
                     
     | 
| 
       94 
     | 
    
         
            -
                     
     | 
| 
       95 
     | 
    
         
            -
                    if display_name && !display_name.empty? && display_name != name
         
     | 
| 
       96 
     | 
    
         
            -
                      name << " (#{display_name})"
         
     | 
| 
       97 
     | 
    
         
            -
                    end
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
                    if locate_config_value(:fields)
         
     | 
| 
       100 
     | 
    
         
            -
                      locate_config_value(:fields).downcase.split(',').each { |n| object_list << ((r[("#{n}").strip]).to_s || 'N/A') }
         
     | 
| 
       101 
     | 
    
         
            -
                    else
         
     | 
| 
       102 
     | 
    
         
            -
                      object_list << r['name']
         
     | 
| 
       103 
     | 
    
         
            -
                      r['nic'].empty? ? object_list << "N/A" : object_list << (connection.get_server_public_ip(r, rules, public_list) || '')
         
     | 
| 
       104 
     | 
    
         
            -
                      object_list << r['serviceofferingname']
         
     | 
| 
       105 
     | 
    
         
            -
                      object_list << r['templatename']
         
     | 
| 
       106 
     | 
    
         
            -
                      object_list << r['state']
         
     | 
| 
       107 
     | 
    
         
            -
                      object_list << (r['instancename'] || 'N/A')
         
     | 
| 
       108 
     | 
    
         
            -
                      object_list << (r['hostname'] || 'N/A')
         
     | 
| 
       109 
     | 
    
         
            -
                    end
         
     | 
| 
      
 79 
     | 
    
         
            +
                  result      = connection.list_object(params, "virtualmachine")
         
     | 
| 
      
 80 
     | 
    
         
            +
                  result.each do |n|
         
     | 
| 
      
 81 
     | 
    
         
            +
                    public_ip = connection.get_server_public_ip(n, rules, public_list) if locate_config_value(:public_ip)
         
     | 
| 
      
 82 
     | 
    
         
            +
                    private_ip = (n['nic'].select { |k| k['isdefault'] }).first
         
     | 
| 
      
 83 
     | 
    
         
            +
                    public_ip ? n['ipaddress'] = public_ip : n['ipaddress'] = private_ip['ipaddress'] || "N/A"
         
     | 
| 
       110 
84 
     | 
    
         
             
                  end
         
     | 
| 
       111 
85 
     | 
    
         | 
| 
       112 
     | 
    
         
            -
                   
     | 
| 
       113 
     | 
    
         
            -
                   
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
      
 86 
     | 
    
         
            +
                  list_object(columns, result)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  
         
     | 
| 
       115 
88 
     | 
    
         
             
                  ## 
         
     | 
| 
       116 
89 
     | 
    
         
             
                  # Executing actions against the list results that are returned.
         
     | 
| 
       117 
90 
     | 
    
         | 
| 
         @@ -0,0 +1,101 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Author:: John E. Vincent (<lusis.org+github.com@gmail.com>)
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Copyright:: Copyright (c) 2013 John E. Vincent
         
     | 
| 
      
 4 
     | 
    
         
            +
            # License:: Apache License, Version 2.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
      
 7 
     | 
    
         
            +
            # you may not use this file except in compliance with the License.
         
     | 
| 
      
 8 
     | 
    
         
            +
            # You may obtain a copy of the License at
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            #     http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
      
 11 
     | 
    
         
            +
            #
         
     | 
| 
      
 12 
     | 
    
         
            +
            # Unless required by applicable law or agreed to in writing, software
         
     | 
| 
      
 13 
     | 
    
         
            +
            # distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
      
 14 
     | 
    
         
            +
            # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
      
 15 
     | 
    
         
            +
            # See the License for the specific language governing permissions and
         
     | 
| 
      
 16 
     | 
    
         
            +
            # limitations under the License.
         
     | 
| 
      
 17 
     | 
    
         
            +
            #
         
     | 
| 
      
 18 
     | 
    
         
            +
            require 'chef/knife/cs_base'
         
     | 
| 
      
 19 
     | 
    
         
            +
            require 'chef/knife/cs_baselist'
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            module KnifeCloudstack
         
     | 
| 
      
 22 
     | 
    
         
            +
              class CsServerRemoveNic < Chef::Knife
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                include Chef::Knife::KnifeCloudstackBase
         
     | 
| 
      
 25 
     | 
    
         
            +
                include Chef::Knife::KnifeCloudstackBaseList
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                deps do
         
     | 
| 
      
 28 
     | 
    
         
            +
                  require 'knife-cloudstack/connection'
         
     | 
| 
      
 29 
     | 
    
         
            +
                  require 'chef/knife'
         
     | 
| 
      
 30 
     | 
    
         
            +
                  Chef::Knife.load_deps
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                banner "knife cs server remove nic SERVERID NICID"
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                def run
         
     | 
| 
      
 37 
     | 
    
         
            +
                  validate_base_options
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  @server_id, @nic_id = name_args
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                  if @server_id.nil? || @nic_id.nil?
         
     | 
| 
      
 42 
     | 
    
         
            +
                    show_usage
         
     | 
| 
      
 43 
     | 
    
         
            +
                    ui.fatal("You must provide both a nic id and a server id")
         
     | 
| 
      
 44 
     | 
    
         
            +
                    exit(1)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                  object_list = []
         
     | 
| 
      
 49 
     | 
    
         
            +
                  if locate_config_value(:fields)
         
     | 
| 
      
 50 
     | 
    
         
            +
                    locate_config_value(:fields).split(',').each { |n| object_list << ui.color(("#{n}").strip, :bold) }
         
     | 
| 
      
 51 
     | 
    
         
            +
                  else
         
     | 
| 
      
 52 
     | 
    
         
            +
                    object_list << ui.color('Server', :bold)
         
     | 
| 
      
 53 
     | 
    
         
            +
                    object_list << ui.color('Network', :bold)
         
     | 
| 
      
 54 
     | 
    
         
            +
                    object_list << ui.color('Type', :bold)
         
     | 
| 
      
 55 
     | 
    
         
            +
                    object_list << ui.color('Default', :bold)
         
     | 
| 
      
 56 
     | 
    
         
            +
                    object_list << ui.color('Address', :bold)
         
     | 
| 
      
 57 
     | 
    
         
            +
                    object_list << ui.color('Gateway', :bold)
         
     | 
| 
      
 58 
     | 
    
         
            +
                    object_list << ui.color('Netmask', :bold)
         
     | 
| 
      
 59 
     | 
    
         
            +
                    object_list << ui.color('ID', :bold)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                  columns = object_list.count
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                  connection_result = connection.remove_nic_from_vm(
         
     | 
| 
      
 65 
     | 
    
         
            +
                    @nic_id,
         
     | 
| 
      
 66 
     | 
    
         
            +
                    @server_id
         
     | 
| 
      
 67 
     | 
    
         
            +
                  )
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                  output_format(connection_result)
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                  object_list << connection_result['name']
         
     | 
| 
      
 72 
     | 
    
         
            +
                  object_list << ''
         
     | 
| 
      
 73 
     | 
    
         
            +
                  object_list << ''
         
     | 
| 
      
 74 
     | 
    
         
            +
                  object_list << ''
         
     | 
| 
      
 75 
     | 
    
         
            +
                  object_list << ''
         
     | 
| 
      
 76 
     | 
    
         
            +
                  object_list << ''
         
     | 
| 
      
 77 
     | 
    
         
            +
                  object_list << ''
         
     | 
| 
      
 78 
     | 
    
         
            +
                  object_list << ''
         
     | 
| 
      
 79 
     | 
    
         
            +
                  if connection_result['nic']
         
     | 
| 
      
 80 
     | 
    
         
            +
                    connection_result['nic'].each do |r|
         
     | 
| 
      
 81 
     | 
    
         
            +
                        if locate_config_value(:fields)
         
     | 
| 
      
 82 
     | 
    
         
            +
                          locate_config_value(:fields).downcase.split(',').each { |n| object_list << ((r[("#{n}").strip]).to_s || 'N/A') }
         
     | 
| 
      
 83 
     | 
    
         
            +
                        else
         
     | 
| 
      
 84 
     | 
    
         
            +
                          object_list << ''
         
     | 
| 
      
 85 
     | 
    
         
            +
                          object_list << r['networkname'].to_s
         
     | 
| 
      
 86 
     | 
    
         
            +
                          object_list << r['type'].to_s
         
     | 
| 
      
 87 
     | 
    
         
            +
                          object_list << (r['isdefault'] ? r['isdefault'].to_s : 'false')
         
     | 
| 
      
 88 
     | 
    
         
            +
                          object_list << (r['ipaddress'] || '')
         
     | 
| 
      
 89 
     | 
    
         
            +
                          object_list << (r['gateway'] || '')
         
     | 
| 
      
 90 
     | 
    
         
            +
                          object_list << (r['netmask'] || '')
         
     | 
| 
      
 91 
     | 
    
         
            +
                          object_list << (r['networkid'] || '')
         
     | 
| 
      
 92 
     | 
    
         
            +
                        end
         
     | 
| 
      
 93 
     | 
    
         
            +
                    end
         
     | 
| 
      
 94 
     | 
    
         
            +
                    puts ui.list(object_list, :uneven_columns_across, columns)
         
     | 
| 
      
 95 
     | 
    
         
            +
                    list_object_fields(connection_result) if locate_config_value(:fieldlist)
         
     | 
| 
      
 96 
     | 
    
         
            +
                  else
         
     | 
| 
      
 97 
     | 
    
         
            +
                    ui.error("No nics returned in response")
         
     | 
| 
      
 98 
     | 
    
         
            +
                  end
         
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
      
 100 
     | 
    
         
            +
              end
         
     | 
| 
      
 101 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -18,21 +18,14 @@ 
     | 
|
| 
       18 
18 
     | 
    
         
             
            # limitations under the License.
         
     | 
| 
       19 
19 
     | 
    
         
             
            #
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            require 'chef/knife 
     | 
| 
      
 21 
     | 
    
         
            +
            require 'chef/knife'
         
     | 
| 
       22 
22 
     | 
    
         
             
            require 'chef/knife/cs_baselist'
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            module KnifeCloudstack
         
     | 
| 
       25 
25 
     | 
    
         
             
              class CsServiceList < Chef::Knife
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
                include Chef::Knife::KnifeCloudstackBase
         
     | 
| 
       28 
27 
     | 
    
         
             
                include Chef::Knife::KnifeCloudstackBaseList
         
     | 
| 
       29 
28 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
                deps do
         
     | 
| 
       31 
     | 
    
         
            -
                  require 'chef/knife'
         
     | 
| 
       32 
     | 
    
         
            -
                  require 'knife-cloudstack/connection'
         
     | 
| 
       33 
     | 
    
         
            -
                  Chef::Knife.load_deps
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
29 
     | 
    
         
             
                banner "knife cs service list (options)"
         
     | 
| 
       37 
30 
     | 
    
         | 
| 
       38 
31 
     | 
    
         
             
                option :name,
         
     | 
| 
         @@ -43,62 +36,29 @@ module KnifeCloudstack 
     | 
|
| 
       43 
36 
     | 
    
         
             
                       :long => "--keyword NAME",
         
     | 
| 
       44 
37 
     | 
    
         
             
                       :description => "Specify part of servicename to list"
         
     | 
| 
       45 
38 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
                option :index,
         
     | 
| 
       47 
     | 
    
         
            -
                       :long => "--index",
         
     | 
| 
       48 
     | 
    
         
            -
                       :description => "Add index numbers to the output",
         
     | 
| 
       49 
     | 
    
         
            -
                       :boolean => true
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
39 
     | 
    
         
             
                def run
         
     | 
| 
       52 
40 
     | 
    
         
             
                  validate_base_options
         
     | 
| 
       53 
     | 
    
         
            -
            	
         
     | 
| 
       54 
     | 
    
         
            -
                  object_list = []
         
     | 
| 
       55 
     | 
    
         
            -
                  object_list << ui.color('Index', :bold) if locate_config_value(:index)
         
     | 
| 
       56 
41 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
                   
     | 
| 
       58 
     | 
    
         
            -
                     
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                     
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
                  columns = [
         
     | 
| 
      
 43 
     | 
    
         
            +
                    'Name      :name',
         
     | 
| 
      
 44 
     | 
    
         
            +
                    'Memory    :memory',
         
     | 
| 
      
 45 
     | 
    
         
            +
                    'CPUs      :cpunumber',
         
     | 
| 
      
 46 
     | 
    
         
            +
                    'CPU Speed :cpuspeed',
         
     | 
| 
      
 47 
     | 
    
         
            +
                    'Created   :created'
         
     | 
| 
      
 48 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                  params = { 'command' => "listServiceOfferings" }
         
     | 
| 
      
 51 
     | 
    
         
            +
                  params['filter']  = locate_config_value(:filter)  if locate_config_value(:filter)
         
     | 
| 
      
 52 
     | 
    
         
            +
                  params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  params['name']    = locate_config_value(:name)    if locate_config_value(:name)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  
         
     | 
| 
      
 55 
     | 
    
         
            +
                  result = connection.list_object(params, "serviceoffering")
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                  result.each do |r|
         
     | 
| 
      
 58 
     | 
    
         
            +
                    r['memory'] = human_memory(r['memory']) if r['memory']
         
     | 
| 
       67 
59 
     | 
    
         
             
                  end
         
     | 
| 
       68 
60 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                  columns  
     | 
| 
       70 
     | 
    
         
            -
                  object_list = [] if locate_config_value(:noheader)
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                  connection_result = connection.list_object(
         
     | 
| 
       73 
     | 
    
         
            -
                    "listServiceOfferings",
         
     | 
| 
       74 
     | 
    
         
            -
                    "serviceoffering",
         
     | 
| 
       75 
     | 
    
         
            -
                    locate_config_value(:filter),
         
     | 
| 
       76 
     | 
    
         
            -
                    false,
         
     | 
| 
       77 
     | 
    
         
            -
                    locate_config_value(:keyword),
         
     | 
| 
       78 
     | 
    
         
            -
                    locate_config_value(:name)
         
     | 
| 
       79 
     | 
    
         
            -
                  )
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                  output_format(connection_result)
         
     | 
| 
       82 
     | 
    
         
            -
             
         
     | 
| 
       83 
     | 
    
         
            -
                  index_num = 0
         
     | 
| 
       84 
     | 
    
         
            -
                  connection_result.each do |r|
         
     | 
| 
       85 
     | 
    
         
            -
                    if locate_config_value(:index)
         
     | 
| 
       86 
     | 
    
         
            -
                      index_num += 1
         
     | 
| 
       87 
     | 
    
         
            -
                      object_list << index_num.to_s
         
     | 
| 
       88 
     | 
    
         
            -
                    end
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
                    if locate_config_value(:fields)
         
     | 
| 
       91 
     | 
    
         
            -
                      locate_config_value(:fields).downcase.split(',').each { |n| object_list << ((r[("#{n}").strip]).to_s || 'N/A') }
         
     | 
| 
       92 
     | 
    
         
            -
                    else
         
     | 
| 
       93 
     | 
    
         
            -
                      object_list << r['name'].to_s
         
     | 
| 
       94 
     | 
    
         
            -
                      object_list << (r['memory'] ? human_memory(r['memory']) : 'Unknown')
         
     | 
| 
       95 
     | 
    
         
            -
                      object_list << r['cpunumber'].to_s
         
     | 
| 
       96 
     | 
    
         
            -
                      object_list << r['cpuspeed'].to_s + ' Mhz'
         
     | 
| 
       97 
     | 
    
         
            -
                      object_list << r['created']
         
     | 
| 
       98 
     | 
    
         
            -
                    end
         
     | 
| 
       99 
     | 
    
         
            -
                  end
         
     | 
| 
       100 
     | 
    
         
            -
                  puts ui.list(object_list, :uneven_columns_across, columns)
         
     | 
| 
       101 
     | 
    
         
            -
                  list_object_fields(connection_result) if locate_config_value(:fieldlist)
         
     | 
| 
      
 61 
     | 
    
         
            +
                  list_object(columns, result)
         
     | 
| 
       102 
62 
     | 
    
         
             
                end
         
     | 
| 
       103 
63 
     | 
    
         | 
| 
       104 
64 
     | 
    
         
             
                def human_memory n
         
     | 
| 
         @@ -102,10 +102,12 @@ module KnifeCloudstack 
     | 
|
| 
       102 
102 
     | 
    
         
             
                  cmd.config[:ssh_password] = config[:ssh_password]
         
     | 
| 
       103 
103 
     | 
    
         
             
                  cmd.config[:ssh_port] = config[:ssh_port] || "22" # Chef::Config[:knife][:ssh_port]
         
     | 
| 
       104 
104 
     | 
    
         
             
                  cmd.config[:identity_file] = config[:identity_file]
         
     | 
| 
      
 105 
     | 
    
         
            +
                  cmd.config[:keypair] = server[:keypair]
         
     | 
| 
       105 
106 
     | 
    
         
             
                  cmd.config[:cloudstack_template] = server[:template] if server[:template]
         
     | 
| 
       106 
107 
     | 
    
         
             
                  cmd.config[:cloudstack_service] = server[:service] if server[:service]
         
     | 
| 
       107 
108 
     | 
    
         
             
                  cmd.config[:cloudstack_zone] = server[:zone] if server[:zone]
         
     | 
| 
       108 
109 
     | 
    
         
             
                  server.has_key?(:public_ip) ? cmd.config[:public_ip] = server[:public_ip] : cmd.config[:no_public_ip] = true
         
     | 
| 
      
 110 
     | 
    
         
            +
                  cmd.config[:ik_private_ip] = server[:private_ip] if server[:private_ip]
         
     | 
| 
       109 
111 
     | 
    
         
             
                  cmd.config[:bootstrap] = server[:bootstrap] if server.has_key?(:bootstrap) 
         
     | 
| 
       110 
112 
     | 
    
         
             
                  cmd.config[:bootstrap_protocol] = server[:bootstrap_protocol] || "ssh"  
         
     | 
| 
       111 
113 
     | 
    
         
             
                  cmd.config[:distro] = server[:distro] || "chef-full"  
         
     | 
| 
         @@ -18,21 +18,14 @@ 
     | 
|
| 
       18 
18 
     | 
    
         
             
            # limitations under the License.
         
     | 
| 
       19 
19 
     | 
    
         
             
            #
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            require 'chef/knife 
     | 
| 
      
 21 
     | 
    
         
            +
            require 'chef/knife'
         
     | 
| 
       22 
22 
     | 
    
         
             
            require 'chef/knife/cs_baselist'
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            module KnifeCloudstack
         
     | 
| 
       25 
25 
     | 
    
         
             
              class CsTemplateList < Chef::Knife
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
                include Chef::Knife::KnifeCloudstackBase
         
     | 
| 
       28 
27 
     | 
    
         
             
                include Chef::Knife::KnifeCloudstackBaseList
         
     | 
| 
       29 
28 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
                deps do
         
     | 
| 
       31 
     | 
    
         
            -
                  require 'knife-cloudstack/connection'
         
     | 
| 
       32 
     | 
    
         
            -
                  require 'chef/knife'
         
     | 
| 
       33 
     | 
    
         
            -
                  Chef::Knife.load_deps
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
29 
     | 
    
         
             
                banner "knife cs template list (options)"
         
     | 
| 
       37 
30 
     | 
    
         | 
| 
       38 
31 
     | 
    
         
             
                option :listall,
         
     | 
| 
         @@ -47,61 +40,39 @@ module KnifeCloudstack 
     | 
|
| 
       47 
40 
     | 
    
         | 
| 
       48 
41 
     | 
    
         
             
                option :templatefilter,
         
     | 
| 
       49 
42 
     | 
    
         
             
                       :long => "--templatefilter FILTER",
         
     | 
| 
       50 
     | 
    
         
            -
                       :description => "Default: 'featured'. Options: 'self',' 
     | 
| 
      
 43 
     | 
    
         
            +
                       :description => "Default: 'featured'. Options: 'self','selfexecutable','sharedexecutable','executable','community'",
         
     | 
| 
       51 
44 
     | 
    
         
             
                       :default => "featured"
         
     | 
| 
       52 
45 
     | 
    
         | 
| 
       53 
46 
     | 
    
         
             
                def run
         
     | 
| 
       54 
47 
     | 
    
         
             
                  validate_base_options
         
     | 
| 
       55 
48 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
                   
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                     
     | 
| 
      
 49 
     | 
    
         
            +
                  columns = [
         
     | 
| 
      
 50 
     | 
    
         
            +
                    'Name    :name',
         
     | 
| 
      
 51 
     | 
    
         
            +
                    'Size    :size',
         
     | 
| 
      
 52 
     | 
    
         
            +
                    'Zone    :zonename',
         
     | 
| 
      
 53 
     | 
    
         
            +
                    'Public  :ispublic',
         
     | 
| 
      
 54 
     | 
    
         
            +
                    'Created :created'
         
     | 
| 
      
 55 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                  params = { 'command' => "listTemplates" }
         
     | 
| 
      
 58 
     | 
    
         
            +
                  params['filter']  = locate_config_value(:filter)  if locate_config_value(:filter)
         
     | 
| 
      
 59 
     | 
    
         
            +
                  params['listall'] = locate_config_value(:listall) if locate_config_value(:listall)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
         
     | 
| 
      
 61 
     | 
    
         
            +
                  params['name']    = locate_config_value(:name)    if locate_config_value(:name)
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                  if ['all','featured','self','selfexecutable','sharedexecutable','executable','community'].include?(locate_config_value(:templatefilter)) 
         
     | 
| 
      
 64 
     | 
    
         
            +
                    params['templatefilter'] = locate_config_value(:templatefilter)
         
     | 
| 
       61 
65 
     | 
    
         
             
                  else
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                      ui.color('Public', :bold),
         
     | 
| 
       67 
     | 
    
         
            -
                      ui.color('Created', :bold)
         
     | 
| 
       68 
     | 
    
         
            -
                    ].each { |field| object_list << field }
         
     | 
| 
       69 
     | 
    
         
            -
                  end
         
     | 
| 
      
 66 
     | 
    
         
            +
                    params['templatefilter'] = 'featured'
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end 
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                  result = connection.list_object(params, "template")
         
     | 
| 
       70 
70 
     | 
    
         | 
| 
       71 
     | 
    
         
            -
                   
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                  connection_result = connection.list_object(
         
     | 
| 
       75 
     | 
    
         
            -
                    "listTemplates",
         
     | 
| 
       76 
     | 
    
         
            -
                    "template",
         
     | 
| 
       77 
     | 
    
         
            -
                    locate_config_value(:filter),
         
     | 
| 
       78 
     | 
    
         
            -
                    locate_config_value(:listall),
         
     | 
| 
       79 
     | 
    
         
            -
                    nil,
         
     | 
| 
       80 
     | 
    
         
            -
                    nil,
         
     | 
| 
       81 
     | 
    
         
            -
                    params = { 'templatefilter' => locate_config_value(:templatefilter) }
         
     | 
| 
       82 
     | 
    
         
            -
                  )
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
                  output_format(connection_result)
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
                  index_num = 0
         
     | 
| 
       87 
     | 
    
         
            -
                  connection_result.each do |r|
         
     | 
| 
       88 
     | 
    
         
            -
                    if locate_config_value(:index)
         
     | 
| 
       89 
     | 
    
         
            -
                      index_num += 1 
         
     | 
| 
       90 
     | 
    
         
            -
                      object_list << index_num.to_s
         
     | 
| 
       91 
     | 
    
         
            -
                    end
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
                    if locate_config_value(:fields)
         
     | 
| 
       94 
     | 
    
         
            -
                      locate_config_value(:fields).downcase.split(',').each { |n| object_list << ((r[("#{n}").strip]).to_s || 'N/A') }
         
     | 
| 
       95 
     | 
    
         
            -
                    else
         
     | 
| 
       96 
     | 
    
         
            -
                      object_list << r['name'].to_s
         
     | 
| 
       97 
     | 
    
         
            -
                      object_list << (r['size'] ? human_file_size(r['size']) : 'Unknown')
         
     | 
| 
       98 
     | 
    
         
            -
                      object_list << r['zonename'].to_s
         
     | 
| 
       99 
     | 
    
         
            -
                      object_list << r['ispublic'].to_s
         
     | 
| 
       100 
     | 
    
         
            -
                      object_list << r['created']
         
     | 
| 
       101 
     | 
    
         
            -
                    end
         
     | 
| 
      
 71 
     | 
    
         
            +
                  result.each do |r|
         
     | 
| 
      
 72 
     | 
    
         
            +
                    r['size'] = human_file_size(r['size']) if r['size']
         
     | 
| 
       102 
73 
     | 
    
         
             
                  end
         
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
                   
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                  list_object(columns, result)
         
     | 
| 
       105 
76 
     | 
    
         
             
                end
         
     | 
| 
       106 
77 
     | 
    
         | 
| 
       107 
78 
     | 
    
         
             
                def human_file_size n
         
     | 
| 
         @@ -67,9 +67,9 @@ module KnifeCloudstack 
     | 
|
| 
       67 
67 
     | 
    
         
             
            	   :description => "32 or 64 bits support, defaults to 64",
         
     | 
| 
       68 
68 
     | 
    
         
             
            	   :default => 64
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                option : 
     | 
| 
       71 
     | 
    
         
            -
                       :long => "--[no-] 
     | 
| 
       72 
     | 
    
         
            -
            	   :description => "Is the template  
     | 
| 
      
 70 
     | 
    
         
            +
                option :isextractable,
         
     | 
| 
      
 71 
     | 
    
         
            +
                       :long => "--[no-]isextractable",
         
     | 
| 
      
 72 
     | 
    
         
            +
            	   :description => "Is the template extractable. Default: NO",
         
     | 
| 
       73 
73 
     | 
    
         
             
            	   :boolean => true,
         
     | 
| 
       74 
74 
     | 
    
         
             
            	   :default => false
         
     | 
| 
       75 
75 
     | 
    
         | 
| 
         @@ -159,7 +159,7 @@ module KnifeCloudstack 
     | 
|
| 
       159 
159 
     | 
    
         
             
                    'zoneid' => zoneid,
         
     | 
| 
       160 
160 
     | 
    
         
             
                    'bits' => locate_config_value(:bits),
         
     | 
| 
       161 
161 
     | 
    
         
             
                  }
         
     | 
| 
       162 
     | 
    
         
            -
                  params[' 
     | 
| 
      
 162 
     | 
    
         
            +
                  params['isextractable'] = locate_config_value(:isextractable) if locate_config_value(:isextractable)
         
     | 
| 
       163 
163 
     | 
    
         
             
                  params['ispublic'] = locate_config_value(:public) if locate_config_value(:public)
         
     | 
| 
       164 
164 
     | 
    
         
             
                  params['isfeatured'] = locate_config_value(:featured) if locate_config_value(:featured)
         
     | 
| 
       165 
165 
     | 
    
         
             
                  params['passwordenabled'] = locate_config_value(:passwordenabled) if locate_config_value(:passwordenabled)
         
     | 
| 
         @@ -16,20 +16,14 @@ 
     | 
|
| 
       16 
16 
     | 
    
         
             
            # limitations under the License.
         
     | 
| 
       17 
17 
     | 
    
         
             
            #
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            require 'chef/knife 
     | 
| 
      
 19 
     | 
    
         
            +
            require 'chef/knife'
         
     | 
| 
       20 
20 
     | 
    
         
             
            require 'chef/knife/cs_baselist'
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
            module KnifeCloudstack
         
     | 
| 
       23 
23 
     | 
    
         
             
              class CsUserList < Chef::Knife
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
                include Chef::Knife::KnifeCloudstackBase
         
     | 
| 
       26 
25 
     | 
    
         
             
                include Chef::Knife::KnifeCloudstackBaseList
         
     | 
| 
       27 
26 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                deps do
         
     | 
| 
       29 
     | 
    
         
            -
                  require 'knife-cloudstack/connection'
         
     | 
| 
       30 
     | 
    
         
            -
                  Chef::Knife.load_deps
         
     | 
| 
       31 
     | 
    
         
            -
                end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
27 
     | 
    
         
             
                banner "knife cs user list (options)"
         
     | 
| 
       34 
28 
     | 
    
         | 
| 
       35 
29 
     | 
    
         
             
                option :listall,
         
     | 
| 
         @@ -44,49 +38,24 @@ module KnifeCloudstack 
     | 
|
| 
       44 
38 
     | 
    
         
             
                def run
         
     | 
| 
       45 
39 
     | 
    
         
             
                  validate_base_options
         
     | 
| 
       46 
40 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                   
     | 
| 
       48 
     | 
    
         
            -
                     
     | 
| 
       49 
     | 
    
         
            -
                     
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                     
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                   
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
                   
     | 
| 
       63 
     | 
    
         
            -
                   
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
                  connection_result = connection.list_object(
         
     | 
| 
       66 
     | 
    
         
            -
                    "listUsers",
         
     | 
| 
       67 
     | 
    
         
            -
                    "user",
         
     | 
| 
       68 
     | 
    
         
            -
                    locate_config_value(:filter),
         
     | 
| 
       69 
     | 
    
         
            -
                    locate_config_value(:listall),
         
     | 
| 
       70 
     | 
    
         
            -
                    locate_config_value(:keyword)
         
     | 
| 
       71 
     | 
    
         
            -
                  )
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                  output_format(connection_result)
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
                  connection_result.each do |r|
         
     | 
| 
       76 
     | 
    
         
            -
                   if locate_config_value(:fields)
         
     | 
| 
       77 
     | 
    
         
            -
                      locate_config_value(:fields).downcase.split(',').each { |n| object_list << ((r[("#{n}").strip]).to_s || 'N/A') }
         
     | 
| 
       78 
     | 
    
         
            -
                    else
         
     | 
| 
       79 
     | 
    
         
            -
                      object_list << r['account'].to_s 
         
     | 
| 
       80 
     | 
    
         
            -
                      object_list << r['accounttype'].to_s
         
     | 
| 
       81 
     | 
    
         
            -
                      object_list << r['state'].to_s
         
     | 
| 
       82 
     | 
    
         
            -
                      object_list << r['domain'].to_s
         
     | 
| 
       83 
     | 
    
         
            -
                      object_list << r['username'].to_s
         
     | 
| 
       84 
     | 
    
         
            -
                      object_list << r['firstname'].to_s
         
     | 
| 
       85 
     | 
    
         
            -
                      object_list << r['lastname'].to_s
         
     | 
| 
       86 
     | 
    
         
            -
                    end
         
     | 
| 
       87 
     | 
    
         
            -
                  end
         
     | 
| 
       88 
     | 
    
         
            -
                  puts ui.list(object_list, :uneven_columns_across, columns)
         
     | 
| 
       89 
     | 
    
         
            -
                  list_object_fields(connection_result) if locate_config_value(:fieldlist)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  columns = [
         
     | 
| 
      
 42 
     | 
    
         
            +
                    'Account  :account',
         
     | 
| 
      
 43 
     | 
    
         
            +
                    'Type     :accounttype',
         
     | 
| 
      
 44 
     | 
    
         
            +
                    'State    :state',
         
     | 
| 
      
 45 
     | 
    
         
            +
                    'Domain   :domain',
         
     | 
| 
      
 46 
     | 
    
         
            +
                    'Username :username',
         
     | 
| 
      
 47 
     | 
    
         
            +
                    'First    :firstname',
         
     | 
| 
      
 48 
     | 
    
         
            +
                    'Last     :lastname'
         
     | 
| 
      
 49 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                  params = { 'command' => "listUsers" }
         
     | 
| 
      
 52 
     | 
    
         
            +
                  params['filter']  = locate_config_value(:filter)  if locate_config_value(:filter)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  params['listall'] = locate_config_value(:listall) if locate_config_value(:listall)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  params['name']    = locate_config_value(:name)    if locate_config_value(:name)
         
     | 
| 
      
 56 
     | 
    
         
            +
                  
         
     | 
| 
      
 57 
     | 
    
         
            +
                  result = connection.list_object(params, "user")
         
     | 
| 
      
 58 
     | 
    
         
            +
                  list_object(columns, result)
         
     | 
| 
       90 
59 
     | 
    
         
             
                end
         
     | 
| 
       91 
60 
     | 
    
         | 
| 
       92 
61 
     | 
    
         
             
              end
         
     |