summaryrefslogtreecommitdiff
path: root/lib/chef/knife/user_create.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/knife/user_create.rb')
-rw-r--r--lib/chef/knife/user_create.rb116
1 files changed, 82 insertions, 34 deletions
diff --git a/lib/chef/knife/user_create.rb b/lib/chef/knife/user_create.rb
index 18addda741..5332e863ae 100644
--- a/lib/chef/knife/user_create.rb
+++ b/lib/chef/knife/user_create.rb
@@ -1,7 +1,7 @@
#
# Author:: Steven Danna (<steve@chef.io>)
# Author:: Tyler Cloke (<tyler@chef.io>)
-# Copyright:: Copyright (c) 2015 Chef Software, Inc.
+# Copyright:: Copyright (c) 2012, 2015 Chef Software, Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,6 +18,7 @@
#
require 'chef/knife'
+require 'chef/knife/osc_user_create'
class Chef
class Knife
@@ -37,7 +38,7 @@ class Chef
option :user_key,
:long => "--user-key FILENAME",
- :description => "Set the initial default key for the user from a file on disk (cannot pass with --create-key)."
+ :description => "Set the initial default key for the user from a file on disk (cannot pass with --prevent-keygen)."
option :prevent_keygen,
:short => "-k",
@@ -45,6 +46,18 @@ class Chef
:description => "API V1 only. Prevent server from generating a default key pair for you. Cannot be passed with --user-key.",
:boolean => true
+ option :admin,
+ :short => "-a",
+ :long => "--admin",
+ :description => "DEPRECATED: Open Source Chef 11 only. Create the user as an admin.",
+ :boolean => true
+
+ option :user_password,
+ :short => "-p PASSWORD",
+ :long => "--password PASSWORD",
+ :description => "DEPRECATED: Open Source Chef 11 only. Password for newly created user.",
+ :default => ""
+
banner "knife user create USERNAME DISPLAY_NAME FIRST_NAME LAST_NAME EMAIL PASSWORD (options)"
def user
@@ -55,52 +68,87 @@ class Chef
Chef::User.from_hash(hash).create
end
+ def osc_11_warning
+<<-EOF
+IF YOU ARE USING CHEF SERVER 12+, PLEASE FOLLOW THE INSTRUCTIONS UNDER knife user create --help.
+You only passed a single argument to knife user create.
+For backwards compatibility, when only a single argument is passed,
+knife user create assumes you want Open Source 11 Server user creation.
+knife user create 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 create.
+If you are using an Open Source 11 Server, please use that command to avoid this warning.
+If you are not using an Open Source Chef 11 Server install, please read knife user create --help for proper usage.
+EOF
+ end
+
+ def run_osc_11_user_create
+ Chef::Knife.run(ARGV, Chef::Application::Knife.options)
+ end
+
def run
- test_mandatory_field(@name_args[0], "username")
- user.username @name_args[0]
+ # DEPRECATION NOTE
+ # Remove this if statement and corrosponding code post OSC 11 support.
+ #
+ # If only 1 arg is passed, assume OSC 11 case.
+ if @name_args.length == 1
+ ui.warn(osc_11_warning)
- test_mandatory_field(@name_args[1], "display name")
- user.display_name @name_args[1]
+ # run osc_user_create with our input
+ ARGV.delete("user")
+ ARGV.unshift("osc_user")
+ run_osc_11_user_create
- test_mandatory_field(@name_args[2], "first name")
- user.first_name @name_args[2]
+ else # EC / CS 12 user create
- test_mandatory_field(@name_args[3], "last name")
- user.last_name @name_args[3]
+ test_mandatory_field(@name_args[0], "username")
+ user.username @name_args[0]
- test_mandatory_field(@name_args[4], "email")
- user.email @name_args[4]
+ test_mandatory_field(@name_args[1], "display name")
+ user.display_name @name_args[1]
- test_mandatory_field(@name_args[5], "password")
- user.password @name_args[5]
+ test_mandatory_field(@name_args[2], "first name")
+ user.first_name @name_args[2]
- if config[:user_key] && config[:prevent_keygen]
- show_usage
- ui.fatal("You cannot pass --user-key and --prevent-keygen")
- exit 1
- end
+ test_mandatory_field(@name_args[3], "last name")
+ user.last_name @name_args[3]
- unless config[:prevent_keygen]
- user.create_key(true)
- end
+ test_mandatory_field(@name_args[4], "email")
+ user.email @name_args[4]
- if config[:user_key]
- user.public_key File.read(File.expand_path(config[:user_key]))
- end
+ test_mandatory_field(@name_args[5], "password")
+ user.password @name_args[5]
+
+ if config[:user_key] && config[:prevent_keygen]
+ show_usage
+ ui.fatal("You cannot pass --user-key and --prevent-keygen")
+ exit 1
+ end
+
+ if !config[:prevent_keygen] && !config[:user_key]
+ user.create_key(true)
+ end
- output = edit_data(user)
- final_user = create_user_from_hash(output)
+ if config[:user_key]
+ user.public_key File.read(File.expand_path(config[:user_key]))
+ end
- ui.info("Created #{user}")
- if final_user.private_key
- if config[:file]
- File.open(config[:file], "w") do |f|
- f.print(final_user.private_key)
+ output = edit_data(user)
+ final_user = create_user_from_hash(output)
+
+ ui.info("Created #{user}")
+ if final_user.private_key
+ if config[:file]
+ File.open(config[:file], "w") do |f|
+ f.print(final_user.private_key)
+ end
+ else
+ ui.msg final_user.private_key
end
- else
- ui.msg final_user.private_key
end
end
+
+
end
end
end