class Chef::Knife::JoyentServerMetadataDelete

Attributes

server[R]

Public Instance Methods

run() click to toggle source
# File lib/chef/knife/joyent_server_metadata_delete.rb, line 26
def run
  unless name_args.size === 1
    show_usage
    exit 1
  end

  if config[:keys].empty? and not config[:all]
    show_usage
    exit 1
  end

  id = name_args.first

  @server = self.connection.servers.get(id)
  unless server
    puts ui.error("Server with id: #{id} not found")
    exit 1
  end

  delete_all_keys if config[:all]
  delete_keys

  if server.update_metadata(config[:metadata])
    puts ui.color("Updated metadata on #{id}", :cyan)
    exit 0
  else
    puts ui.error("Metadata update failed")
    exit 1
  end

rescue => e
  output_error(e)
end

Private Instance Methods

delete_all_keys() click to toggle source
# File lib/chef/knife/joyent_server_metadata_delete.rb, line 62
def delete_all_keys
  if server.delete_all_metadata
    msg("Deleted all metadata on #{server.id}")
    exit 0
  else
    fail
  end
end
delete_keys() click to toggle source
# File lib/chef/knife/joyent_server_metadata_delete.rb, line 71
def delete_keys
  config[:keys].each do |key|
    if server.delete_metadata(key)
      msg("Deleted metadata key: #{key} on #{server.name}")
    else
      fail
    end
  end
  exit 0
end
fail() click to toggle source
# File lib/chef/knife/joyent_server_metadata_delete.rb, line 86
def fail
  puts ui.error("Metadata delete failed")
  exit 1
end
msg(msg) click to toggle source
# File lib/chef/knife/joyent_server_metadata_delete.rb, line 82
def msg(msg)
  puts ui.color(msg, :cyan)
end