class Chef::Knife::UserDelete

Public Instance Methods

delete_object(user_name) click to toggle source

DEPRECATION NOTE Delete this override method after OSC 11 support is dropped

# File lib/chef/knife/user_delete.rb, line 54
def delete_object(user_name)
  confirm("Do you really want to delete #{user_name}")

  if Kernel.block_given?
    object = block.call
  else
    object = Chef::UserV1.load(user_name)
    object.destroy
  end

  output(format_for_display(object)) if config[:print_after]
  msg("Deleted #{user_name}")
end
osc_11_warning() click to toggle source
# File lib/chef/knife/user_delete.rb, line 32
      def osc_11_warning
        <<-EOF
The Chef Server you are using does not support the username field.
This means it is an Open Source 11 Server.
knife user delete for Open Source 11 Server is being deprecated.
Open Source 11 Server user commands now live under the knife osc_user namespace.
For backwards compatibility, we will forward this request to knife osc_user delete.
If you are using an Open Source 11 Server, please use that command to avoid this warning.
NOTE: Backwards compatibility for Open Source 11 Server in these commands will be removed
in Chef 15 which will be released April 2019.
EOF
      end
run() click to toggle source
# File lib/chef/knife/user_delete.rb, line 68
def run
  @user_name = @name_args[0]

  if @user_name.nil?
    show_usage
    ui.fatal("You must specify a user name")
    exit 1
  end

  # DEPRECATION NOTE
  #
  # Below is modification of Chef::Knife.delete_object to detect OSC 11 server.
  # When OSC 11 is deprecated, simply delete all this and go back to:
  #
  # delete_object(Chef::UserV1, @user_name)
  #
  # Also delete our override of delete_object above
  object = Chef::UserV1.load(@user_name)

  # OSC 11 case
  if object.username.nil?
    ui.warn(osc_11_warning)
    run_osc_11_user_delete
  else # proceed with EC / CS delete
    delete_object(@user_name)
  end
end
run_osc_11_user_delete() click to toggle source
# File lib/chef/knife/user_delete.rb, line 45
def run_osc_11_user_delete
  # run osc_user_delete with our input
  ARGV.delete("user")
  ARGV.unshift("osc_user")
  Chef::Knife.run(ARGV, Chef::Application::Knife.options)
end