puppet 0.24.5 → 0.24.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (354) hide show
  1. data/CHANGELOG +206 -0
  2. data/Rakefile +53 -0
  3. data/bin/filebucket +0 -0
  4. data/bin/puppet +32 -11
  5. data/bin/puppetca +1 -0
  6. data/bin/puppetd +0 -0
  7. data/bin/puppetdoc +0 -0
  8. data/bin/puppetmasterd +0 -0
  9. data/bin/puppetrun +16 -8
  10. data/bin/ralsh +0 -0
  11. data/conf/debian/rules +0 -0
  12. data/conf/gentoo/init.d/puppetmaster +0 -0
  13. data/conf/osx/PackageInfo.plist +36 -0
  14. data/conf/osx/createpackage.sh +167 -0
  15. data/conf/osx/preflight +12 -0
  16. data/conf/redhat/client.init +1 -1
  17. data/conf/redhat/puppet.spec +34 -6
  18. data/conf/redhat/server.init +42 -7
  19. data/conf/redhat/server.sysconfig +22 -0
  20. data/conf/solaris/smf/svc-puppetd +0 -0
  21. data/conf/solaris/smf/svc-puppetmasterd +0 -0
  22. data/examples/etc/init.d/sleeper +0 -0
  23. data/examples/mac_dscl.pp +0 -0
  24. data/examples/mac_dscl_revert.pp +0 -0
  25. data/examples/mac_netinfo.pp +0 -0
  26. data/examples/mac_pkgdmg.pp +0 -0
  27. data/ext/bin/sleeper +0 -0
  28. data/ext/module_puppet +0 -0
  29. data/ext/nagios/check_puppet.rb +0 -0
  30. data/ext/passenger/README +63 -0
  31. data/ext/passenger/apache2.conf +29 -0
  32. data/ext/passenger/config.ru +40 -0
  33. data/ext/puppet-test +0 -0
  34. data/ext/puppetlast +6 -31
  35. data/ext/puppetstoredconfigclean.rb +87 -0
  36. data/install.rb +75 -20
  37. data/lib/puppet.rb +1 -1
  38. data/lib/puppet/daemon.rb +0 -0
  39. data/lib/puppet/defaults.rb +3 -7
  40. data/lib/puppet/external/base64.rb +0 -0
  41. data/lib/puppet/external/nagios.rb +0 -0
  42. data/lib/puppet/external/nagios/base.rb +0 -0
  43. data/lib/puppet/file_serving/fileset.rb +2 -2
  44. data/lib/puppet/file_serving/metadata.rb +3 -3
  45. data/lib/puppet/indirector/facts/facter.rb +3 -2
  46. data/lib/puppet/indirector/yaml.rb +10 -1
  47. data/lib/puppet/module.rb +36 -12
  48. data/lib/puppet/network/authstore.rb +0 -0
  49. data/lib/puppet/network/client/master.rb +12 -11
  50. data/lib/puppet/network/handler/filebucket.rb +0 -0
  51. data/lib/puppet/network/handler/fileserver.rb +38 -46
  52. data/lib/puppet/network/handler/master.rb +1 -1
  53. data/lib/puppet/network/handler/report.rb +0 -0
  54. data/lib/puppet/network/handler/resource.rb +0 -0
  55. data/lib/puppet/network/handler/runner.rb +0 -0
  56. data/lib/puppet/network/http_server/rack.rb +148 -0
  57. data/lib/puppet/network/rights.rb +0 -0
  58. data/lib/puppet/network/xmlrpc/client.rb +5 -5
  59. data/lib/puppet/node.rb +5 -9
  60. data/lib/puppet/node/environment.rb +1 -17
  61. data/lib/puppet/node/facts.rb +0 -0
  62. data/lib/puppet/parameter.rb +1 -28
  63. data/lib/puppet/parser/ast.rb +6 -0
  64. data/lib/puppet/parser/ast/arithmetic_operator.rb +41 -0
  65. data/lib/puppet/parser/ast/boolean_operator.rb +48 -0
  66. data/lib/puppet/parser/ast/collexpr.rb +6 -1
  67. data/lib/puppet/parser/ast/comparison_operator.rb +37 -0
  68. data/lib/puppet/parser/ast/minus.rb +23 -0
  69. data/lib/puppet/parser/ast/nop.rb +11 -0
  70. data/lib/puppet/parser/ast/not.rb +19 -0
  71. data/lib/puppet/parser/ast/resource_override.rb +23 -16
  72. data/lib/puppet/parser/ast/resource_reference.rb +10 -6
  73. data/lib/puppet/parser/ast/vardef.rb +2 -2
  74. data/lib/puppet/parser/collector.rb +2 -1
  75. data/lib/puppet/parser/functions.rb +7 -217
  76. data/lib/puppet/parser/functions/defined.rb +27 -0
  77. data/lib/puppet/parser/functions/fail.rb +4 -0
  78. data/lib/puppet/parser/functions/file.rb +21 -0
  79. data/lib/puppet/parser/functions/fqdn_rand.rb +15 -0
  80. data/lib/puppet/parser/functions/generate.rb +35 -0
  81. data/lib/puppet/parser/functions/include.rb +26 -0
  82. data/lib/puppet/parser/functions/realize.rb +14 -0
  83. data/lib/puppet/parser/functions/search.rb +7 -0
  84. data/lib/puppet/parser/functions/sha1.rb +6 -0
  85. data/lib/puppet/parser/functions/tag.rb +6 -0
  86. data/lib/puppet/parser/functions/tagged.rb +18 -0
  87. data/lib/puppet/parser/functions/template.rb +22 -0
  88. data/lib/puppet/parser/lexer.rb +15 -5
  89. data/lib/puppet/parser/parser.rb +1073 -715
  90. data/lib/puppet/parser/parser_support.rb +18 -13
  91. data/lib/puppet/parser/resource.rb +1 -1
  92. data/lib/puppet/parser/resource/param.rb +10 -2
  93. data/lib/puppet/parser/scope.rb +63 -5
  94. data/lib/puppet/parser/templatewrapper.rb +61 -15
  95. data/lib/puppet/property.rb +7 -1
  96. data/lib/puppet/property/keyvalue.rb +96 -0
  97. data/lib/puppet/property/list.rb +78 -0
  98. data/lib/puppet/provider/confine.rb +1 -1
  99. data/lib/puppet/provider/confine/variable.rb +10 -1
  100. data/lib/puppet/provider/cron/crontab.rb +0 -0
  101. data/lib/puppet/provider/mailalias/aliases.rb +0 -0
  102. data/lib/puppet/provider/maillist/mailman.rb +0 -0
  103. data/lib/puppet/provider/mount/parsed.rb +0 -0
  104. data/lib/puppet/provider/nameservice.rb +24 -39
  105. data/lib/puppet/provider/nameservice/directoryservice.rb +12 -3
  106. data/lib/puppet/provider/nameservice/netinfo.rb +12 -2
  107. data/lib/puppet/provider/nameservice/objectadd.rb +1 -10
  108. data/lib/puppet/provider/package/appdmg.rb +1 -1
  109. data/lib/puppet/provider/package/apple.rb +0 -0
  110. data/lib/puppet/provider/package/apt.rb +14 -21
  111. data/lib/puppet/provider/package/aptitude.rb +0 -0
  112. data/lib/puppet/provider/package/blastwave.rb +2 -0
  113. data/lib/puppet/provider/package/darwinport.rb +0 -0
  114. data/lib/puppet/provider/package/dpkg.rb +33 -51
  115. data/lib/puppet/provider/package/fink.rb +1 -1
  116. data/lib/puppet/provider/package/freebsd.rb +0 -0
  117. data/lib/puppet/provider/package/gem.rb +0 -0
  118. data/lib/puppet/provider/package/hpux.rb +46 -0
  119. data/lib/puppet/provider/package/openbsd.rb +0 -0
  120. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  121. data/lib/puppet/provider/package/portage.rb +3 -1
  122. data/lib/puppet/provider/package/ports.rb +3 -3
  123. data/lib/puppet/provider/package/rpm.rb +8 -1
  124. data/lib/puppet/provider/package/rug.rb +2 -2
  125. data/lib/puppet/provider/package/sun.rb +2 -0
  126. data/lib/puppet/provider/package/sunfreeware.rb +3 -0
  127. data/lib/puppet/provider/package/yum.rb +24 -17
  128. data/lib/puppet/provider/package/yumhelper.py +92 -11
  129. data/lib/puppet/provider/parsedfile.rb +0 -0
  130. data/lib/puppet/provider/port/parsed.rb +0 -0
  131. data/lib/puppet/provider/selboolean/getsetsebool.rb +47 -0
  132. data/lib/puppet/provider/selmodule/semodule.rb +143 -0
  133. data/lib/puppet/provider/service/base.rb +0 -0
  134. data/lib/puppet/provider/service/daemontools.rb +154 -0
  135. data/lib/puppet/provider/service/debian.rb +1 -1
  136. data/lib/puppet/provider/service/freebsd.rb +2 -0
  137. data/lib/puppet/provider/service/gentoo.rb +2 -0
  138. data/lib/puppet/provider/service/init.rb +0 -0
  139. data/lib/puppet/provider/service/redhat.rb +1 -1
  140. data/lib/puppet/provider/service/runit.rb +93 -0
  141. data/lib/puppet/provider/service/smf.rb +2 -0
  142. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +7 -1
  143. data/lib/puppet/provider/sshkey/parsed.rb +0 -0
  144. data/lib/puppet/provider/user/hpux.rb +30 -0
  145. data/lib/puppet/provider/user/user_role_add.rb +156 -0
  146. data/lib/puppet/provider/user/useradd.rb +23 -14
  147. data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +17 -0
  148. data/lib/puppet/rails/database/schema.rb +0 -8
  149. data/lib/puppet/rails/resource.rb +6 -6
  150. data/lib/puppet/reference/configuration.rb +0 -7
  151. data/lib/puppet/reports.rb +0 -0
  152. data/lib/puppet/reports/rrdgraph.rb +3 -2
  153. data/lib/puppet/sslcertificates.rb +0 -0
  154. data/lib/puppet/sslcertificates/inventory.rb +3 -2
  155. data/lib/puppet/sslcertificates/support.rb +3 -0
  156. data/lib/puppet/transaction/report.rb +1 -7
  157. data/lib/puppet/transportable.rb +10 -7
  158. data/lib/puppet/type.rb +2110 -14
  159. data/lib/puppet/type/cron.rb +0 -0
  160. data/lib/puppet/type/exec.rb +0 -0
  161. data/lib/puppet/type/file.rb +12 -2
  162. data/lib/puppet/type/file/checksum.rb +4 -0
  163. data/lib/puppet/type/file/content.rb +0 -0
  164. data/lib/puppet/type/file/ensure.rb +0 -0
  165. data/lib/puppet/type/file/group.rb +30 -43
  166. data/lib/puppet/type/file/mode.rb +0 -0
  167. data/lib/puppet/type/file/owner.rb +0 -0
  168. data/lib/puppet/type/file/selcontext.rb +104 -0
  169. data/lib/puppet/type/file/source.rb +0 -0
  170. data/lib/puppet/type/file/type.rb +0 -0
  171. data/lib/puppet/type/filebucket.rb +0 -0
  172. data/lib/puppet/type/group.rb +0 -8
  173. data/lib/puppet/type/host.rb +0 -0
  174. data/lib/puppet/type/mailalias.rb +0 -0
  175. data/lib/puppet/type/maillist.rb +0 -0
  176. data/lib/puppet/type/mount.rb +0 -0
  177. data/lib/puppet/type/package.rb +2 -2
  178. data/lib/puppet/type/port.rb +0 -0
  179. data/lib/puppet/type/schedule.rb +0 -0
  180. data/lib/puppet/type/selboolean.rb +31 -0
  181. data/lib/puppet/type/selmodule.rb +54 -0
  182. data/lib/puppet/type/ssh_authorized_key.rb +3 -3
  183. data/lib/puppet/type/sshkey.rb +0 -0
  184. data/lib/puppet/type/tidy.rb +0 -0
  185. data/lib/puppet/type/user.rb +153 -137
  186. data/lib/puppet/type/yumrepo.rb +18 -2
  187. data/lib/puppet/type/zone.rb +5 -1
  188. data/lib/puppet/util.rb +7 -7
  189. data/lib/puppet/util/filetype.rb +7 -0
  190. data/lib/puppet/util/instance_loader.rb +0 -0
  191. data/lib/puppet/util/ldap/connection.rb +11 -1
  192. data/lib/puppet/util/ldap/manager.rb +1 -1
  193. data/lib/puppet/util/loadedfile.rb +0 -0
  194. data/lib/puppet/util/log.rb +42 -43
  195. data/lib/puppet/util/metric.rb +23 -9
  196. data/lib/puppet/util/posix.rb +69 -18
  197. data/lib/puppet/util/selinux.rb +139 -0
  198. data/lib/puppet/util/settings.rb +5 -7
  199. data/lib/puppet/util/user_attr.rb +21 -0
  200. data/test/certmgr/ca.rb +0 -0
  201. data/test/certmgr/certmgr.rb +0 -0
  202. data/test/certmgr/inventory.rb +0 -0
  203. data/test/certmgr/support.rb +0 -0
  204. data/test/data/providers/ssh_authorized_key/parsed/authorized_keys1 +3 -0
  205. data/test/data/snippets/append.pp +11 -0
  206. data/test/data/snippets/arithmetic_expression.pp +8 -0
  207. data/test/data/snippets/arraytrailingcomma.pp +3 -0
  208. data/test/data/snippets/emptyifelse.pp +9 -0
  209. data/test/data/snippets/funccomma.pp +5 -0
  210. data/test/data/snippets/ifexpression.rb +6 -0
  211. data/test/data/snippets/subclass_name_duplication.pp +0 -0
  212. data/test/executables/filebucket.rb +0 -0
  213. data/test/executables/puppetbin.rb +0 -0
  214. data/test/executables/puppetca.rb +0 -0
  215. data/test/executables/puppetd.rb +0 -0
  216. data/test/executables/puppetmasterd.rb +0 -0
  217. data/test/executables/puppetmodule.rb +0 -0
  218. data/test/language/ast.rb +0 -0
  219. data/test/language/ast/casestatement.rb +0 -0
  220. data/test/language/ast/resource.rb +0 -0
  221. data/test/language/ast/resource_reference.rb +0 -28
  222. data/test/language/ast/selector.rb +0 -0
  223. data/test/language/ast/variable.rb +0 -0
  224. data/test/language/functions.rb +91 -12
  225. data/test/language/parser.rb +21 -0
  226. data/test/language/resource.rb +0 -0
  227. data/test/language/scope.rb +28 -0
  228. data/test/language/snippets.rb +14 -0
  229. data/test/language/transportable.rb +0 -0
  230. data/test/lib/puppettest.rb +0 -0
  231. data/test/lib/puppettest/reporttesting.rb +0 -2
  232. data/test/lib/puppettest/runnable_test.rb +2 -0
  233. data/test/lib/puppettest/support/resources.rb +0 -0
  234. data/test/network/authconfig.rb +0 -0
  235. data/test/network/authorization.rb +0 -0
  236. data/test/network/authstore.rb +0 -0
  237. data/test/network/client/ca.rb +0 -0
  238. data/test/network/client/client.rb +0 -0
  239. data/test/network/client/dipper.rb +0 -0
  240. data/test/network/client/master.rb +2 -6
  241. data/test/network/client/resource.rb +0 -0
  242. data/test/network/client_request.rb +0 -0
  243. data/test/network/daemon.rb +0 -0
  244. data/test/network/handler/bucket.rb +0 -0
  245. data/test/network/handler/ca.rb +0 -0
  246. data/test/network/handler/fileserver.rb +8 -0
  247. data/test/network/handler/handler.rb +0 -0
  248. data/test/network/handler/master.rb +3 -1
  249. data/test/network/handler/report.rb +0 -0
  250. data/test/network/handler/resource.rb +0 -0
  251. data/test/network/handler/runner.rb +0 -0
  252. data/test/network/rights.rb +0 -0
  253. data/test/network/server/mongrel_test.rb +0 -0
  254. data/test/network/server/webrick.rb +0 -0
  255. data/test/network/xmlrpc/client.rb +0 -0
  256. data/test/network/xmlrpc/processor.rb +0 -0
  257. data/test/network/xmlrpc/server.rb +0 -0
  258. data/test/network/xmlrpc/webrick_servlet.rb +0 -0
  259. data/test/other/dsl.rb +0 -0
  260. data/test/other/events.rb +0 -0
  261. data/test/other/overrides.rb +0 -0
  262. data/test/other/provider.rb +0 -0
  263. data/test/other/puppet.rb +0 -0
  264. data/test/other/relationships.rb +0 -0
  265. data/test/other/report.rb +2 -4
  266. data/test/other/transactions.rb +1 -1
  267. data/test/puppet/conffiles.rb +0 -0
  268. data/test/puppet/defaults.rb +0 -0
  269. data/test/puppet/errortest.rb +0 -0
  270. data/test/puppet/tc_suidmanager.rb +0 -0
  271. data/test/rails/ast.rb +0 -0
  272. data/test/rails/configuration.rb +0 -0
  273. data/test/rails/host.rb +0 -0
  274. data/test/rails/rails.rb +0 -0
  275. data/test/rails/railsparameter.rb +0 -0
  276. data/test/rails/railsresource.rb +0 -0
  277. data/test/ral/manager/attributes.rb +0 -0
  278. data/test/ral/manager/instances.rb +0 -0
  279. data/test/ral/manager/manager.rb +0 -0
  280. data/test/ral/manager/provider.rb +0 -0
  281. data/test/ral/manager/type.rb +0 -0
  282. data/test/ral/providers/cron/crontab.rb +0 -0
  283. data/test/ral/providers/group.rb +14 -13
  284. data/test/ral/providers/host/netinfo.rb +0 -0
  285. data/test/ral/providers/host/parsed.rb +0 -0
  286. data/test/ral/providers/mailalias/aliases.rb +0 -0
  287. data/test/ral/providers/mount/netinfo.rb +0 -0
  288. data/test/ral/providers/nameservice.rb +0 -0
  289. data/test/ral/providers/package.rb +0 -31
  290. data/test/ral/providers/package/aptitude.rb +1 -2
  291. data/test/ral/providers/package/aptrpm.rb +2 -2
  292. data/test/ral/providers/parsedfile.rb +0 -0
  293. data/test/ral/providers/port/parsed.rb +0 -0
  294. data/test/ral/providers/provider.rb +0 -0
  295. data/test/ral/providers/service/base.rb +0 -0
  296. data/test/ral/providers/service/debian.rb +0 -0
  297. data/test/ral/providers/sshkey/parsed.rb +0 -0
  298. data/test/ral/providers/user.rb +8 -8
  299. data/test/ral/providers/user/useradd.rb +0 -0
  300. data/test/ral/type/basic.rb +0 -0
  301. data/test/ral/type/cron.rb +0 -0
  302. data/test/ral/type/exec.rb +0 -0
  303. data/test/ral/type/file.rb +0 -0
  304. data/test/ral/type/file/target.rb +0 -0
  305. data/test/ral/type/filebucket.rb +0 -0
  306. data/test/ral/type/fileignoresource.rb +0 -0
  307. data/test/ral/type/filesources.rb +1 -3
  308. data/test/ral/type/group.rb +0 -0
  309. data/test/ral/type/host.rb +0 -0
  310. data/test/ral/type/mailalias.rb +1 -2
  311. data/test/ral/type/parameter.rb +0 -0
  312. data/test/ral/type/port.rb +0 -0
  313. data/test/ral/type/property.rb +0 -0
  314. data/test/ral/type/resources.rb +0 -0
  315. data/test/ral/type/service.rb +0 -0
  316. data/test/ral/type/sshkey.rb +0 -0
  317. data/test/ral/type/tidy.rb +0 -0
  318. data/test/ral/type/user.rb +0 -50
  319. data/test/ral/type/yumrepo.rb +7 -1
  320. data/test/ral/type/zone.rb +0 -0
  321. data/test/test +0 -0
  322. data/test/util/autoload.rb +0 -0
  323. data/test/util/classgen.rb +0 -0
  324. data/test/util/execution.rb +0 -0
  325. data/test/util/features.rb +0 -0
  326. data/test/util/fileparsing.rb +0 -0
  327. data/test/util/filetype.rb +0 -0
  328. data/test/util/inifile.rb +0 -0
  329. data/test/util/instance_loader.rb +0 -0
  330. data/test/util/log.rb +0 -59
  331. data/test/util/metrics.rb +0 -0
  332. data/test/util/package.rb +0 -0
  333. data/test/util/pidlock.rb +0 -0
  334. data/test/util/settings.rb +0 -0
  335. data/test/util/storage.rb +0 -0
  336. data/test/util/subclass_loader.rb +0 -0
  337. data/test/util/utiltest.rb +0 -0
  338. metadata +54 -19
  339. data/lib/puppet/metatype/attributes.rb +0 -685
  340. data/lib/puppet/metatype/closure.rb +0 -49
  341. data/lib/puppet/metatype/container.rb +0 -50
  342. data/lib/puppet/metatype/evaluation.rb +0 -163
  343. data/lib/puppet/metatype/instances.rb +0 -305
  344. data/lib/puppet/metatype/metaparams.rb +0 -423
  345. data/lib/puppet/metatype/providers.rb +0 -247
  346. data/lib/puppet/metatype/relationships.rb +0 -115
  347. data/lib/puppet/metatype/schedules.rb +0 -33
  348. data/lib/puppet/metatype/tags.rb +0 -38
  349. data/lib/puppet/util/plist.rb +0 -23
  350. data/lib/puppet/util/plist/generator.rb +0 -225
  351. data/lib/puppet/util/plist/parser.rb +0 -226
  352. data/test/ral/providers/package/apt.rb +0 -169
  353. data/test/ral/providers/package/dpkg.rb +0 -64
  354. data/test/util/posixtest.rb +0 -169
