puppet 6.6.0 → 6.7.0

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 (254) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +8 -8
  3. data/ext/solaris/smf/puppet.xml +2 -0
  4. data/ext/yaml_nodes.rb +7 -7
  5. data/lib/hiera_puppet.rb +2 -1
  6. data/lib/puppet/application/apply.rb +2 -3
  7. data/lib/puppet/application/doc.rb +2 -1
  8. data/lib/puppet/application/face_base.rb +22 -15
  9. data/lib/puppet/application/script.rb +4 -6
  10. data/lib/puppet/configurer.rb +10 -5
  11. data/lib/puppet/confine_collection.rb +2 -1
  12. data/lib/puppet/daemon.rb +3 -2
  13. data/lib/puppet/defaults.rb +8 -0
  14. data/lib/puppet/environments.rb +9 -7
  15. data/lib/puppet/etc.rb +1 -1
  16. data/lib/puppet/external/pson/pure/parser.rb +2 -1
  17. data/lib/puppet/face/epp.rb +4 -2
  18. data/lib/puppet/face/help.rb +3 -2
  19. data/lib/puppet/face/module/changes.rb +2 -1
  20. data/lib/puppet/file_bucket/dipper.rb +2 -1
  21. data/lib/puppet/file_serving/configuration.rb +2 -1
  22. data/lib/puppet/file_serving/fileset.rb +1 -1
  23. data/lib/puppet/file_serving/http_metadata.rb +4 -2
  24. data/lib/puppet/file_serving/metadata.rb +2 -1
  25. data/lib/puppet/file_serving/mount/file.rb +2 -1
  26. data/lib/puppet/file_serving/mount/locales.rb +2 -1
  27. data/lib/puppet/file_serving/mount/modules.rb +4 -2
  28. data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -1
  29. data/lib/puppet/file_serving/mount/plugins.rb +2 -1
  30. data/lib/puppet/file_serving/mount/tasks.rb +4 -2
  31. data/lib/puppet/file_system/uniquefile.rb +4 -2
  32. data/lib/puppet/functions/match.rb +2 -3
  33. data/lib/puppet/generate/type.rb +2 -1
  34. data/lib/puppet/graph/relationship_graph.rb +2 -1
  35. data/lib/puppet/graph/simple_graph.rb +3 -2
  36. data/lib/puppet/indirector/catalog/compiler.rb +16 -8
  37. data/lib/puppet/indirector/certificate/rest.rb +2 -1
  38. data/lib/puppet/indirector/face.rb +2 -2
  39. data/lib/puppet/indirector/file_server.rb +4 -2
  40. data/lib/puppet/indirector/indirection.rb +12 -6
  41. data/lib/puppet/indirector/node/exec.rb +2 -1
  42. data/lib/puppet/indirector/report/processor.rb +2 -1
  43. data/lib/puppet/indirector/request.rb +9 -5
  44. data/lib/puppet/indirector/ssl_file.rb +10 -8
  45. data/lib/puppet/indirector/terminus.rb +6 -3
  46. data/lib/puppet/info_service.rb +9 -0
  47. data/lib/puppet/info_service/plan_information_service.rb +36 -0
  48. data/lib/puppet/interface.rb +2 -1
  49. data/lib/puppet/interface/action.rb +10 -5
  50. data/lib/puppet/interface/action_manager.rb +2 -1
  51. data/lib/puppet/interface/documentation.rb +10 -7
  52. data/lib/puppet/interface/face_collection.rb +6 -3
  53. data/lib/puppet/interface/option.rb +4 -2
  54. data/lib/puppet/interface/option_manager.rb +4 -2
  55. data/lib/puppet/module.rb +35 -1
  56. data/lib/puppet/module/plan.rb +160 -0
  57. data/lib/puppet/module_tool.rb +2 -1
  58. data/lib/puppet/module_tool/applications/application.rb +2 -1
  59. data/lib/puppet/module_tool/applications/installer.rb +4 -2
  60. data/lib/puppet/module_tool/applications/upgrader.rb +4 -2
  61. data/lib/puppet/module_tool/contents_description.rb +2 -1
  62. data/lib/puppet/module_tool/metadata.rb +2 -3
  63. data/lib/puppet/module_tool/shared_behaviors.rb +2 -1
  64. data/lib/puppet/network/authconfig.rb +4 -2
  65. data/lib/puppet/network/authstore.rb +2 -1
  66. data/lib/puppet/network/formats.rb +2 -1
  67. data/lib/puppet/network/http/api/indirected_routes.rb +6 -4
  68. data/lib/puppet/network/http/handler.rb +2 -1
  69. data/lib/puppet/network/http/request.rb +2 -1
  70. data/lib/puppet/network/http/route.rb +2 -1
  71. data/lib/puppet/network/resolver.rb +3 -2
  72. data/lib/puppet/network/rights.rb +2 -1
  73. data/lib/puppet/node.rb +8 -4
  74. data/lib/puppet/pal/catalog_compiler.rb +8 -1
  75. data/lib/puppet/pal/compiler.rb +2 -1
  76. data/lib/puppet/pal/pal_impl.rb +8 -0
  77. data/lib/puppet/pal/script_compiler.rb +4 -2
  78. data/lib/puppet/parameter.rb +4 -2
  79. data/lib/puppet/parameter/value_collection.rb +8 -8
  80. data/lib/puppet/parser/ast/pops_bridge.rb +2 -1
  81. data/lib/puppet/parser/compiler.rb +10 -5
  82. data/lib/puppet/parser/files.rb +2 -1
  83. data/lib/puppet/parser/functions.rb +2 -1
  84. data/lib/puppet/parser/relationship.rb +2 -1
  85. data/lib/puppet/parser/resource.rb +6 -3
  86. data/lib/puppet/parser/scope.rb +6 -4
  87. data/lib/puppet/parser/templatewrapper.rb +2 -1
  88. data/lib/puppet/parser/type_loader.rb +2 -1
  89. data/lib/puppet/pops/adaptable.rb +2 -5
  90. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +2 -1
  91. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +2 -1
  92. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -1
  93. data/lib/puppet/pops/evaluator/runtime3_support.rb +8 -4
  94. data/lib/puppet/pops/loader/base_loader.rb +4 -2
  95. data/lib/puppet/pops/loader/dependency_loader.rb +4 -2
  96. data/lib/puppet/pops/loader/gem_support.rb +4 -2
  97. data/lib/puppet/pops/loader/loader.rb +4 -2
  98. data/lib/puppet/pops/loader/loader_paths.rb +2 -1
  99. data/lib/puppet/pops/loader/static_loader.rb +1 -1
  100. data/lib/puppet/pops/lookup/interpolation.rb +2 -1
  101. data/lib/puppet/pops/model/factory.rb +4 -2
  102. data/lib/puppet/pops/parser/epp_support.rb +2 -1
  103. data/lib/puppet/pops/parser/heredoc_support.rb +2 -1
  104. data/lib/puppet/pops/parser/interpolation_support.rb +10 -5
  105. data/lib/puppet/pops/parser/lexer2.rb +6 -3
  106. data/lib/puppet/pops/parser/locator.rb +2 -1
  107. data/lib/puppet/pops/types/type_calculator.rb +1 -1
  108. data/lib/puppet/pops/types/type_parser.rb +4 -2
  109. data/lib/puppet/pops/validation.rb +2 -1
  110. data/lib/puppet/pops/validation/checker4_0.rb +6 -3
  111. data/lib/puppet/pops/visitor.rb +12 -6
  112. data/lib/puppet/property.rb +19 -16
  113. data/lib/puppet/property/ensure.rb +2 -1
  114. data/lib/puppet/property/keyvalue.rb +2 -1
  115. data/lib/puppet/property/list.rb +2 -1
  116. data/lib/puppet/provider.rb +10 -8
  117. data/lib/puppet/provider/exec.rb +7 -4
  118. data/lib/puppet/provider/file/posix.rb +6 -3
  119. data/lib/puppet/provider/group/groupadd.rb +2 -1
  120. data/lib/puppet/provider/group/ldap.rb +7 -4
  121. data/lib/puppet/provider/group/pw.rb +4 -2
  122. data/lib/puppet/provider/ldap.rb +8 -4
  123. data/lib/puppet/provider/nameservice.rb +8 -5
  124. data/lib/puppet/provider/nameservice/directoryservice.rb +8 -4
  125. data/lib/puppet/provider/network_device.rb +4 -2
  126. data/lib/puppet/provider/package.rb +2 -1
  127. data/lib/puppet/provider/package/aix.rb +4 -2
  128. data/lib/puppet/provider/package/appdmg.rb +4 -2
  129. data/lib/puppet/provider/package/apple.rb +2 -1
  130. data/lib/puppet/provider/package/apt.rb +4 -2
  131. data/lib/puppet/provider/package/blastwave.rb +2 -1
  132. data/lib/puppet/provider/package/dpkg.rb +6 -3
  133. data/lib/puppet/provider/package/fink.rb +2 -1
  134. data/lib/puppet/provider/package/gem.rb +4 -2
  135. data/lib/puppet/provider/package/macports.rb +6 -3
  136. data/lib/puppet/provider/package/nim.rb +8 -4
  137. data/lib/puppet/provider/package/openbsd.rb +14 -8
  138. data/lib/puppet/provider/package/opkg.rb +2 -1
  139. data/lib/puppet/provider/package/pacman.rb +2 -1
  140. data/lib/puppet/provider/package/pip.rb +2 -1
  141. data/lib/puppet/provider/package/pkgdmg.rb +4 -2
  142. data/lib/puppet/provider/package/pkgng.rb +4 -2
  143. data/lib/puppet/provider/package/pkgutil.rb +2 -1
  144. data/lib/puppet/provider/package/portupgrade.rb +2 -1
  145. data/lib/puppet/provider/package/rpm.rb +8 -4
  146. data/lib/puppet/provider/package/windows/package.rb +2 -1
  147. data/lib/puppet/provider/parsedfile.rb +14 -7
  148. data/lib/puppet/provider/service/base.rb +7 -4
  149. data/lib/puppet/provider/service/launchd.rb +4 -2
  150. data/lib/puppet/provider/service/service.rb +2 -1
  151. data/lib/puppet/provider/service/upstart.rb +11 -8
  152. data/lib/puppet/provider/user/directoryservice.rb +2 -1
  153. data/lib/puppet/provider/user/hpux.rb +1 -1
  154. data/lib/puppet/provider/user/ldap.rb +8 -4
  155. data/lib/puppet/provider/user/openbsd.rb +2 -1
  156. data/lib/puppet/provider/user/pw.rb +2 -1
  157. data/lib/puppet/provider/user/user_role_add.rb +4 -2
  158. data/lib/puppet/provider/user/useradd.rb +7 -4
  159. data/lib/puppet/reference/providers.rb +2 -3
  160. data/lib/puppet/reference/type.rb +4 -2
  161. data/lib/puppet/relationship.rb +4 -9
  162. data/lib/puppet/resource.rb +16 -9
  163. data/lib/puppet/resource/capability_finder.rb +12 -8
  164. data/lib/puppet/resource/catalog.rb +36 -40
  165. data/lib/puppet/resource/type.rb +7 -3
  166. data/lib/puppet/resource/type_collection.rb +4 -2
  167. data/lib/puppet/settings.rb +36 -19
  168. data/lib/puppet/settings/base_setting.rb +2 -1
  169. data/lib/puppet/settings/config_file.rb +2 -1
  170. data/lib/puppet/settings/file_setting.rb +2 -1
  171. data/lib/puppet/settings/ini_file.rb +2 -1
  172. data/lib/puppet/ssl/base.rb +2 -1
  173. data/lib/puppet/ssl/host.rb +16 -8
  174. data/lib/puppet/ssl/key.rb +2 -2
  175. data/lib/puppet/ssl/state_machine.rb +22 -3
  176. data/lib/puppet/transaction/event.rb +2 -1
  177. data/lib/puppet/transaction/event_manager.rb +4 -2
  178. data/lib/puppet/transaction/report.rb +10 -10
  179. data/lib/puppet/transaction/resource_harness.rb +4 -2
  180. data/lib/puppet/type.rb +84 -48
  181. data/lib/puppet/type/component.rb +2 -1
  182. data/lib/puppet/type/exec.rb +11 -7
  183. data/lib/puppet/type/file.rb +15 -9
  184. data/lib/puppet/type/file/content.rb +7 -3
  185. data/lib/puppet/type/file/ctime.rb +2 -1
  186. data/lib/puppet/type/file/data_sync.rb +2 -1
  187. data/lib/puppet/type/file/ensure.rb +10 -7
  188. data/lib/puppet/type/file/mode.rb +2 -1
  189. data/lib/puppet/type/file/mtime.rb +2 -1
  190. data/lib/puppet/type/file/selcontext.rb +2 -1
  191. data/lib/puppet/type/file/source.rb +6 -7
  192. data/lib/puppet/type/file/target.rb +2 -1
  193. data/lib/puppet/type/file/type.rb +2 -1
  194. data/lib/puppet/type/package.rb +6 -3
  195. data/lib/puppet/type/resources.rb +2 -1
  196. data/lib/puppet/type/service.rb +2 -1
  197. data/lib/puppet/type/tidy.rb +14 -7
  198. data/lib/puppet/type/user.rb +19 -7
  199. data/lib/puppet/util.rb +6 -3
  200. data/lib/puppet/util/checksums.rb +1 -1
  201. data/lib/puppet/util/classgen.rb +12 -6
  202. data/lib/puppet/util/command_line.rb +8 -4
  203. data/lib/puppet/util/connection.rb +4 -2
  204. data/lib/puppet/util/diff.rb +4 -2
  205. data/lib/puppet/util/execution.rb +4 -2
  206. data/lib/puppet/util/feature.rb +7 -4
  207. data/lib/puppet/util/fileparsing.rb +57 -46
  208. data/lib/puppet/util/filetype.rb +2 -1
  209. data/lib/puppet/util/http_proxy.rb +2 -1
  210. data/lib/puppet/util/instance_loader.rb +2 -1
  211. data/lib/puppet/util/ldap/connection.rb +4 -2
  212. data/lib/puppet/util/ldap/manager.rb +6 -3
  213. data/lib/puppet/util/log.rb +6 -3
  214. data/lib/puppet/util/metric.rb +2 -1
  215. data/lib/puppet/util/posix.rb +4 -2
  216. data/lib/puppet/util/rdoc/code_objects.rb +2 -1
  217. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +4 -2
  218. data/lib/puppet/util/selinux.rb +2 -1
  219. data/lib/puppet/version.rb +2 -5
  220. data/locales/puppet.pot +713 -685
  221. data/man/man5/puppet.conf.5 +9 -2
  222. data/man/man8/puppet-agent.8 +1 -1
  223. data/man/man8/puppet-apply.8 +1 -1
  224. data/man/man8/puppet-catalog.8 +1 -1
  225. data/man/man8/puppet-config.8 +1 -1
  226. data/man/man8/puppet-describe.8 +1 -1
  227. data/man/man8/puppet-device.8 +1 -1
  228. data/man/man8/puppet-doc.8 +1 -1
  229. data/man/man8/puppet-epp.8 +1 -1
  230. data/man/man8/puppet-facts.8 +1 -1
  231. data/man/man8/puppet-filebucket.8 +1 -1
  232. data/man/man8/puppet-generate.8 +1 -1
  233. data/man/man8/puppet-help.8 +1 -1
  234. data/man/man8/puppet-key.8 +1 -1
  235. data/man/man8/puppet-lookup.8 +1 -1
  236. data/man/man8/puppet-man.8 +1 -1
  237. data/man/man8/puppet-module.8 +1 -1
  238. data/man/man8/puppet-node.8 +1 -1
  239. data/man/man8/puppet-parser.8 +1 -1
  240. data/man/man8/puppet-plugin.8 +1 -1
  241. data/man/man8/puppet-report.8 +1 -1
  242. data/man/man8/puppet-resource.8 +1 -1
  243. data/man/man8/puppet-script.8 +1 -1
  244. data/man/man8/puppet-ssl.8 +1 -1
  245. data/man/man8/puppet-status.8 +1 -1
  246. data/man/man8/puppet.8 +2 -2
  247. data/spec/lib/puppet_spec/modules.rb +16 -2
  248. data/spec/unit/indirector/request_spec.rb +5 -6
  249. data/spec/unit/info_service_spec.rb +48 -0
  250. data/spec/unit/module_spec.rb +73 -0
  251. data/spec/unit/plan_spec.rb +65 -0
  252. data/spec/unit/puppet_pal_catalog_spec.rb +12 -0
  253. data/spec/unit/ssl/state_machine_spec.rb +68 -5
  254. metadata +6 -2
