module Docli class Get < SubcommandBase desc 'droplets', 'List droplets' method_option :tag_name, aliases: '-t', desc: 'filter by tag name', type: :string def droplets(droplet_id = nil) ## Sometime user confuse with `docli get droplet` and `docli get droplets` ## This enabled: docli get droplets DROPLET_ID ## IMPROVEMENT: Consider to enable or disable this feature return invoke :droplet if droplet_id ## puts "`get droplets` called with options: #{options}" if Docli.debug? droplet_objects = Docli.client.droplets.all(options.symbolize_keys) tp( droplet_objects.map do |drlet| { id: drlet.id, name: drlet.name, ipv4: drlet.networks.v4.find { |v| v.type == 'public' }.ip_address, region: drlet.region.slug, size: drlet.size_slug, status: Docli::Utils.colorize(drlet.status) } end ) end desc 'account', 'Show account information' def account account = Cmd::Accounts.get_user_information puts 'Email: '.yellow + account.email.red puts 'Droplet Limit: '.yellow + account.droplet_limit.to_s.red puts 'Floating IP Limit: '.yellow + account.floating_ip_limit.to_s.red puts 'Verified: '.yellow + account.email_verified.to_s.red end desc 'blockstorages', 'List all block storage / volume' def blockstorages volumes = Cmd::Volumes.list_all_volumes.each.as_json tp ( volumes.map do |vl| { id: vl['id'], name: vl['name'], region: vl['region']['name'], droplet_id: vl['droplet_ids'], size: vl['size_gigabytes'].to_s + " GB", created_at: vl['created_at'] } end ), {:id => {:width => 100}}, :name, :region, {:droplet_id => {:width => 100}}, :size, :created_at end desc 'droplet', 'Show a droplet by id' def droplet(droplet_id) puts "`get droplet` called with params: #{droplet_id}, options: #{options}" if Docli.debug? drlet = Docli.client.droplets.find(id: droplet_id) puts "Droplet ID: #{drlet.id}" { name: drlet.name, ipv4: drlet.networks.v4.find { |v| v.type == 'public' }.ip_address, region: "#{drlet.region.name} (#{drlet.region.slug})", size: drlet.size_slug, status: drlet.status }.each do |k,v| puts "\t#{k}: #{v}" end end end end