File without changes
File without changes
@@ -1,5 +1,7 @@
1
1
  require 'etc'
2
2
  require 'facter'
3
+ require 'puppet/property/list'
4
+ require 'puppet/property/keyvalue'
3
5
 
4
6
  module Puppet
5
7
  newtype(:user) do
@@ -21,6 +23,9 @@ module Puppet
21
23
  "The provider can modify user passwords, by accepting a password
22
24
  hash."
23
25
 
26
+ feature :manages_solaris_rbac,
27
+ "The provider can manage roles and normal users"
28
+
24
29
  newproperty(:ensure, :parent => Puppet::Property::Ensure) do
25
30
  newvalue(:present, :event => :user_created) do
26
31
  provider.create
@@ -30,6 +35,10 @@ module Puppet
30
35
  provider.delete
31
36
  end
32
37
 
38
+ newvalue(:role, :event => :role_created, :required_features => :manages_solaris_rbac) do
39
+ provider.create_role
40
+ end
41
+
33
42
  desc "The basic state that the object should be in."
34
43
 
35
44
  # If they're talking about the thing at all, they generally want to
@@ -44,30 +53,15 @@ module Puppet
44
53
 
45
54
  def retrieve
46
55
  if provider.exists?
47
- return :present
56
+ if provider.respond_to?(:is_role?) and provider.is_role?
57
+ return :role
58
+ else
59
+ return :present
60
+ end
48
61
  else