@@ -89,7 +89,8 @@ class Puppet::Resource::Type
89
89
  produced_resource.resource_type.parameters.each do |name|
90
90
  next if name == :name
91
91
 
92
- if expr = blueprint[:mappings][name.to_s]
92
+ expr = blueprint[:mappings][name.to_s]
93
+ if expr
93
94
  produced_resource[name] = expr.safeevaluate(scope)
94
95
  else
95
96
  produced_resource[name] = scope[name.to_s]
@@ -147,7 +148,8 @@ class Puppet::Resource::Type
147
148
  set_name_and_namespace(name)
148
149
 
149
150
  [:code, :doc, :line, :file, :parent].each do |param|
150
- next unless value = options[param]
151
+ value = options[param]
152
+ next unless value
151
153
  send(param.to_s + '=', value)
152
154
  end
153
155
 
@@ -453,7 +455,9 @@ class Puppet::Resource::Type
453
455
  end
454
456
 
455
457
  def evaluate_parent_type(resource)
456
- return unless klass = parent_type(resource.scope) and parent_resource = resource.scope.compiler.catalog.resource(:class, klass.name) || resource.scope.compiler.catalog.resource(:node, klass.name)
458
+ klass = parent_type(resource.scope)
459
+ parent_resource = resource.scope.compiler.catalog.resource(:class, klass.name) || resource.scope.compiler.catalog.resource(:node, klass.name) if klass
460
+ return unless klass && parent_resource
457
461
  parent_resource.evaluate unless parent_resource.evaluated?
