class Chef::Knife::JoyentTagDelete

Public Instance Methods

run() click to toggle source
# File lib/chef/knife/joyent_tag_delete.rb, line 19
def run
  server_id = name_args[0]
  tagname = name_args[1]
  all = config[:all]

  if !server_id || (all == false && !tagname) || (all && tagname)
    show_usage
    exit 1
  end

  begin
    server = self.connection.servers.get(server_id)
  rescue Excon::Errors::NotFound => e
    puts ui.error("Server #{server_id} not found")
    exit 1
  end

  if all
    server.delete_all_tags
    puts ui.color("Deleted all tags for #{server_id}", :cyan)
    exit 0
  else
    begin
      server.delete_tag(tagname)
    rescue Excon::Errors::NotFound => e
      puts ui.error("Tag #{tagname} on server #{server_id} not found")
      exit 1
    end

    tags = [
      ui.color('Name', :bold),
      ui.color('Value', :bold),
    ]

    server.reload.tags.each do |k, v|
      tags << k
      tags << v
    end
    puts ui.color("Deleted tag #{tagname} for #{server_id}", :cyan)
    puts ui.list(tags, :uneven_columns_across, 2)
  end
  exit 0
rescue => e
  output_error(e)
end