49
62
  return :absent
50
63
  end
51
64
  end
52
-
53
- # The default 'sync' method only selects among a list of registered
54
- # values.
55
- def sync
56
- # if self.insync?
57
- # self.info "already in sync"
58
- # return nil
59
- #else
60
- #self.info "%s vs %s" % [self.is.inspect, self.should.inspect]
61
- # end
62
- unless self.class.values
63
- self.devfail "No values defined for %s" %
64
- self.class.name
65
- end
66
-
67
- # Set ourselves to whatever our should value is.
68
- self.set(self.should)
69
- end
70
-
71
65
  end
72
66
 
73
67
  newproperty(:uid) do
@@ -95,50 +89,26 @@ module Puppet
95
89
  newproperty(:gid) do
96
90
  desc "The user's primary group. Can be specified numerically or
97
91
  by name."
98
-
99
- def found?
100
- defined? @found and @found
101
- end
102
92
 
103
- munge do |gid|
104
- method = :getgrgid
105
- case gid
106
- when String
107
- if gid =~ /^[-0-9]+$/
108
- gid = Integer(gid)
109
- else
110
- method = :getgrnam
111
- end
112
- when Symbol
113
- unless gid == :auto or gid == :absent
114
- self.devfail "Invalid GID %s" % gid
115
- end
116
- # these are treated specially by sync()
117
- return gid
118
- end
119
-
120
- if group = Puppet::Util.gid(gid)
121
- @found = true
122
- return group
93
+ munge do |value|
94
+ if value.is_a?(String) and value =~ /^[-0-9]+$/
95
+ Integer(value)
123
96
  else