458
462
  parent_scope(resource.scope, klass)
459
463
  end
@@ -124,7 +124,8 @@ class Puppet::Resource::TypeCollection
124
124
  def node(name)
125
125
  name = munge_name(name)
126
126
 
127
- if node = @nodes[name]
127
+ node = @nodes[name]
128
+ if node
128
129
  return node
129
130
  end
130
131
 
@@ -250,7 +251,8 @@ class Puppet::Resource::TypeCollection
250
251
  end
251
252
 
252
253
  def dupe_check(instance, hash)
253
- return unless dupe = hash[instance.name]
254
+ dupe = hash[instance.name]
255
+ return unless dupe
254
256
  message = yield dupe
255
257
  instance.fail Puppet::ParseError, message
256
258
  end
@@ -298,7 +298,7 @@ class Puppet::Settings
298
298
 
299
299
  # remove run_mode options from the arguments so that later parses don't think
300
300
  # it is an unknown option.
301
- while option_index = args.index('--run_mode') do
301
+ while option_index = args.index('--run_mode') do #rubocop:disable Lint/AssignmentInCondition
302
302
  args.delete_at option_index
303
303
  args.delete_at option_index
304
304
  end
@@ -380,7 +380,8 @@ class Puppet::Settings
380
380
 
381
381
  # Return a value's description.
