diff options
Diffstat (limited to 'lib/chef')
-rw-r--r-- | lib/chef/abstract_user.rb | 106 | ||||
-rw-r--r-- | lib/chef/knife.rb | 2 | ||||
-rw-r--r-- | lib/chef/knife/user_create.rb | 4 | ||||
-rw-r--r-- | lib/chef/user.rb | 48 | ||||
-rw-r--r-- | lib/chef/user_v1.rb | 74 |
5 files changed, 117 insertions, 117 deletions
diff --git a/lib/chef/abstract_user.rb b/lib/chef/abstract_user.rb deleted file mode 100644 index dc53488349..0000000000 --- a/lib/chef/abstract_user.rb +++ /dev/null @@ -1,106 +0,0 @@ -# -# Author:: Snehal Dwivedi (sdwivedi@chef.io) -# Copyright:: Copyright (c) 2008-2016 Chef Software, Inc. -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# common methods of User and UserV1 -class Chef - class AbstractUser - - def initialize - @name = "" - @password = nil - @admin = false - @username = nil - @display_name = nil - @first_name = nil - @middle_name = nil - @last_name = nil - @email = nil - @public_key = nil - @private_key = nil - @create_key = nil - end - - def chef_root_rest_v0 - @chef_root_rest_v0 ||= Chef::ServerAPI.new(Chef::Config[:chef_server_root], { api_version: "0" }) - end - - def chef_root_rest_v1 - @chef_root_rest_v1 ||= Chef::ServerAPI.new(Chef::Config[:chef_server_root], { api_version: "1" }) - end - - def name(arg = nil) - set_or_return(:name, arg, - regex: /^[a-z0-9\-_]+$/) - end - - def admin(arg = nil) - set_or_return(:admin, - arg, kind_of: [TrueClass, FalseClass]) - end - - def username(arg = nil) - set_or_return(:username, arg, - regex: /^[a-z0-9\-_]+$/) - end - - def display_name(arg = nil) - set_or_return(:display_name, - arg, kind_of: String) - end - - def first_name(arg = nil) - set_or_return(:first_name, - arg, kind_of: String) - end - - def middle_name(arg = nil) - set_or_return(:middle_name, - arg, kind_of: String) - end - - def last_name(arg = nil) - set_or_return(:last_name, - arg, kind_of: String) - end - - def email(arg = nil) - set_or_return(:email, - arg, kind_of: String) - end - - def create_key(arg = nil) - set_or_return(:create_key, arg, - kind_of: [TrueClass, FalseClass]) - end - - def public_key(arg = nil) - set_or_return(:public_key, - arg, kind_of: String) - end - - def private_key(arg = nil) - set_or_return(:private_key, - arg, kind_of: String) - end - - def password(arg = nil) - set_or_return(:password, - arg, kind_of: String) - end - end -end diff --git a/lib/chef/knife.rb b/lib/chef/knife.rb index 9e2578ef3a..a5ed415fee 100644 --- a/lib/chef/knife.rb +++ b/lib/chef/knife.rb @@ -665,7 +665,7 @@ class Chef def root_rest @root_rest ||= begin require_relative "server_api" - Chef::ServerAPI.new(Chef::Config[:chef_server_root], { api_version: "2" }) + Chef::ServerAPI.new(Chef::Config[:chef_server_root], { api_version: "1" }) end end end diff --git a/lib/chef/knife/user_create.rb b/lib/chef/knife/user_create.rb index bd9103d958..aa1d4d54f2 100644 --- a/lib/chef/knife/user_create.rb +++ b/lib/chef/knife/user_create.rb @@ -26,7 +26,7 @@ class Chef attr_accessor :user_field deps do - require_relative "../user" + require_relative "../user_v1" end option :file, @@ -57,7 +57,7 @@ class Chef banner "knife user create USERNAME DISPLAY_NAME FIRST_NAME LAST_NAME EMAIL PASSWORD (options)" def user - @user_field ||= Chef::User.new + @user_field ||= Chef::UserV1.new end def run diff --git a/lib/chef/user.rb b/lib/chef/user.rb index 8691bb4a50..4ebcb3a463 100644 --- a/lib/chef/user.rb +++ b/lib/chef/user.rb @@ -22,7 +22,6 @@ require_relative "mash" require_relative "json_compat" require_relative "search/query" require_relative "server_api" -require_relative "abstract_user" # TODO # DEPRECATION NOTE @@ -36,10 +35,47 @@ require_relative "abstract_user" # This file and corresponding osc_user knife files # should be removed once client support for Open Source Chef Server 11 expires. class Chef - class User < Chef::AbstractUser + class User include Chef::Mixin::FromFile include Chef::Mixin::ParamsValidate + def initialize + @name = "" + @public_key = nil + @private_key = nil + @password = nil + @admin = false + end + + def chef_rest_v0 + @chef_rest_v0 ||= Chef::ServerAPI.new(Chef::Config[:chef_server_url], { api_version: "0" }) + end + + def name(arg = nil) + set_or_return(:name, arg, + regex: /^[a-z0-9\-_]+$/) + end + + def admin(arg = nil) + set_or_return(:admin, + arg, kind_of: [TrueClass, FalseClass]) + end + + def public_key(arg = nil) + set_or_return(:public_key, + arg, kind_of: String) + end + + def private_key(arg = nil) + set_or_return(:private_key, + arg, kind_of: String) + end + + def password(arg = nil) + set_or_return(:password, + arg, kind_of: String) + end + def to_h result = { "name" => @name, @@ -58,13 +94,13 @@ class Chef end def destroy - chef_root_rest_v0.delete("users/#{@name}") + chef_rest_v0.delete("users/#{@name}") end def create payload = { name: name, admin: admin, password: password } payload[:public_key] = public_key if public_key - new_user = chef_root_rest_v0.post("users", payload) + new_user = chef_rest_v0.post("users", payload) Chef::User.from_hash(to_h.merge(new_user)) end @@ -72,7 +108,7 @@ class Chef payload = { name: name, admin: admin } payload[:private_key] = new_key if new_key payload[:password] = password if password - updated_user = chef_root_rest_v0.put("users/#{name}", payload) + updated_user = chef_rest_v0.put("users/#{name}", payload) Chef::User.from_hash(to_h.merge(updated_user)) end @@ -87,7 +123,7 @@ class Chef end def reregister - reregistered_self = chef_root_rest_v0.put("users/#{name}", { name: name, admin: admin, private_key: true }) + reregistered_self = chef_rest_v0.put("users/#{name}", { name: name, admin: admin, private_key: true }) private_key(reregistered_self["private_key"]) self end diff --git a/lib/chef/user_v1.rb b/lib/chef/user_v1.rb index e5c3f07eff..945f0197df 100644 --- a/lib/chef/user_v1.rb +++ b/lib/chef/user_v1.rb @@ -24,7 +24,6 @@ require_relative "search/query" require_relative "mixin/api_version_request_handling" require_relative "exceptions" require_relative "server_api" -require_relative "abstract_user" # OSC 11 BACKWARDS COMPATIBILITY NOTE (remove after OSC 11 support ends) # @@ -34,7 +33,7 @@ require_relative "abstract_user" # # Exception: self.list is backwards compatible with OSC 11 class Chef - class UserV1 < Chef::AbstractUser + class UserV1 include Chef::Mixin::FromFile include Chef::Mixin::ParamsValidate @@ -42,6 +41,77 @@ class Chef SUPPORTED_API_VERSIONS = [0, 1].freeze + def initialize + @username = nil + @display_name = nil + @first_name = nil + @middle_name = nil + @last_name = nil + @email = nil + @password = nil + @public_key = nil + @private_key = nil + @create_key = nil + end + + def chef_root_rest_v0 + @chef_root_rest_v0 ||= Chef::ServerAPI.new(Chef::Config[:chef_server_root], { api_version: "0" }) + end + + def chef_root_rest_v1 + @chef_root_rest_v1 ||= Chef::ServerAPI.new(Chef::Config[:chef_server_root], { api_version: "1" }) + end + + def username(arg = nil) + set_or_return(:username, arg, + regex: /^[a-z0-9\-_]+$/) + end + + def display_name(arg = nil) + set_or_return(:display_name, + arg, kind_of: String) + end + + def first_name(arg = nil) + set_or_return(:first_name, + arg, kind_of: String) + end + + def middle_name(arg = nil) + set_or_return(:middle_name, + arg, kind_of: String) + end + + def last_name(arg = nil) + set_or_return(:last_name, + arg, kind_of: String) + end + + def email(arg = nil) + set_or_return(:email, + arg, kind_of: String) + end + + def create_key(arg = nil) + set_or_return(:create_key, arg, + kind_of: [TrueClass, FalseClass]) + end + + def public_key(arg = nil) + set_or_return(:public_key, + arg, kind_of: String) + end + + def private_key(arg = nil) + set_or_return(:private_key, + arg, kind_of: String) + end + + def password(arg = nil) + set_or_return(:password, + arg, kind_of: String) + end + def to_h result = { "username" => @username, |