124
- @found = false
125
- return gid
97
+ value
126
98
  end
127
99
  end
128
100
 
129
- # *shudder* Make sure that we've looked up the group and gotten
130
- # an ID for it. Yuck-o.
131
- def should
132
- unless defined? @should
133
- return super
134
- end
135
- unless found?
136
- @should = @should.each { |val|
137
- next unless val
138
- Puppet::Util.gid(val)
139
- }
101
+ def sync
102
+ found = false
103
+ @should.each do |value|
104
+ if number = Puppet::Util.gid(value)
105
+ provider.gid = number
106
+ found = true
107
+ break
108
+ end
140
109
  end
141
- super
110
+
111
+ fail "Could not find group(s) %s" % @should.join(",") unless found
142
112
  end
143
113
  end
144
114
 
@@ -158,63 +128,21 @@ module Puppet
158
128
 
159
129
  newproperty(:password, :required_features => :manages_passwords) do
160
130
  desc "The user's password, in whatever encrypted format the local machine requires. Be sure to enclose any value that includes a dollar sign ($) in single quotes (\')."
161
- end
162
-
163
- newproperty(:groups) do
164
- desc "The groups of which the user is a member. The primary
165
- group should not be listed. Multiple groups should be
166
- specified as an array."
167
-
168
- def should_to_s(newvalue)
169
- self.should
170
- end
171
-
172
- def is_to_s(currentvalue)
173
- currentvalue.join(",")
174
- end
175
131
 