382
382
  def description(name)
383
- if obj = @config[name.to_sym]
383
+ obj = @config[name.to_sym]
384
+ if obj
384
385
  obj.desc
385
386
  else
386
387
  nil
@@ -436,7 +437,8 @@ class Puppet::Settings
436
437
  end
437
438
  end
438
439
 
439
- if s = @config[str]
440
+ s = @config[str]
441
+ if s
440
442
  @deprecated_settings_that_have_been_configured << s if s.completely_deprecated?
441
443
  end
442
444
 
@@ -651,7 +653,8 @@ class Puppet::Settings
651
653
  # and I'm too lazy to only set the metadata once.
652
654
  if @configuration_file
653
655
  searchpath(nil, preferred_run_mode).reverse_each do |source|
654
- if source.type == :section && section = @configuration_file.sections[source.name]
656
+ section = @configuration_file.sections[source.name] if source.type == :section
657
+ if section
655
658
  apply_metadata_from_section(section)
656
659
  end
657
660
  end
@@ -661,7 +664,8 @@ class Puppet::Settings
661
664
 
662
665
  def apply_metadata_from_section(section)
663
666
  section.settings.each do |setting|
664
- if setting.has_metadata? && type = @config[setting.name]
667
+ type = @config[setting.name] if setting.has_metadata?
668
+ if type
665
669
  type.set_meta(setting.meta)
