diff options
Diffstat (limited to 'lib/chef/knife/user_create.rb')
-rw-r--r-- | lib/chef/knife/user_create.rb | 116 |
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 |