176
- # We need to override this because the groups need to
177
- # be joined with commas
178
- def should
179
- current_value = retrieve
180
-
181
- unless defined? @should and @should
182
- return nil
183
- end
184
-
185
- if @resource[:membership] == :inclusive
186
- return @should.sort.join(",")
132
+ def change_to_s(currentvalue, newvalue)
133
+ if currentvalue == :absent
134
+ return "created password"
187
135
  else
188
- members = @should
189
- if current_value.is_a?(Array)
190
- members += current_value
191
- end
192
- return members.uniq.sort.join(",")
193
- end
194
- end
195
-
196
- def retrieve
197
- if tmp = provider.groups and tmp != :absent
198
- return tmp.split(",")
199
- else
200
- return :absent
136
+ return "changed password"
201
137
  end
202
138
  end
139
+ end
203
140
 
204
- def insync?(is)
205
- unless defined? @should and @should
206
- return true
207
- end
208
- unless defined? is and is
209
- return true
210
- end
211
- tmp = is
212
- if is.is_a? Array
213
- tmp = is.sort.join(",")
214
- end
215
141
 
216
- return tmp == self.should
217
- end
142
+ newproperty(:groups, :parent => Puppet::Property::List) do
143
+ desc "The groups of which the user is a member. The primary
144
+ group should not be listed. Multiple groups should be
145
+ specified as an array."
218
146
 