666
670
  end
667
671
  end
@@ -695,8 +699,10 @@ class Puppet::Settings
695
699
  klass = nil
696
700
  hash[:section] = hash[:section].to_sym if hash[:section]
697
701
 
698
- if type = hash[:type]
699
- unless klass = SETTING_TYPES[type]
702
+ type = hash[:type]
703
+ if type
704
+ klass = SETTING_TYPES[type]
705
+ unless klass
700
706
  raise ArgumentError, _("Invalid setting type '%{type}'") % { type: type }
701
707
  end
702
708
  hash.delete(:type)
@@ -728,7 +734,8 @@ class Puppet::Settings
728
734
  # Reparse our config file, if necessary.
729
735
  def reparse_config_files
730
736
  if files
731
- if filename = any_files_changed?
737
+ filename = any_files_changed?
738
+ if filename
732
739
  Puppet.notice "Config file #{filename} changed; triggering re-parse of all config files."
733
740
  parse_config_files
734
741
  reuse
@@ -835,7 +842,8 @@ class Puppet::Settings
835
842
  when :values
836
843
  @value_sets[source.name]
837
844
  when :section
838
- if @configuration_file && section = @configuration_file.sections[source.name]
845
+ section = @configuration_file.sections[source.name] if @configuration_file
846
+ if section
839
847
  ValuesFromSection.new(source.name, section)
840
848
  end
841
849
  when :environment
@@ -850,7 +858,8 @@ class Puppet::Settings
850
858
  def set_by_config?(param, environment = nil, run_mode = preferred_run_mode)
851
859
  param = param.to_sym
852
860
  configsearchpath(environment, run_mode).any? do |source|
853
- if vals = searchpath_values(source)
861
+ vals = searchpath_values(source)
862
+ if vals
854
863
  vals.lookup(param)
855
864
  end
856
865
  end
@@ -910,8 +919,10 @@ class Puppet::Settings
910
919
  hash[:section] = section
911
920
  raise ArgumentError, _("Setting %{name} is already defined") % { name: name } if @config.include?(name)
912
921
  tryconfig = newsetting(hash)
913
- if short = tryconfig.short
914
- if other = @shortnames[short]
922
+ short = tryconfig.short
923
+ if short
924
+ other = @shortnames[short]
925
+ if other
915
926
  raise ArgumentError, _("Setting %{name} is already using short name '%{short}'") % { name: other.name, short: short }
