chef 12.4.0.rc.0-universal-mingw32 → 12.4.0.rc.2-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +12 -1
  3. data/lib/chef/api_client.rb +130 -26
  4. data/lib/chef/application.rb +0 -1
  5. data/lib/chef/application/client.rb +8 -19
  6. data/lib/chef/audit/audit_reporter.rb +12 -7
  7. data/lib/chef/audit/logger.rb +36 -0
  8. data/lib/chef/audit/runner.rb +4 -2
  9. data/lib/chef/chef_class.rb +62 -11
  10. data/lib/chef/client.rb +587 -207
  11. data/lib/chef/config.rb +0 -1
  12. data/lib/chef/dsl/recipe.rb +45 -56
  13. data/lib/chef/dsl/resources.rb +3 -2
  14. data/lib/chef/event_dispatch/base.rb +7 -2
  15. data/lib/chef/exceptions.rb +4 -1
  16. data/lib/chef/file_content_management/deploy/mv_windows.rb +16 -6
  17. data/lib/chef/formatters/doc.rb +15 -7
  18. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +10 -7
  19. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +2 -0
  20. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +4 -1
  21. data/lib/chef/http/authenticator.rb +7 -2
  22. data/lib/chef/knife.rb +16 -4
  23. data/lib/chef/knife/client_create.rb +55 -31
  24. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  25. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  26. data/lib/chef/knife/osc_user_create.rb +97 -0
  27. data/lib/chef/knife/osc_user_delete.rb +51 -0
  28. data/lib/chef/knife/osc_user_edit.rb +58 -0
  29. data/lib/chef/knife/osc_user_list.rb +47 -0
  30. data/lib/chef/knife/osc_user_reregister.rb +64 -0
  31. data/lib/chef/knife/osc_user_show.rb +54 -0
  32. data/lib/chef/knife/user_create.rb +95 -36
  33. data/lib/chef/knife/user_delete.rb +52 -2
  34. data/lib/chef/knife/user_edit.rb +37 -7
  35. data/lib/chef/knife/user_list.rb +3 -0
  36. data/lib/chef/knife/user_reregister.rb +39 -8
  37. data/lib/chef/knife/user_show.rb +30 -1
  38. data/lib/chef/mixin/api_version_request_handling.rb +66 -0
  39. data/lib/chef/mixin/convert_to_class_name.rb +10 -4
  40. data/lib/chef/mixin/deprecation.rb +24 -0
  41. data/lib/chef/mixin/powershell_out.rb +98 -0
  42. data/lib/chef/mixin/provides.rb +5 -18
  43. data/lib/chef/mixin/uris.rb +11 -0
  44. data/lib/chef/mixin/windows_architecture_helper.rb +5 -2
  45. data/lib/chef/mixin/windows_env_helper.rb +11 -2
  46. data/lib/chef/node_map.rb +130 -75
  47. data/lib/chef/osc_user.rb +194 -0
  48. data/lib/chef/platform/provider_mapping.rb +2 -269
  49. data/lib/chef/platform/provider_priority_map.rb +6 -69
  50. data/lib/chef/platform/query_helpers.rb +5 -0
  51. data/lib/chef/platform/resource_priority_map.rb +12 -15
  52. data/lib/chef/policy_builder/policyfile.rb +1 -0
  53. data/lib/chef/provider.rb +19 -0
  54. data/lib/chef/provider/directory.rb +3 -0
  55. data/lib/chef/provider/dsc_resource.rb +8 -1
  56. data/lib/chef/provider/file.rb +1 -0
  57. data/lib/chef/provider/group/aix.rb +1 -0
  58. data/lib/chef/provider/group/dscl.rb +1 -1
  59. data/lib/chef/provider/group/gpasswd.rb +1 -0
  60. data/lib/chef/provider/group/groupmod.rb +1 -1
  61. data/lib/chef/provider/group/pw.rb +1 -0
  62. data/lib/chef/provider/group/suse.rb +2 -0
  63. data/lib/chef/provider/group/usermod.rb +2 -1
  64. data/lib/chef/provider/group/windows.rb +1 -1
  65. data/lib/chef/provider/ifconfig.rb +2 -0
  66. data/lib/chef/provider/ifconfig/aix.rb +1 -0
  67. data/lib/chef/provider/ifconfig/debian.rb +2 -0
  68. data/lib/chef/provider/ifconfig/redhat.rb +1 -0
  69. data/lib/chef/provider/lwrp_base.rb +4 -0
  70. data/lib/chef/provider/mount.rb +0 -1
  71. data/lib/chef/provider/mount/aix.rb +1 -0
  72. data/lib/chef/provider/mount/mount.rb +2 -0
  73. data/lib/chef/provider/mount/solaris.rb +2 -0
  74. data/lib/chef/provider/package.rb +55 -0
  75. data/lib/chef/provider/package/aix.rb +7 -7
  76. data/lib/chef/provider/package/apt.rb +3 -3
  77. data/lib/chef/provider/package/dpkg.rb +4 -4
  78. data/lib/chef/provider/package/easy_install.rb +5 -5
  79. data/lib/chef/provider/package/freebsd/base.rb +2 -2
  80. data/lib/chef/provider/package/freebsd/pkg.rb +6 -6
  81. data/lib/chef/provider/package/freebsd/pkgng.rb +5 -5
  82. data/lib/chef/provider/package/freebsd/port.rb +4 -4
  83. data/lib/chef/provider/package/homebrew.rb +2 -2
  84. data/lib/chef/provider/package/ips.rb +4 -4
  85. data/lib/chef/provider/package/macports.rb +5 -6
  86. data/lib/chef/provider/package/openbsd.rb +4 -5
  87. data/lib/chef/provider/package/pacman.rb +4 -4
  88. data/lib/chef/provider/package/portage.rb +2 -0
  89. data/lib/chef/provider/package/rpm.rb +7 -8
  90. data/lib/chef/provider/package/rubygems.rb +5 -12
  91. data/lib/chef/provider/package/smartos.rb +4 -4
  92. data/lib/chef/provider/package/solaris.rb +7 -7
  93. data/lib/chef/provider/package/windows/msi.rb +1 -1
  94. data/lib/chef/provider/package/yum.rb +4 -6
  95. data/lib/chef/provider/package/zypper.rb +16 -14
  96. data/lib/chef/provider/powershell_script.rb +129 -47
  97. data/lib/chef/provider/remote_file/content.rb +4 -1
  98. data/lib/chef/provider/remote_file/local_file.rb +10 -4
  99. data/lib/chef/provider/service.rb +44 -0
  100. data/lib/chef/provider/service/freebsd.rb +1 -1
  101. data/lib/chef/provider/service/init.rb +1 -0
  102. data/lib/chef/provider/service/macosx.rb +1 -1
  103. data/lib/chef/provider/service/windows.rb +0 -1
  104. data/lib/chef/provider/user.rb +1 -1
  105. data/lib/chef/provider/user/aix.rb +3 -2
  106. data/lib/chef/provider/user/pw.rb +1 -0
  107. data/lib/chef/provider/user/solaris.rb +2 -0
  108. data/lib/chef/provider/user/useradd.rb +1 -0
  109. data/lib/chef/provider_resolver.rb +87 -134
  110. data/lib/chef/resource.rb +274 -68
  111. data/lib/chef/resource/apt_package.rb +0 -2
  112. data/lib/chef/resource/bash.rb +0 -2
  113. data/lib/chef/resource/batch.rb +1 -1
  114. data/lib/chef/resource/bff_package.rb +0 -7
  115. data/lib/chef/resource/breakpoint.rb +3 -6
  116. data/lib/chef/resource/chef_gem.rb +0 -3
  117. data/lib/chef/resource/cookbook_file.rb +1 -3
  118. data/lib/chef/resource/cron.rb +2 -4
  119. data/lib/chef/resource/csh.rb +0 -2
  120. data/lib/chef/resource/deploy.rb +9 -6
  121. data/lib/chef/resource/deploy_revision.rb +0 -14
  122. data/lib/chef/resource/directory.rb +2 -4
  123. data/lib/chef/resource/dpkg_package.rb +0 -5
  124. data/lib/chef/resource/dsc_resource.rb +2 -3
  125. data/lib/chef/resource/dsc_script.rb +2 -3
  126. data/lib/chef/resource/easy_install_package.rb +0 -7
  127. data/lib/chef/resource/env.rb +3 -3
  128. data/lib/chef/resource/erl_call.rb +2 -5
  129. data/lib/chef/resource/execute.rb +2 -4
  130. data/lib/chef/resource/file.rb +2 -4
  131. data/lib/chef/resource/freebsd_package.rb +0 -5
  132. data/lib/chef/resource/gem_package.rb +0 -3
  133. data/lib/chef/resource/git.rb +0 -3
  134. data/lib/chef/resource/group.rb +2 -4
  135. data/lib/chef/resource/homebrew_package.rb +0 -2
  136. data/lib/chef/resource/http_request.rb +3 -4
  137. data/lib/chef/resource/ifconfig.rb +3 -4
  138. data/lib/chef/resource/ips_package.rb +2 -2
  139. data/lib/chef/resource/link.rb +3 -5
  140. data/lib/chef/resource/log.rb +2 -4
  141. data/lib/chef/resource/lwrp_base.rb +10 -61
  142. data/lib/chef/resource/macosx_service.rb +1 -2
  143. data/lib/chef/resource/macports_package.rb +0 -7
  144. data/lib/chef/resource/mdadm.rb +2 -5
  145. data/lib/chef/resource/mount.rb +2 -4
  146. data/lib/chef/resource/ohai.rb +2 -4
  147. data/lib/chef/resource/openbsd_package.rb +0 -6
  148. data/lib/chef/resource/package.rb +9 -6
  149. data/lib/chef/resource/pacman_package.rb +0 -7
  150. data/lib/chef/resource/paludis_package.rb +2 -3
  151. data/lib/chef/resource/perl.rb +0 -3
  152. data/lib/chef/resource/portage_package.rb +0 -3
  153. data/lib/chef/resource/powershell_script.rb +1 -2
  154. data/lib/chef/resource/python.rb +0 -3
  155. data/lib/chef/resource/reboot.rb +1 -3
  156. data/lib/chef/resource/registry_key.rb +3 -5
  157. data/lib/chef/resource/remote_directory.rb +3 -5
  158. data/lib/chef/resource/remote_file.rb +4 -5
  159. data/lib/chef/resource/route.rb +3 -5
  160. data/lib/chef/resource/rpm_package.rb +0 -2
  161. data/lib/chef/resource/ruby.rb +0 -4
  162. data/lib/chef/resource/ruby_block.rb +2 -4
  163. data/lib/chef/resource/scm.rb +3 -5
  164. data/lib/chef/resource/script.rb +0 -3
  165. data/lib/chef/resource/service.rb +3 -5
  166. data/lib/chef/resource/smartos_package.rb +0 -9
  167. data/lib/chef/resource/solaris_package.rb +0 -10
  168. data/lib/chef/resource/subversion.rb +1 -3
  169. data/lib/chef/resource/template.rb +0 -4
  170. data/lib/chef/resource/timestamped_deploy.rb +0 -4
  171. data/lib/chef/resource/user.rb +2 -5
  172. data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -7
  173. data/lib/chef/resource/windows_package.rb +3 -3
  174. data/lib/chef/resource/windows_script.rb +2 -2
  175. data/lib/chef/resource/windows_service.rb +3 -3
  176. data/lib/chef/resource/yum_package.rb +0 -3
  177. data/lib/chef/resource/zypper_package.rb +27 -0
  178. data/lib/chef/resource_builder.rb +7 -0
  179. data/lib/chef/resource_reporter.rb +1 -1
  180. data/lib/chef/resource_resolver.rb +108 -62
  181. data/lib/chef/resources.rb +1 -0
  182. data/lib/chef/rest.rb +1 -0
  183. data/lib/chef/server_api.rb +2 -0
  184. data/lib/chef/user.rb +193 -42
  185. data/lib/chef/util/backup.rb +9 -1
  186. data/lib/chef/util/path_helper.rb +0 -1
  187. data/lib/chef/version.rb +1 -1
  188. data/spec/functional/audit/runner_spec.rb +22 -42
  189. data/spec/functional/mixin/powershell_out_spec.rb +43 -0
  190. data/spec/functional/resource/execute_spec.rb +9 -2
  191. data/spec/functional/resource/file_spec.rb +25 -0
  192. data/spec/functional/resource/group_spec.rb +5 -0
  193. data/spec/functional/resource/link_spec.rb +5 -11
  194. data/spec/functional/resource/powershell_spec.rb +40 -5
  195. data/spec/functional/resource/user/useradd_spec.rb +10 -18
  196. data/spec/integration/recipes/lwrp_spec.rb +57 -0
  197. data/spec/integration/recipes/provider_choice.rb +2 -7
  198. data/spec/integration/recipes/recipe_dsl_spec.rb +517 -19
  199. data/spec/spec_helper.rb +1 -1
  200. data/spec/support/lib/chef/provider/openldap_includer.rb +29 -0
  201. data/spec/support/lib/chef/resource/cat.rb +0 -2
  202. data/spec/support/lib/chef/resource/one_two_three_four.rb +0 -6
  203. data/spec/support/lib/chef/resource/openldap_includer.rb +27 -0
  204. data/spec/support/lib/chef/resource/with_state.rb +0 -9
  205. data/spec/support/lib/chef/resource/zen_follower.rb +0 -6
  206. data/spec/support/lib/chef/resource/zen_master.rb +1 -6
  207. data/spec/support/shared/context/client.rb +277 -0
  208. data/spec/support/shared/examples/client.rb +53 -0
  209. data/spec/support/shared/functional/file_resource.rb +0 -4
  210. data/spec/support/shared/functional/securable_resource.rb +0 -24
  211. data/spec/support/shared/functional/securable_resource_with_reporting.rb +4 -4
  212. data/spec/support/shared/functional/windows_script.rb +1 -1
  213. data/spec/support/shared/unit/api_versioning.rb +77 -0
  214. data/spec/support/shared/unit/knife_shared.rb +40 -0
  215. data/spec/support/shared/unit/user_and_client_shared.rb +115 -0
  216. data/spec/unit/api_client_spec.rb +189 -14
  217. data/spec/unit/application/client_spec.rb +0 -5
  218. data/spec/unit/audit/audit_reporter_spec.rb +58 -14
  219. data/spec/unit/audit/logger_spec.rb +42 -0
  220. data/spec/unit/audit/runner_spec.rb +2 -2
  221. data/spec/unit/chef_fs/file_pattern_spec.rb +3 -15
  222. data/spec/unit/client_spec.rb +58 -374
  223. data/spec/unit/cookbook_spec.rb +0 -9
  224. data/spec/unit/cookbook_version_spec.rb +0 -20
  225. data/spec/unit/deprecation_spec.rb +55 -0
  226. data/spec/unit/dsl/resources_spec.rb +85 -0
  227. data/spec/unit/exceptions_spec.rb +2 -2
  228. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +60 -0
  229. data/spec/unit/formatters/doc_spec.rb +46 -0
  230. data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +12 -10
  231. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +8 -0
  232. data/spec/unit/http/authenticator_spec.rb +11 -2
  233. data/spec/unit/knife/client_create_spec.rb +122 -51
  234. data/spec/unit/knife/core/subcommand_loader_spec.rb +19 -3
  235. data/spec/unit/knife/core/ui_spec.rb +14 -0
  236. data/spec/unit/knife/osc_user_create_spec.rb +93 -0
  237. data/spec/unit/knife/osc_user_delete_spec.rb +44 -0
  238. data/spec/unit/knife/osc_user_edit_spec.rb +52 -0
  239. data/spec/unit/knife/osc_user_list_spec.rb +37 -0
  240. data/spec/unit/knife/osc_user_reregister_spec.rb +58 -0
  241. data/spec/unit/knife/osc_user_show_spec.rb +46 -0
  242. data/spec/unit/knife/user_create_spec.rb +177 -51
  243. data/spec/unit/knife/user_delete_spec.rb +34 -8
  244. data/spec/unit/knife/user_edit_spec.rb +31 -12
  245. data/spec/unit/knife/user_list_spec.rb +7 -3
  246. data/spec/unit/knife/user_reregister_spec.rb +38 -17
  247. data/spec/unit/knife/user_show_spec.rb +35 -11
  248. data/spec/unit/knife_spec.rb +10 -4
  249. data/spec/unit/lwrp_spec.rb +228 -54
  250. data/spec/unit/mixin/api_version_request_handling_spec.rb +127 -0
  251. data/spec/unit/mixin/command_spec.rb +1 -2
  252. data/spec/unit/mixin/powershell_out_spec.rb +70 -0
  253. data/spec/unit/mixin/uris_spec.rb +23 -11
  254. data/spec/unit/node_map_spec.rb +4 -1
  255. data/spec/unit/osc_user_spec.rb +276 -0
  256. data/spec/unit/platform_spec.rb +0 -60
  257. data/spec/unit/provider/deploy_spec.rb +1 -1
  258. data/spec/unit/provider/directory_spec.rb +199 -135
  259. data/spec/unit/provider/ifconfig/debian_spec.rb +0 -10
  260. data/spec/unit/provider/package/aix_spec.rb +16 -16
  261. data/spec/unit/provider/package/dpkg_spec.rb +2 -2
  262. data/spec/unit/provider/package/freebsd/pkg_spec.rb +13 -13
  263. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
  264. data/spec/unit/provider/package/freebsd/port_spec.rb +7 -7
  265. data/spec/unit/provider/package/ips_spec.rb +22 -22
  266. data/spec/unit/provider/package/macports_spec.rb +10 -10
  267. data/spec/unit/provider/package/openbsd_spec.rb +4 -26
  268. data/spec/unit/provider/package/pacman_spec.rb +5 -5
  269. data/spec/unit/provider/package/rpm_spec.rb +14 -14
  270. data/spec/unit/provider/package/rubygems_spec.rb +10 -44
  271. data/spec/unit/provider/package/smartos_spec.rb +4 -4
  272. data/spec/unit/provider/package/solaris_spec.rb +11 -11
  273. data/spec/unit/provider/package/zypper_spec.rb +125 -90
  274. data/spec/unit/provider/package_spec.rb +34 -0
  275. data/spec/unit/provider/powershell_spec.rb +53 -11
  276. data/spec/unit/provider/remote_directory_spec.rb +2 -2
  277. data/spec/unit/provider/remote_file/local_file_spec.rb +25 -6
  278. data/spec/unit/provider/service/freebsd_service_spec.rb +0 -12
  279. data/spec/unit/provider/user_spec.rb +3 -3
  280. data/spec/unit/provider_resolver_spec.rb +463 -327
  281. data/spec/unit/recipe_spec.rb +42 -15
  282. data/spec/unit/resource/breakpoint_spec.rb +1 -1
  283. data/spec/unit/resource/erl_call_spec.rb +1 -1
  284. data/spec/unit/resource/file_spec.rb +1 -1
  285. data/spec/unit/resource/ifconfig_spec.rb +10 -6
  286. data/spec/unit/resource/remote_file_spec.rb +5 -0
  287. data/spec/unit/resource/route_spec.rb +1 -1
  288. data/spec/unit/resource/ruby_block_spec.rb +2 -2
  289. data/spec/unit/resource/template_spec.rb +1 -1
  290. data/spec/unit/resource/timestamped_deploy_spec.rb +1 -2
  291. data/spec/unit/resource/windows_service_spec.rb +1 -1
  292. data/spec/unit/resource_spec.rb +99 -13
  293. data/spec/unit/rest_spec.rb +5 -5
  294. data/spec/unit/run_context_spec.rb +41 -0
  295. data/spec/unit/runner_spec.rb +2 -2
  296. data/spec/unit/user_spec.rb +406 -93
  297. data/tasks/maintainers.rb +69 -0
  298. metadata +37 -4