219
147
  validate do |value|
220
148
  if value =~ /^\d+$/
@@ -226,29 +154,6 @@ module Puppet
226
154
  end
227
155
  end
228
156
 
229
- # these three properties are all implemented differently on each platform,
230
- # so i'm disabling them for now
231
-
232
- # FIXME Puppet::Property::UserLocked is currently non-functional
233
- #newproperty(:locked) do
234
- # desc "The expected return code. An error will be returned if the
235
- # executed command returns something else."
236
- #end
237
-
238
- # FIXME Puppet::Property::UserExpire is currently non-functional
239
- #newproperty(:expire) do
240
- # desc "The expected return code. An error will be returned if the
241
- # executed command returns something else."
242
- # @objectaddflag = "-e"
243
- #end
244
-
245
- # FIXME Puppet::Property::UserInactive is currently non-functional
246
- #newproperty(:inactive) do
247
- # desc "The expected return code. An error will be returned if the
248
- # executed command returns something else."
249
- # @objectaddflag = "-f"
250
- #end
251
-
252
157
  newparam(:name) do
253
158
  desc "User name. While limitations are determined for
254
159
  each operating system, it is generally a good idea to keep to
@@ -260,7 +165,7 @@ module Puppet
260
165
  desc "Whether specified groups should be treated as the only groups