916
927
  end
917
928
  @shortnames[short] = tryconfig
@@ -946,7 +957,8 @@ class Puppet::Settings
946
957
  file = @config[key]
947
958
  next if file.value.nil?
948
959
  next unless (sections.nil? or sections.include?(file.section))
949
- next unless resource = file.to_resource
960
+ resource = file.to_resource
961
+ next unless resource
950
962
  next if catalog.resource(resource.ref)
951
963
 
952
964
  Puppet.debug {"Using settings: adding file resource '#{key}': '#{resource.inspect}'"}
@@ -1147,7 +1159,8 @@ Generated on #{Time.now}.
1147
1159
  def record_deprecations_from_puppet_conf(puppet_conf)
1148
1160
  puppet_conf.sections.values.each do |section|
1149
1161
  section.settings.each do |conf_setting|
1150
- if setting = self.setting(conf_setting.name)
1162
+ setting = self.setting(conf_setting.name)
1163
+ if setting
1151
1164
  @deprecated_settings_that_have_been_configured << setting if setting.deprecated?
1152
1165
  end
1153
1166
  end
@@ -1209,12 +1222,14 @@ Generated on #{Time.now}.
1209
1222
  next unless setting.respond_to?(:owner)
1210
1223
  next unless sections.nil? or sections.include?(setting.section)
1211
1224
 
1212
- if user = setting.owner and user != "root" and catalog.resource(:user, user).nil?
1225
+ user = setting.owner
1226
+ if user && user != "root" && catalog.resource(:user, user).nil?
1213
1227
  resource = Puppet::Resource.new(:user, user, :parameters => {:ensure => :present})
1214
1228
  resource[:gid] = self[:group] if self[:group]
1215
1229
  catalog.add_resource resource
1216
1230
  end
1217
- if group = setting.group and ! %w{root wheel}.include?(group) and catalog.resource(:group, group).nil?
1231
+ group = setting.group
1232
+ if group && ! %w{root wheel}.include?(group) && catalog.resource(:group, group).nil?
1218
1233
  catalog.add_resource Puppet::Resource.new(:group, group, :parameters => {:ensure => :present})
1219
1234
  end
1220
1235
  end
@@ -1478,9 +1493,11 @@ Generated on #{Time.now}.
1478
1493
  end
1479
1494
 
1480
1495
  def conf
1481
- @conf ||= if environments = Puppet.lookup(:environments) { nil }
1482
- environments.get_conf(@environment_name)
1483
- end
1496
+ unless @conf
1497
+ environments = Puppet.lookup(:environments) { nil }
1498
+ @conf = environments.get_conf(@environment_name) if environments
1499
+ end
1500
+ @conf
1484
1501
  end
1485
1502
 
1486
1503
  def inspect
@@ -59,7 +59,8 @@ class Puppet::Settings::BaseSetting
59
59
 
60
60
  # Create the new element. Pretty much just sets the name.
61
61
  def initialize(args = {})
62
- unless @settings = args.delete(:settings)
62
+ @settings = args.delete(:settings)
63
+ unless @settings
63
64
  raise ArgumentError.new("You must refer to a settings object")
64
65
  end
65
66
 
@@ -109,7 +109,8 @@ private
109
109
 
110
110
  # Check to see if this is a file argument and it has extra options
111
111
  begin
112
- if value.is_a?(String) and options = extract_fileinfo(value)
112
+ options = extract_fileinfo(value) if value.is_a?(String)
113
+ if options
113
114
  section.with_setting(var, options[:value], Meta.new(options[:owner],
114
115
  options[:group],
115
116
  options[:mode]))
@@ -125,7 +125,8 @@ class Puppet::Settings::FileSetting < Puppet::Settings::StringSetting
125
125
 
126
126
  # Turn our setting thing into a Puppet::Resource instance.
127
127
  def to_resource
128
- return nil unless type = self.type
128
+ type = self.type
129
+ return nil unless type
129
130
 
130
131
  path = self.value
131
132
 
@@ -96,7 +96,8 @@ class Puppet::Settings::IniFile
96
96
  end
97
97
 
98
98
  def set_default_section_write_sectionline(value)
99
- if index = @lines.find_index { |line| line.is_a?(DefaultSection) }
99
+ index = @lines.find_index { |line| line.is_a?(DefaultSection) }
100
+ if index
100
101
  @lines[index].write_sectionline = true
101
102
  end
102
103
  end
@@ -135,7 +135,8 @@ class Puppet::SSL::Base
135
135
  /sha\d*/i
136
136
  )
137
137
  ln = content.signature_algorithm
138
- if match = digest_re.match(ln)
138
+ match = digest_re.match(ln)
139
+ if match
139
140
  match[0].downcase