@@ -181,7 +181,7 @@ class Chef
181
181
  # Must check :[] before attr because spec can include
182
182
  # `keys` - want the key named `keys`, not a list of
183
183
  # available keys.
184
- elsif data.respond_to?(:[])
184
+ elsif data.respond_to?(:[]) && data.has_key?(attr)
185
185
  data = data[attr]
186
186
  elsif data.respond_to?(attr.to_sym)
187
187
  data = data.send(attr.to_sym)
@@ -23,7 +23,7 @@ class Chef
23
23
  class SubcommandLoader
24
24
 
25
25
  MATCHES_CHEF_GEM = %r{/chef-[\d]+\.[\d]+\.[\d]+}.freeze
26
- MATCHES_THIS_CHEF_GEM = %r{/chef-#{Chef::VERSION}/}.freeze
26
+ MATCHES_THIS_CHEF_GEM = %r{/chef-#{Chef::VERSION}(-\w+)?(-\w+)?/}.freeze
27
27
 
28
28
  attr_reader :chef_config_dir
29
29
  attr_reader :env
@@ -0,0 +1,97 @@
1
+ #
2
+ # Author:: Steven Danna (<steve@opscode.com>)
3
+ # Copyright:: Copyright (c) 2012 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/knife'
20
+
21
+ # DEPRECATION NOTE
22
+ # This code only remains to support users still operating with
23
+ # Open Source Chef Server 11 and should be removed once support
24
+ # for OSC 11 ends. New development should occur in user_create.rb.
25
+ class Chef
26
+ class Knife
27
+ class OscUserCreate < Knife
28
+
29
+ deps do
30
+ require 'chef/osc_user'
31
+ require 'chef/json_compat'
32
+ end
33
+
34
+ option :file,
35
+ :short => "-f FILE",
36
+ :long => "--file FILE",
37
+ :description => "Write the private key to a file"
38
+
39
+ option :admin,
40
+ :short => "-a",
41
+ :long => "--admin",
42
+ :description => "Create the user as an admin",
43
+ :boolean => true
44
+
45
+ option :user_password,
46
+ :short => "-p PASSWORD",
47
+ :long => "--password PASSWORD",
48
+ :description => "Password for newly created user",
49
+ :default => ""
50
+
51
+ option :user_key,
52
+ :long => "--user-key FILENAME",
53
+ :description => "Public key for newly created user. By default a key will be created for you."
54
+
55
+ banner "knife osc_user create USER (options)"
56
+
57
+ def run
58
+ @user_name = @name_args[0]
59
+
60
+ if @user_name.nil?
61
+ show_usage
62
+ ui.fatal("You must specify a user name")
63
+ exit 1
64
+ end
65
+
66
+ if config[:user_password].length == 0
67
+ show_usage
68
+ ui.fatal("You must specify a non-blank password")
69
+ exit 1
70
+ end
71
+
72
+ user = Chef::OscUser.new
73
+ user.name(@user_name)
74
+ user.admin(config[:admin])
75
+ user.password config[:user_password]
76
+
77
+ if config[:user_key]
78
+ user.public_key File.read(File.expand_path(config[:user_key]))
79
+ end
80
+
81
+ output = edit_data(user)
82
+ user = Chef::OscUser.from_hash(output).create
83
+
84
+ ui.info("Created #{user}")
85
+ if user.private_key
86
+ if config[:file]
87
+ File.open(config[:file], "w") do |f|
88
+ f.print(user.private_key)
89
+ end
90
+ else
91
+ ui.msg user.private_key
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,51 @@
1
+ #
2
+ # Author:: Steven Danna (<steve@opscode.com>)
3
+ # Copyright:: Copyright (c) 2012 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/knife'
20
+
21
+ # DEPRECATION NOTE
22
+ # This code only remains to support users still operating with
23
+ # Open Source Chef Server 11 and should be removed once support
24
+ # for OSC 11 ends. New development should occur in the user_delete.rb.
25
+
26
+ class Chef
27
+ class Knife
28
+ class OscUserDelete < Knife
29
+
30
+ deps do
31
+ require 'chef/osc_user'
32
+ require 'chef/json_compat'
33
+ end
34
+
35
+ banner "knife osc_user delete USER (options)"
36
+
37
+ def run
38
+ @user_name = @name_args[0]
39
+
40
+ if @user_name.nil?
41
+ show_usage
42
+ ui.fatal("You must specify a user name")
43
+ exit 1
44
+ end
45
+
46
+ delete_object(Chef::OscUser, @user_name)
47
+ end
48
+
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,58 @@
1
+ #
2
+ # Author:: Steven Danna (<steve@opscode.com>)
3
+ # Copyright:: Copyright (c) 2012 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/knife'
20
+
21
+ # DEPRECATION NOTE
22
+ # This code only remains to support users still operating with
23
+ # Open Source Chef Server 11 and should be removed once support
24
+ # for OSC 11 ends. New development should occur in user_edit.rb.
25
+
26
+ class Chef
27
+ class Knife
28
+ class OscUserEdit < Knife
29
+
30
+ deps do
31
+ require 'chef/osc_user'
32
+ require 'chef/json_compat'
33
+ end
34
+
35
+ banner "knife osc_user edit USER (options)"
36
+
37
+ def run
38
+ @user_name = @name_args[0]
39
+
40
+ if @user_name.nil?
41
+ show_usage
42
+ ui.fatal("You must specify a user name")
43
+ exit 1
44
+ end
45
+
46
+ original_user = Chef::OscUser.load(@user_name).to_hash
47
+ edited_user = edit_data(original_user)
48
+ if original_user != edited_user
49
+ user = Chef::OscUser.from_hash(edited_user)
50
+ user.update
51
+ ui.msg("Saved #{user}.")
52
+ else
53
+ ui.msg("User unchaged, not saving.")
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,47 @@
1
+ #
2
+ # Author:: Steven Danna (<steve@opscode.com>)
3
+ # Copyright:: Copyright (c) 2012 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/knife'
20
+
21
+ # DEPRECATION NOTE
22
+ # This code only remains to support users still operating with
23
+ # Open Source Chef Server 11 and should be removed once support
24
+ # for OSC 11 ends. New development should occur in user_list.rb.
25
+
26
+ class Chef
27
+ class Knife
28
+ class OscUserList < Knife
29
+
30
+ deps do
31
+ require 'chef/osc_user'
32
+ require 'chef/json_compat'
33
+ end
34
+
35
+ banner "knife osc_user list (options)"
36
+
37
+ option :with_uri,
38
+ :short => "-w",
39
+ :long => "--with-uri",
40
+ :description => "Show corresponding URIs"
41
+
42
+ def run
43
+ output(format_list_for_display(Chef::OscUser.list))
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,64 @@
1
+ #
2
+ # Author:: Steven Danna (<steve@opscode.com>)
3
+ # Copyright:: Copyright (c) 2012 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/knife'
20
+
21
+ # DEPRECATION NOTE
22
+ # This code only remains to support users still operating with
23
+ # Open Source Chef Server 11 and should be removed once support
24
+ # for OSC 11 ends. New development should occur in user_reregister.rb.
25
+
26
+ class Chef
27
+ class Knife
28
+ class OscUserReregister < Knife
29
+
30
+ deps do
31
+ require 'chef/osc_user'
32
+ require 'chef/json_compat'
33
+ end
34
+
35
+ banner "knife osc_user reregister USER (options)"
36
+
37
+ option :file,
38
+ :short => "-f FILE",
39
+ :long => "--file FILE",
40
+ :description => "Write the private key to a file"
41
+
42
+ def run
43
+ @user_name = @name_args[0]
44
+
45
+ if @user_name.nil?
46
+ show_usage
47
+ ui.fatal("You must specify a user name")
48
+ exit 1
49
+ end
50
+
51
+ user = Chef::OscUser.load(@user_name).reregister
52
+ Chef::Log.debug("Updated user data: #{user.inspect}")
53
+ key = user.private_key
54
+ if config[:file]
55
+ File.open(config[:file], "w") do |f|
56
+ f.print(key)
57
+ end
58
+ else
59
+ ui.msg key
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,54 @@
1
+ #
2
+ # Author:: Steven Danna (<steve@opscode.com>)
3
+ # Copyright:: Copyright (c) 2009 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/knife'
20
+
21
+ # DEPRECATION NOTE
22
+ # This code only remains to support users still operating with
23
+ # Open Source Chef Server 11 and should be removed once support
24
+ # for OSC 11 ends. New development should occur in user_show.rb.
25
+
26
+ class Chef
27
+ class Knife
28
+ class OscUserShow < Knife
29
+
30
+ include Knife::Core::MultiAttributeReturnOption
31
+
32
+ deps do
33
+ require 'chef/osc_user'
34
+ require 'chef/json_compat'
35
+ end
36
+
37
+ banner "knife osc_user show USER (options)"
38
+
39
+ def run
40
+ @user_name = @name_args[0]
41
+
42
+ if @user_name.nil?
43
+ show_usage
44
+ ui.fatal("You must specify a user name")
45
+ exit 1
46
+ end
47
+
48
+ user = Chef::OscUser.load(@user_name)
49
+ output(format_for_display(user))
50
+ end
51
+
52
+ end
53
+ end
54
+ end
@@ -1,6 +1,7 @@
1
1
  #
2
- # Author:: Steven Danna (<steve@opscode.com>)
3
- # Copyright:: Copyright (c) 2012 Opscode, Inc.
2
+ # Author:: Steven Danna (<steve@chef.io>)
3
+ # Author:: Tyler Cloke (<tyler@chef.io>)
4
+ # Copyright:: Copyright (c) 2012, 2015 Chef Software, Inc.
4
5
  # License:: Apache License, Version 2.0
5
6
  #
6
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,11 +18,14 @@
17
18
  #
18
19
 
19
20
  require 'chef/knife'
21
+ require 'chef/knife/osc_user_create'
20
22
 
21
23
  class Chef
22
24
  class Knife
23
25
  class UserCreate < Knife
24
26
 
27
+ attr_accessor :user_field
28
+
25
29
  deps do
26
30
  require 'chef/user'
27
31
  require 'chef/json_compat'
@@ -30,63 +34,118 @@ class Chef
30
34
  option :file,
31
35
  :short => "-f FILE",
32
36
  :long => "--file FILE",
33
- :description => "Write the private key to a file"
37
+ :description => "Write the private key to a file if the server generated one."
38
+
39
+ option :user_key,
40
+ :long => "--user-key FILENAME",
41
+ :description => "Set the initial default key for the user from a file on disk (cannot pass with --prevent-keygen)."
42
+
43
+ option :prevent_keygen,
44
+ :short => "-k",
45
+ :long => "--prevent-keygen",
46
+ :description => "API V1 only. Prevent server from generating a default key pair for you. Cannot be passed with --user-key.",
47
+ :boolean => true
34
48
 
35
49
  option :admin,
36
50
  :short => "-a",
37
51
  :long => "--admin",
38
- :description => "Create the user as an admin",
52
+ :description => "DEPRECATED: Open Source Chef 11 only. Create the user as an admin.",
39
53
  :boolean => true
40
54
 
41
55
  option :user_password,
42
56
  :short => "-p PASSWORD",
43
57
  :long => "--password PASSWORD",
44
- :description => "Password for newly created user",
58
+ :description => "DEPRECATED: Open Source Chef 11 only. Password for newly created user.",
45
59
  :default => ""
46
60
 
47
- option :user_key,
48
- :long => "--user-key FILENAME",
49
- :description => "Public key for newly created user. By default a key will be created for you."
61
+ banner "knife user create USERNAME DISPLAY_NAME FIRST_NAME LAST_NAME EMAIL PASSWORD (options)"
62
+
63
+ def user
64
+ @user_field ||= Chef::User.new
65
+ end
66
+
67
+ def create_user_from_hash(hash)
68
+ Chef::User.from_hash(hash).create
69
+ end
70
+
71
+ def osc_11_warning
72
+ <<-EOF
73
+ IF YOU ARE USING CHEF SERVER 12+, PLEASE FOLLOW THE INSTRUCTIONS UNDER knife user create --help.
74
+ You only passed a single argument to knife user create.
75
+ For backwards compatibility, when only a single argument is passed,
76
+ knife user create assumes you want Open Source 11 Server user creation.
77
+ knife user create for Open Source 11 Server is being deprecated.
78
+ Open Source 11 Server user commands now live under the knife osc_user namespace.
79
+ For backwards compatibility, we will forward this request to knife osc_user create.
80
+ If you are using an Open Source 11 Server, please use that command to avoid this warning.
81
+ EOF
82
+ end
50
83
 
51
- banner "knife user create USER (options)"
84
+ def run_osc_11_user_create
85
+ # run osc_user_create with our input
86
+ ARGV.delete("user")
87
+ ARGV.unshift("osc_user")
88
+ Chef::Knife.run(ARGV, Chef::Application::Knife.options)
89
+ end
52
90
 
53
91
  def run
54
- @user_name = @name_args[0]
92
+ # DEPRECATION NOTE
93
+ # Remove this if statement and corrosponding code post OSC 11 support.
94
+ #
95
+ # If only 1 arg is passed, assume OSC 11 case.
96
+ if @name_args.length == 1
97
+ ui.warn(osc_11_warning)
98
+ run_osc_11_user_create
99
+ else # EC / CS 12 user create
55
100
 
56
- if @user_name.nil?
57
- show_usage
58
- ui.fatal("You must specify a user name")
59
- exit 1
60
- end
101
+ test_mandatory_field(@name_args[0], "username")
102
+ user.username @name_args[0]
61
103
 
62
- if config[:user_password].length == 0
63
- show_usage
64
- ui.fatal("You must specify a non-blank password")
65
- exit 1
66
- end
104
+ test_mandatory_field(@name_args[1], "display name")
105
+ user.display_name @name_args[1]
67
106
 
68
- user = Chef::User.new
69
- user.name(@user_name)
70
- user.admin(config[:admin])
71
- user.password config[:user_password]
107
+ test_mandatory_field(@name_args[2], "first name")
108
+ user.first_name @name_args[2]
72
109
 
73
- if config[:user_key]
74
- user.public_key File.read(File.expand_path(config[:user_key]))
75
- end
110
+ test_mandatory_field(@name_args[3], "last name")
111
+ user.last_name @name_args[3]
112
+
113
+ test_mandatory_field(@name_args[4], "email")
114
+ user.email @name_args[4]
115
+
116
+ test_mandatory_field(@name_args[5], "password")
117
+ user.password @name_args[5]
118
+
119
+ if config[:user_key] && config[:prevent_keygen]
120
+ show_usage
121
+ ui.fatal("You cannot pass --user-key and --prevent-keygen")
122
+ exit 1
123
+ end
124
+
125
+ if !config[:prevent_keygen] && !config[:user_key]
126
+ user.create_key(true)
127
+ end
76
128
 
77
- output = edit_data(user)
78
- user = Chef::User.from_hash(output).create
129
+ if config[:user_key]
130
+ user.public_key File.read(File.expand_path(config[:user_key]))
131
+ end
79
132
 
80
- ui.info("Created #{user}")
81
- if user.private_key
82
- if config[:file]
83
- File.open(config[:file], "w") do |f|
84
- f.print(user.private_key)
133
+ output = edit_data(user)
134
+ final_user = create_user_from_hash(output)
135
+
136
+ ui.info("Created #{user}")
137
+ if final_user.private_key
138
+ if config[:file]
139
+ File.open(config[:file], "w") do |f|
140
+ f.print(final_user.private_key)
141
+ end
142
+ else
143
+ ui.msg final_user.private_key
85
144
  end
86
- else
87
- ui.msg user.private_key
88
145
  end
89
146
  end
147
+
148
+
90
149
  end
91
150
  end
92
151
  end