261
166
  of which the user is a member or whether they should merely
262
167
  be treated as the minimum membership list."
263
-
168
+
264
169
  newvalues(:inclusive, :minimum)
265
170
 
266
171
  defaultto :minimum
@@ -268,7 +173,7 @@ module Puppet
268
173
 
269
174
  newparam(:allowdupe, :boolean => true) do
270
175
  desc "Whether to allow duplicate UIDs."
271
-
176
+
272
177
  newvalues(:true, :false)
273
178
 
274
179
  defaultto false
@@ -309,7 +214,7 @@ module Puppet
309
214
  gobj.should(:gid) == group
310
215
  }
311
216
  autos << obj
312
-
217
+
313
218
  end
314
219
  else
315
220
  autos << group
@@ -330,7 +235,7 @@ module Puppet
330
235
  current_value = :absent
331
236
 
332
237
  if absent
333
- prophash[property] = :absent
238
+ prophash[property] = :absent
334
239
  else
335
240
  current_value = property.retrieve
336
241
  prophash[property] = current_value
@@ -338,11 +243,122 @@ module Puppet
338
243
 
339
244
  if property.name == :ensure and current_value == :absent
340
245
  absent = true
341
- # next
342
246
  end
343
247
  prophash
344
248
  }
345
249
  end
250
+
251
+ newproperty(:roles, :parent => Puppet::Property::List, :required_features => :manages_solaris_rbac) do
252
+ desc "The roles the user has. Multiple roles should be
253
+ specified as an array."
254
+
255
+ def membership
256
+ :role_membership
257
+ end
258
+
259
+ validate do |value|
260
+ if value =~ /^\d+$/
261
+ raise ArgumentError, "Role names must be provided, not numbers"
262
+ end
263
+ if value.include?(",")
264
+ raise ArgumentError, "Role names must be provided as an array, not a comma-separated list"
265
+ end
266
+ end
267
+ end
268
+
269
+ newparam(:role_membership) do
270
+ desc "Whether specified roles should be treated as the only roles
271
+ of which the user is a member or whether they should merely
272
+ be treated as the minimum membership list."
273
+
274
+ newvalues(:inclusive, :minimum)
275
+
276
+ defaultto :minimum
277
+ end
278
+
279
+ newproperty(:auths, :parent => Puppet::Property::List, :required_features => :manages_solaris_rbac) do
280
+ desc "The auths the user has. Multiple auths should be
281
+ specified as an array."
282
+
283
+ def membership
284
+ :auth_membership
285
+ end
286
+
287
+ validate do |value|
288
+ if value =~ /^\d+$/
289
+ raise ArgumentError, "Auth names must be provided, not numbers"
290
+ end
291
+ if value.include?(",")
292
+ raise ArgumentError, "Auth names must be provided as an array, not a comma-separated list"
293
+ end
294
+ end
295
+ end
296
+
297
+ newparam(:auth_membership) do
298
+ desc "Whether specified auths should be treated as the only auths
299
+ of which the user is a member or whether they should merely
300
+ be treated as the minimum membership list."
301
+
302
+ newvalues(:inclusive, :minimum)
303
+
304
+ defaultto :minimum
305
+ end
306
+
307
+ newproperty(:profiles, :parent => Puppet::Property::List, :required_features => :manages_solaris_rbac) do
308
+ desc "The profiles the user has. Multiple profiles should be
309
+ specified as an array."
310
+
311
+ def membership
312
+ :profile_membership
313
+ end
314
+
315
+ validate do |value|
316
+ if value =~ /^\d+$/
317
+ raise ArgumentError, "Profile names must be provided, not numbers"
318
+ end
319
+ if value.include?(",")
320
+ raise ArgumentError, "Profile names must be provided as an array, not a comma-separated list"
321
+ end
322
+ end
323
+ end
324
+
325
+ newparam(:profile_membership) do
326
+ desc "Whether specified roles should be treated as the only roles
327
+ of which the user is a member or whether they should merely
328
+ be treated as the minimum membership list."
329
+
330
+ newvalues(:inclusive, :minimum)
331
+
332
+ defaultto :minimum
333
+ end
334
+
335
+ newproperty(:keys, :parent => Puppet::Property::KeyValue, :required_features => :manages_solaris_rbac) do
336
+ desc "Specify user attributes in an array of keyvalue pairs"
337
+
338
+ def membership
339
+ :key_membership
340
+ end
341
+
342
+ validate do |value|
343
+ unless value.include?("=")
344
+ raise ArgumentError, "key value pairs must be seperated by an ="
345
+ end
346
+ end
347
+ end
348
+
349
+ newparam(:key_membership) do
350
+ desc "Whether specified key value pairs should be treated as the only attributes
351
+ of the user or whether they should merely
352
+ be treated as the minimum list."
353
+
354
+ newvalues(:inclusive, :minimum)
355
+
356
+ defaultto :minimum
357
+ end
358
+
359
+ newproperty(:project, :required_features => :manages_solaris_rbac) do
360
+ desc "The name of the project associated with a user"
361
+ end
346
362
  end