140
141
  else
141
142
  raise Puppet::Error, _("Unknown signature algorithm '%{ln}'") % { ln: ln }
@@ -179,10 +179,14 @@ ERROR_STRING
179
179
  # @return [Puppet::SSL::CertificateRequest, nil]
180
180
  def certificate_request
181
181
  unless @certificate_request
182
- if csr = load_certificate_request_from_file
183
- @certificate_request = csr
184
- elsif csr = download_csr_from_ca
182
+ csr = load_certificate_request_from_file
183
+ if csr
185
184
  @certificate_request = csr
185
+ else
186
+ csr = download_csr_from_ca
187
+ if csr
188
+ @certificate_request = csr
189
+ end
186
190
  end
187
191
  end
188
192
  @certificate_request
@@ -389,13 +393,17 @@ ERROR_STRING
389
393
  # no certificate could be found.
390
394
  # @return [Puppet::SSL::Certificate, nil]
391
395
  def get_host_certificate
392
- if cert = check_for_certificate_on_disk(name)
393
- return cert
394
- elsif cert = download_certificate_from_ca(name)
395
- save_host_certificate(cert)
396
+ cert = check_for_certificate_on_disk(name)
397
+ if cert
396
398
  return cert
397
399
  else
398
- return nil
400
+ cert = download_certificate_from_ca(name)
401
+ if cert
402
+ save_host_certificate(cert)
403
+ return cert
404
+ else
405
+ return nil
406
+ end
399
407
  end
400
408
  end
401
409
 
@@ -50,8 +50,8 @@ DOC
50
50
  end
51
51
 
52
52
  def to_s
53
- if pass = password
54
- @content.export(OpenSSL::Cipher::DES.new(:EDE3, :CBC), pass)
53
+ if password
54
+ @content.export(OpenSSL::Cipher::DES.new(:EDE3, :CBC), password)
55
55
  else
56
56
  return super
57
57
  end
@@ -45,6 +45,18 @@ class Puppet::SSL::StateMachine
45
45
  next_ctx = @ssl_provider.create_root_context(cacerts: cacerts, revocation: false)
46
46
  else
47
47
  pem = Puppet::Rest::Routes.get_certificate(Puppet::SSL::CA_NAME, @ssl_context)
48
+ if @machine.ca_fingerprint
49
+ actual_digest = Puppet::SSL::Digest.new(@machine.digest, pem).to_hex
50
+ expected_digest = @machine.ca_fingerprint.scan(/../).join(':').upcase
51
+ if actual_digest == expected_digest
52
+ Puppet.info(_("Verified CA bundle with digest (%{digest_type}) %{actual_digest}") %
53
+ { digest_type: @machine.digest, actual_digest: actual_digest })
54
+ else
55
+ e = Puppet::Error.new(_("CA bundle with digest (%{digest_type}) %{actual_digest} did not match expected digest %{expected_digest}") % { digest_type: @machine.digest, actual_digest: actual_digest, expected_digest: expected_digest })
56
+ return Error.new(@machine, e.message, e)
57
+ end
58
+ end
59
+
48
60
  cacerts = @cert_provider.load_cacerts_from_pem(pem)
49
61
  # verify cacerts before saving
50
62
  next_ctx = @ssl_provider.create_root_context(cacerts: cacerts, revocation: false)
@@ -292,7 +304,7 @@ class Puppet::SSL::StateMachine
292
304
  #
293
305
  class Done < SSLState; end
294
306
 
295
- attr_reader :waitforcert, :wait_deadline, :cert_provider, :ssl_provider
307
+ attr_reader :waitforcert, :wait_deadline, :cert_provider, :ssl_provider, :ca_fingerprint, :digest
296
308
 
297
309
  # Construct a state machine to manage the SSL initialization process. By
298
310
  # default, if the state machine encounters an exception, it will log the
@@ -312,18 +324,25 @@ class Puppet::SSL::StateMachine
312
324
  # to load and save X509 objects.
313
325
  # @param ssl_provider [Puppet::SSL::SSLProvider] ssl provider to use
314
326
  # to construct ssl contexts.
327
+ # @param digest [String] digest algorithm to use for certificate fingerprinting
328
+ # @param ca_fingerprint [String] optional fingerprint to verify the
329
+ # downloaded CA bundle
315
330
  def initialize(waitforcert: Puppet[:waitforcert],
316
331
  maxwaitforcert: Puppet[:maxwaitforcert],
317
332
  onetime: Puppet[:onetime],
318
333
  cert_provider: Puppet::X509::CertProvider.new,
319
334
  ssl_provider: Puppet::SSL::SSLProvider.new,
320
- lockfile: Puppet::Util::Pidlock.new(Puppet[:ssl_lockfile]))
335
+ lockfile: Puppet::Util::Pidlock.new(Puppet[:ssl_lockfile]),
336
+ digest: 'SHA256',
337
+ ca_fingerprint: Puppet[:ca_fingerprint])
321
338
  @waitforcert = waitforcert