347
363
  end
348
364
 
@@ -346,7 +346,23 @@ module Puppet
346
346
  newvalue(%r{[1-9][0-9]?}) { }
347
347
  end
348
348
 
349
-
350
-
349
+ newproperty(:proxy, :parent => Puppet::IniProperty) do
350
+ desc "URL to the proxy server for this repository.\n#{ABSENT_DOC}"
351
+ newvalue(:absent) { self.should = :absent }
352
+ # Should really check that it's a valid URL
353
+ newvalue(/.*/) { }
354
+ end
355
+
356
+ newproperty(:proxy_username, :parent => Puppet::IniProperty) do
357
+ desc "Username for this proxy.\n#{ABSENT_DOC}"
358
+ newvalue(:absent) { self.should = :absent }
359
+ newvalue(/.*/) { }
360
+ end
361
+
362
+ newproperty(:proxy_password, :parent => Puppet::IniProperty) do
363
+ desc "Password for this proxy.\n#{ABSENT_DOC}"
364
+ newvalue(:absent) { self.should = :absent }
365
+ newvalue(/.*/) { }
366
+ end
351
367
  end
352
368
  end
@@ -377,7 +377,11 @@ end
377
377
  result = setstatus(hash)
378
378
  result
379
379
  else
380
- return currentpropvalues(:absent)
380
+ # Return all properties as absent.
381
+ return properties().inject({}) do | prophash, property|
382
+ prophash[property] = :absent
383
+ prophash
384
+ end
381
385
  end
382
386
  end
383
387
 
@@ -220,19 +220,18 @@ module Util
220
220
 
221
221
  def binary(bin)
222
222
  if bin =~ /^\//
223
- if FileTest.exists? bin
223
+ if FileTest.file? bin and FileTest.executable? bin
224
224
  return bin
225
225
  else
226
226
  return nil
227
227
  end
228
228
  else
229
- # LAK:NOTE See http://snurl.com/21zf8 [groups_google_com]
230
- x = ENV['PATH'].split(":").each do |dir|
231
- if FileTest.exists? File.join(dir, bin)
232
- return File.join(dir, bin)
233
- end
229
+ x = %x{which #{bin} 2>/dev/null}.chomp
230
+ if x == ""
231
+ return nil
232
+ else
233
+ return x
234
234
  end
235
- return nil
236
235
  end
237
236
  end
238
237
  module_function :binary
@@ -321,6 +320,7 @@ module Util
321
320
  $stdin.reopen("/dev/null")
322
321
  $stdout.reopen(output_file)
323
322
  $stderr.reopen(output_file)
323
+ 3.upto(256){|fd| IO::new(fd).close rescue nil}
324
324
  if arguments[:gid]
325
325
  Process.egid = arguments[:gid]
326
326
  Process.gid = arguments[:gid] unless @@os == "Darwin"