322
339
  @wait_deadline = Time.now.to_i + maxwaitforcert
323
340
  @onetime = onetime
324
341
  @cert_provider = cert_provider
325
342
  @ssl_provider = ssl_provider
326
343
  @lockfile = lockfile
344
+ @digest = digest
345
+ @ca_fingerprint = ca_fingerprint
327
346
  end
328
347
 
329
348
  # Run the state machine for CA certs and CRLs.
@@ -347,7 +366,7 @@ class Puppet::SSL::StateMachine
347
366
  chain = ssl_context.client_chain
348
367
  # print from root to client
349
368
  chain.reverse.each_with_index do |cert, i|
350
- digest = Puppet::SSL::Digest.new('SHA256', cert.to_der)
369
+ digest = Puppet::SSL::Digest.new(@digest, cert.to_der)
351
370
  if i == chain.length - 1
352
371
  Puppet.debug(_("Verified client certificate '%{subject}' fingerprint %{digest}") % {subject: cert.subject.to_utf8, digest: digest})
353
372
  else
@@ -109,7 +109,8 @@ class Puppet::Transaction::Event
109
109
  end
110
110
 
111
111
  def resource=(res)
112
- if res.respond_to?(:[]) and level = res[:loglevel]
112
+ level = res[:loglevel] if res.respond_to?(:[])
113
+ if level
113
114
  @default_log_level = level
114
115
  end
115
116
  @resource = res.to_s
@@ -68,7 +68,8 @@ class Puppet::Transaction::EventManager
68
68
  received = (event.name != :restarted)
69
69
  relationship_graph.matching_edges(event, resource).each do |edge|
70
70
  received ||= true unless edge.target.is_a?(Puppet::Type.type(:whit))
71
- next unless method = edge.callback
71
+ method = edge.callback
72
+ next unless method
72
73
  next unless edge.target.respond_to?(method)
73
74
 
74
75
  queue_events_for_resource(resource, edge.target, method, list)
@@ -114,7 +115,8 @@ class Puppet::Transaction::EventManager
114
115
  end
115
116
 
116
117
  def queued_events(resource)
117
- return unless callbacks = @event_queues[resource]
118
+ callbacks = @event_queues[resource]
119
+ return unless callbacks
118
120
  callbacks.each do |callback, events|
119
121
  yield callback, events unless events.empty?
120
122
  end
@@ -256,24 +256,24 @@ class Puppet::Transaction::Report
256
256
  @time = data['time']
257
257
  @corrective_change = data['corrective_change']
258
258
 
259
- if master_used = data['master_used']
260
- @master_used = master_used
259
+ if data['master_used']
260
+ @master_used = data['master_used']
261
261
  end
262
262
 
263
- if catalog_uuid = data['catalog_uuid']
264
- @catalog_uuid = catalog_uuid
263
+ if data['catalog_uuid']
264
+ @catalog_uuid = data['catalog_uuid']
265
265
  end
266
266
 
267
- if job_id = data['job_id']
268
- @job_id = job_id
267
+ if data['job_id']
268
+ @job_id = data['job_id']
269
269
  end
270
270
 
271
- if code_id = data['code_id']
272
- @code_id = code_id
271
+ if data['code_id']
272
+ @code_id = data['code_id']
273
273
  end
274
274
 
275
- if cached_catalog_status = data['cached_catalog_status']
276
- @cached_catalog_status = cached_catalog_status
275
+ if data['cached_catalog_status']
276
+ @cached_catalog_status = data['cached_catalog_status']
277
277
  end
278
278
 
279
279
  if @time.is_a? String
@@ -35,7 +35,8 @@ class Puppet::Transaction::ResourceHarness
35
35
 
36
36
  def scheduled?(resource)
37
37
  return true if Puppet[:ignoreschedules]
38
- return true unless schedule = schedule(resource)
38
+ schedule = schedule(resource)
39
+ return true unless schedule
39
40
 
40
41
  # We use 'checked' here instead of 'synced' because otherwise we'll
41
42
  # end up checking most resources most times, because they will generally
@@ -51,7 +52,8 @@ class Puppet::Transaction::ResourceHarness
51
52
  return nil
52
53
  end
53
54
 
54
- return nil unless name = resource[:schedule]
55
+ name = resource[:schedule]
56
+ return nil unless name
55
57
  resource.catalog.resource(:schedule, name) || resource.fail(_("Could not find schedule %{name}") % { name: name })
56
58
  end
57
59