chef 17.7.29-universal-mingw32 → 17.8.25-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 (262) hide show
  1. checksums.yaml +4 -4
  2. data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.Wrapper.dll +0 -0
  3. data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.dll +0 -0
  4. data/distro/ruby_bin_folder/AMD64/Ijwhost.dll +0 -0
  5. data/distro/ruby_bin_folder/AMD64/concrt140.dll +0 -0
  6. data/distro/ruby_bin_folder/AMD64/host/fxr/5.0.0/hostfxr.dll +0 -0
  7. data/distro/ruby_bin_folder/AMD64/msvcp140.dll +0 -0
  8. data/distro/ruby_bin_folder/AMD64/msvcp140_1.dll +0 -0
  9. data/distro/ruby_bin_folder/AMD64/msvcp140_2.dll +0 -0
  10. data/distro/ruby_bin_folder/AMD64/msvcp140_atomic_wait.dll +0 -0
  11. data/distro/ruby_bin_folder/AMD64/msvcp140_codecvt_ids.dll +0 -0
  12. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
  13. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
  14. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
  15. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Ijwhost.dll +0 -0
  16. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.CSharp.dll +0 -0
  17. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.NETCore.App.deps.json +180 -180
  18. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.VisualBasic.Core.dll +0 -0
  19. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.VisualBasic.dll +0 -0
  20. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.Win32.Primitives.dll +0 -0
  21. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.Win32.Registry.dll +0 -0
  22. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.AppContext.dll +0 -0
  23. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Buffers.dll +0 -0
  24. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Collections.Concurrent.dll +0 -0
  25. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Collections.Immutable.dll +0 -0
  26. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Collections.NonGeneric.dll +0 -0
  27. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Collections.Specialized.dll +0 -0
  28. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Collections.dll +0 -0
  29. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.Annotations.dll +0 -0
  30. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.DataAnnotations.dll +0 -0
  31. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.EventBasedAsync.dll +0 -0
  32. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.Primitives.dll +0 -0
  33. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.TypeConverter.dll +0 -0
  34. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.dll +0 -0
  35. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Configuration.dll +0 -0
  36. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Console.dll +0 -0
  37. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Core.dll +0 -0
  38. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Data.Common.dll +0 -0
  39. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Data.DataSetExtensions.dll +0 -0
  40. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Data.dll +0 -0
  41. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.Contracts.dll +0 -0
  42. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.Debug.dll +0 -0
  43. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.DiagnosticSource.dll +0 -0
  44. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.FileVersionInfo.dll +0 -0
  45. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.Process.dll +0 -0
  46. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.StackTrace.dll +0 -0
  47. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.TextWriterTraceListener.dll +0 -0
  48. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.Tools.dll +0 -0
  49. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.TraceSource.dll +0 -0
  50. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.Tracing.dll +0 -0
  51. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.Primitives.dll +0 -0
  52. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.dll +0 -0
  53. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Dynamic.Runtime.dll +0 -0
  54. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Formats.Asn1.dll +0 -0
  55. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Globalization.Calendars.dll +0 -0
  56. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Globalization.Extensions.dll +0 -0
  57. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Globalization.dll +0 -0
  58. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Compression.Brotli.dll +0 -0
  59. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Compression.FileSystem.dll +0 -0
  60. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Compression.ZipFile.dll +0 -0
  61. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Compression.dll +0 -0
  62. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.FileSystem.AccessControl.dll +0 -0
  63. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.FileSystem.DriveInfo.dll +0 -0
  64. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.FileSystem.Primitives.dll +0 -0
  65. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.FileSystem.Watcher.dll +0 -0
  66. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.FileSystem.dll +0 -0
  67. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.IsolatedStorage.dll +0 -0
  68. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.MemoryMappedFiles.dll +0 -0
  69. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Pipes.AccessControl.dll +0 -0
  70. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Pipes.dll +0 -0
  71. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.UnmanagedMemoryStream.dll +0 -0
  72. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.dll +0 -0
  73. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Linq.Expressions.dll +0 -0
  74. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Linq.Parallel.dll +0 -0
  75. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Linq.Queryable.dll +0 -0
  76. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Linq.dll +0 -0
  77. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Memory.dll +0 -0
  78. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Http.Json.dll +0 -0
  79. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Http.dll +0 -0
  80. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.HttpListener.dll +0 -0
  81. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Mail.dll +0 -0
  82. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.NameResolution.dll +0 -0
  83. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.NetworkInformation.dll +0 -0
  84. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Ping.dll +0 -0
  85. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Primitives.dll +0 -0
  86. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Requests.dll +0 -0
  87. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Security.dll +0 -0
  88. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.ServicePoint.dll +0 -0
  89. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Sockets.dll +0 -0
  90. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.WebClient.dll +0 -0
  91. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.WebHeaderCollection.dll +0 -0
  92. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.WebProxy.dll +0 -0
  93. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.WebSockets.Client.dll +0 -0
  94. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.WebSockets.dll +0 -0
  95. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.dll +0 -0
  96. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Numerics.Vectors.dll +0 -0
  97. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Numerics.dll +0 -0
  98. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ObjectModel.dll +0 -0
  99. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Private.CoreLib.dll +0 -0
  100. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Private.DataContractSerialization.dll +0 -0
  101. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Private.Uri.dll +0 -0
  102. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Private.Xml.Linq.dll +0 -0
  103. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Private.Xml.dll +0 -0
  104. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.DispatchProxy.dll +0 -0
  105. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Emit.ILGeneration.dll +0 -0
  106. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Emit.Lightweight.dll +0 -0
  107. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Emit.dll +0 -0
  108. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Extensions.dll +0 -0
  109. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Metadata.dll +0 -0
  110. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Primitives.dll +0 -0
  111. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.TypeExtensions.dll +0 -0
  112. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.dll +0 -0
  113. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Resources.Reader.dll +0 -0
  114. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Resources.ResourceManager.dll +0 -0
  115. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Resources.Writer.dll +0 -0
  116. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.CompilerServices.Unsafe.dll +0 -0
  117. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.CompilerServices.VisualC.dll +0 -0
  118. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Extensions.dll +0 -0
  119. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Handles.dll +0 -0
  120. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.InteropServices.RuntimeInformation.dll +0 -0
  121. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.InteropServices.dll +0 -0
  122. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Intrinsics.dll +0 -0
  123. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Loader.dll +0 -0
  124. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Numerics.dll +0 -0
  125. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Serialization.Formatters.dll +0 -0
  126. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Serialization.Json.dll +0 -0
  127. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Serialization.Primitives.dll +0 -0
  128. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Serialization.Xml.dll +0 -0
  129. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Serialization.dll +0 -0
  130. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.dll +0 -0
  131. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.AccessControl.dll +0 -0
  132. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Claims.dll +0 -0
  133. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Algorithms.dll +0 -0
  134. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Cng.dll +0 -0
  135. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Csp.dll +0 -0
  136. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Encoding.dll +0 -0
  137. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.OpenSsl.dll +0 -0
  138. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Primitives.dll +0 -0
  139. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.X509Certificates.dll +0 -0
  140. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Principal.Windows.dll +0 -0
  141. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Principal.dll +0 -0
  142. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.SecureString.dll +0 -0
  143. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.dll +0 -0
  144. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ServiceModel.Web.dll +0 -0
  145. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ServiceProcess.dll +0 -0
  146. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.Encoding.CodePages.dll +0 -0
  147. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.Encoding.Extensions.dll +0 -0
  148. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.Encoding.dll +0 -0
  149. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.Encodings.Web.dll +0 -0
  150. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.Json.dll +0 -0
  151. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.RegularExpressions.dll +0 -0
  152. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Channels.dll +0 -0
  153. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Overlapped.dll +0 -0
  154. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Tasks.Dataflow.dll +0 -0
  155. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Tasks.Extensions.dll +0 -0
  156. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Tasks.Parallel.dll +0 -0
  157. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Tasks.dll +0 -0
  158. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Thread.dll +0 -0
  159. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.ThreadPool.dll +0 -0
  160. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Timer.dll +0 -0
  161. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.dll +0 -0
  162. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Transactions.Local.dll +0 -0
  163. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Transactions.dll +0 -0
  164. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ValueTuple.dll +0 -0
  165. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Web.HttpUtility.dll +0 -0
  166. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Web.dll +0 -0
  167. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Windows.dll +0 -0
  168. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.Linq.dll +0 -0
  169. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.ReaderWriter.dll +0 -0
  170. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.Serialization.dll +0 -0
  171. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.XDocument.dll +0 -0
  172. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.XPath.XDocument.dll +0 -0
  173. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.XPath.dll +0 -0
  174. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.XmlDocument.dll +0 -0
  175. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.XmlSerializer.dll +0 -0
  176. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.dll +0 -0
  177. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.dll +0 -0
  178. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/WindowsBase.dll +0 -0
  179. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/clrcompression.dll +0 -0
  180. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/clretwrc.dll +0 -0
  181. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/clrjit.dll +0 -0
  182. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/coreclr.dll +0 -0
  183. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/createdump.exe +0 -0
  184. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/dbgshim.dll +0 -0
  185. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/hostfxr.dll +0 -0
  186. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/hostpolicy.dll +0 -0
  187. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/mscordaccore.dll +0 -0
  188. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/mscordaccore_amd64_amd64_5.0.521.16609.dll +0 -0
  189. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/mscordbi.dll +0 -0
  190. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/mscorlib.dll +0 -0
  191. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/mscorrc.dll +0 -0
  192. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/netstandard.dll +0 -0
  193. data/distro/ruby_bin_folder/AMD64/vccorlib140.dll +0 -0
  194. data/distro/ruby_bin_folder/AMD64/vcruntime140.dll +0 -0
  195. data/distro/ruby_bin_folder/AMD64/vcruntime140_1.dll +0 -0
  196. data/distro/ruby_bin_folder/x86/Chef.PowerShell.dll +0 -0
  197. data/distro/ruby_bin_folder/x86/Chef.Powershell.Wrapper.dll +0 -0
  198. data/distro/ruby_bin_folder/x86/concrt140.dll +0 -0
  199. data/distro/ruby_bin_folder/x86/msvcp140.dll +0 -0
  200. data/distro/ruby_bin_folder/x86/msvcp140_1.dll +0 -0
  201. data/distro/ruby_bin_folder/x86/msvcp140_2.dll +0 -0
  202. data/distro/ruby_bin_folder/x86/msvcp140_atomic_wait.dll +0 -0
  203. data/distro/ruby_bin_folder/x86/msvcp140_codecvt_ids.dll +0 -0
  204. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
  205. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
  206. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
  207. data/distro/ruby_bin_folder/x86/vccorlib140.dll +0 -0
  208. data/distro/ruby_bin_folder/x86/vcruntime140.dll +0 -0
  209. data/lib/chef/application/base.rb +1 -1
  210. data/lib/chef/compliance/default_attributes.rb +12 -2
  211. data/lib/chef/compliance/runner.rb +51 -5
  212. data/lib/chef/mixin/powershell_exec.rb +6 -5
  213. data/lib/chef/mixin/why_run.rb +8 -2
  214. data/lib/chef/powershell.rb +8 -6
  215. data/lib/chef/provider/mount/linux.rb +16 -2
  216. data/lib/chef/provider/mount/mount.rb +1 -1
  217. data/lib/chef/provider/package/dnf.rb +1 -1
  218. data/lib/chef/provider/package/powershell.rb +13 -10
  219. data/lib/chef/provider/package/zypper.rb +2 -0
  220. data/lib/chef/provider/package.rb +58 -23
  221. data/lib/chef/provider.rb +1 -1
  222. data/lib/chef/pwsh.rb +3 -2
  223. data/lib/chef/resource/chef_client_config.rb +22 -1
  224. data/lib/chef/resource/chef_client_launchd.rb +1 -1
  225. data/lib/chef/resource/dnf_package.rb +4 -6
  226. data/lib/chef/resource/dpkg_package.rb +5 -0
  227. data/lib/chef/resource/execute.rb +1 -4
  228. data/lib/chef/resource/launchd.rb +0 -3
  229. data/lib/chef/resource/macos_userdefaults.rb +5 -7
  230. data/lib/chef/resource/rhsm_register.rb +31 -0
  231. data/lib/chef/resource/support/client.erb +7 -0
  232. data/lib/chef/resource/windows_feature_powershell.rb +7 -7
  233. data/lib/chef/resource.rb +1 -1
  234. data/lib/chef/version.rb +1 -1
  235. data/spec/functional/resource/dnf_package_spec.rb +34 -20
  236. data/spec/functional/resource/dpkg_package_spec.rb +16 -0
  237. data/spec/functional/resource/macos_userdefaults_spec.rb +20 -0
  238. data/spec/functional/resource/zypper_package_spec.rb +7 -0
  239. data/spec/integration/client/client_spec.rb +31 -0
  240. data/spec/unit/application/base_spec.rb +40 -0
  241. data/spec/unit/compliance/runner_spec.rb +62 -1
  242. data/spec/unit/file_access_control_spec.rb +1 -1
  243. data/spec/unit/mixin/why_run_spec.rb +53 -0
  244. data/spec/unit/provider/group/groupadd_spec.rb +1 -0
  245. data/spec/unit/provider/group/usermod_spec.rb +2 -2
  246. data/spec/unit/provider/ifconfig_spec.rb +2 -0
  247. data/spec/unit/provider/mount/linux_spec.rb +16 -3
  248. data/spec/unit/provider/package/bff_spec.rb +1 -0
  249. data/spec/unit/provider/package/powershell_spec.rb +114 -114
  250. data/spec/unit/provider/package/rubygems_spec.rb +3 -0
  251. data/spec/unit/provider/package/solaris_spec.rb +1 -0
  252. data/spec/unit/provider/service/arch_service_spec.rb +2 -2
  253. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  254. data/spec/unit/provider/service/gentoo_service_spec.rb +1 -0
  255. data/spec/unit/provider/service/macosx_spec.rb +1 -0
  256. data/spec/unit/provider/service/redhat_spec.rb +4 -1
  257. data/spec/unit/provider/service/simple_service_spec.rb +6 -4
  258. data/spec/unit/provider/user_spec.rb +2 -0
  259. data/spec/unit/resource/dpkg_package_spec.rb +12 -0
  260. data/spec/unit/resource/rhsm_register_spec.rb +42 -0
  261. metadata +10 -8
  262. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/mscordaccore_amd64_amd64_5.0.20.51904.dll +0 -0
@@ -71,7 +71,7 @@ class Chef
71
71
 
72
72
  logger.debug("#{self.class}##{__method__}: enabling Compliance Phase")
73
73
 
74
- report
74
+ report_with_interval
75
75
  end
76
76
 
77
77
  def run_failed(_exception, _run_status)
@@ -82,7 +82,7 @@ class Chef
82
82
 
83
83
  logger.debug("#{self.class}##{__method__}: enabling Compliance Phase")
84
84
 
85
- report
85
+ report_with_interval
86
86
  end
87
87
 
88
88
  ### Below code adapted from audit cookbook's files/default/handler/audit_report.rb
@@ -92,7 +92,6 @@ class Chef
92
92
  fail_if_not_present
93
93
  inspec_gem_source
94
94
  inspec_version
95
- interval
96
95
  owner
97
96
  raise_if_unreachable
98
97
  }.freeze
@@ -106,6 +105,15 @@ class Chef
106
105
  end
107
106
  end
108
107
 
108
+ def report_with_interval
109
+ if interval_seconds_left <= 0
110
+ create_timestamp_file if interval_enabled
111
+ report
112
+ else
113
+ logger.info "Skipping Chef Infra Compliance Phase due to interval settings (next run in #{interval_seconds_left / 60.0} mins)"
114
+ end
115
+ end
116
+
109
117
  def report(report = nil)
110
118
  logger.info "Starting Chef Infra Compliance Phase"
111
119
  report ||= generate_report
@@ -118,7 +126,7 @@ class Chef
118
126
  return
119
127
  end
120
128
 
121
- Array(node["audit"]["reporter"]).each do |reporter_type|
129
+ requested_reporters.each do |reporter_type|
122
130
  logger.info "Reporting to #{reporter_type}"
123
131
  @reporters[reporter_type].send_report(report)
124
132
  end
@@ -325,7 +333,7 @@ class Chef
325
333
  @reporters = {}
326
334
  # Note that the docs don't say you can use an array, but our implementation
327
335
  # supports it.
328
- Array(node["audit"]["reporter"]).each do |type|
336
+ requested_reporters.each do |type|
329
337
  unless SUPPORTED_REPORTERS.include? type
330
338
  raise "CMPL003: '#{type}' found in node['audit']['reporter'] is not a supported reporter for Compliance Phase. Supported reporters are: #{SUPPORTED_REPORTERS.join(", ")}. For more information, see the documentation at https://docs.chef.io/chef_compliance_phase#reporters"
331
339
  end
@@ -358,6 +366,44 @@ class Chef
358
366
  def safe_input_collection
359
367
  run_context&.input_collection
360
368
  end
369
+
370
+ def requested_reporters
371
+ (Array(node["audit"]["reporter"]) + ["cli"]).uniq
372
+ end
373
+
374
+ def create_timestamp_file
375
+ FileUtils.touch report_timing_file
376
+ end
377
+
378
+ def report_timing_file
379
+ ::File.join(Chef::FileCache.create_cache_path("compliance"), "report_timing.json")
380
+ end
381
+
382
+ def interval_time
383
+ @interval_time ||= node.read("audit", "interval", "time")
384
+ end
385
+
386
+ def interval_enabled
387
+ @interval_enabled ||= node.read("audit", "interval", "enabled")
388
+ end
389
+
390
+ def interval_seconds
391
+ @interval_seconds ||=
392
+ if interval_enabled
393
+ logger.debug "Running Chef Infra Compliance Phase every #{interval_time} minutes"
394
+ interval_time * 60
395
+ else
396
+ logger.debug "Running Chef Infra Compliance Phase on every run"
397
+ 0
398
+ end
399
+ end
400
+
401
+ def interval_seconds_left
402
+ return 0 unless ::File.exist?(report_timing_file)
403
+
404
+ seconds_since_last_run = Time.now - ::File.mtime(report_timing_file)
405
+ interval_seconds - seconds_since_last_run
406
+ end
361
407
  end
362
408
  end
363
409
  end
@@ -104,13 +104,14 @@ class Chef
104
104
  #
105
105
  # @param script [String] script to run
106
106
  # @param interpreter [Symbol] the interpreter type, `:powershell` or `:pwsh`
107
+ # @param timeout [Integer, nil] timeout in seconds.
107
108
  # @return [Chef::PowerShell] output
108
- def powershell_exec(script, interpreter = :powershell)
109
+ def powershell_exec(script, interpreter = :powershell, timeout: -1)
109
110
  case interpreter
110
111
  when :powershell
111
- Chef::PowerShell.new(script)
112
+ Chef::PowerShell.new(script, timeout: timeout)
112
113
  when :pwsh
113
- Chef::Pwsh.new(script)
114
+ Chef::Pwsh.new(script, timeout: timeout)
114
115
  else
115
116
  raise ArgumentError, "Expected interpreter of :powershell or :pwsh"
116
117
  end
@@ -118,8 +119,8 @@ class Chef
118
119
 
119
120
  # The same as the #powershell_exec method except this will raise
120
121
  # Chef::PowerShell::CommandFailed if the command fails
121
- def powershell_exec!(script, interpreter = :powershell)
122
- cmd = powershell_exec(script, interpreter)
122
+ def powershell_exec!(script, interpreter = :powershell, **options)
123
+ cmd = powershell_exec(script, interpreter, **options)
123
124
  cmd.error!
124
125
  cmd
125
126
  end
@@ -242,8 +242,12 @@ class Chef
242
242
  end
243
243
  end
244
244
 
245
- def initialize(resource, run_context)
246
- @resource, @run_context = resource, run_context
245
+ attr_accessor :action
246
+
247
+ def initialize(resource, run_context, action)
248
+ @resource = resource
249
+ @run_context = run_context
250
+ @action = action
247
251
  @assertions = Hash.new { |h, k| h[k] = [] }
248
252
  @blocked_actions = []
249
253
  end
@@ -305,6 +309,8 @@ class Chef
305
309
  # "You don't have sufficient privileges to delete #{@new_resource.path}")
306
310
  # end
307
311
  def assert(*actions)
312
+ return unless actions.include?(action.to_sym) || actions.include?(:all_actions)
313
+
308
314
  assertion = Assertion.new
309
315
  yield assertion
310
316
  actions.each { |action| @assertions[action] << assertion }
@@ -33,15 +33,16 @@ class Chef
33
33
  # Requires: .NET Framework 4.0 or higher on the target machine.
34
34
  #
35
35
  # @param script [String] script to run
36
+ # @param timeout [Integer, nil] timeout in seconds.
36
37
  # @return [Object] output
37
- def initialize(script)
38
+ def initialize(script, timeout: -1)
38
39
  # This Powershell DLL source lives here: https://github.com/chef/chef-powershell-shim
39
40
  # Every merge into that repo triggers a Habitat build and promotion. Running
40
41
  # the rake :update_chef_exec_dll task in this (chef/chef) repo will pull down
41
42
  # the built packages and copy the binaries to distro/ruby_bin_folder. Bundle install
42
43
  # ensures that the correct architecture binaries are installed into the path.
43
44
  @dll ||= "Chef.PowerShell.Wrapper.dll"
44
- exec(script)
45
+ exec(script, timeout: timeout)
45
46
  end
46
47
 
47
48
  #
@@ -64,12 +65,13 @@ class Chef
64
65
  raise Chef::PowerShell::CommandFailed, "Unexpected exit in PowerShell command: #{@errors}" if error?
65
66
  end
66
67
 
67
- protected
68
+ private
68
69
 
69
- def exec(script)
70
+ def exec(script, timeout: -1)
70
71
  FFI.ffi_lib @dll
71
- FFI.attach_function :execute_powershell, :ExecuteScript, [:string], :pointer
72
- execution = FFI.execute_powershell(script).read_utf16string
72
+ FFI.attach_function :execute_powershell, :ExecuteScript, %i{string int}, :pointer
73
+ timeout = -1 if timeout == 0 || timeout.nil?
74
+ execution = FFI.execute_powershell(script, timeout).read_utf16string
73
75
  hashed_outcome = Chef::JSONCompat.parse(execution)
74
76
  @result = Chef::JSONCompat.parse(hashed_outcome["result"])
75
77
  @errors = hashed_outcome["errors"]
@@ -29,10 +29,16 @@ class Chef
29
29
  # "findmnt" outputs the mount points with volume.
30
30
  # Convert the mount_point of the resource to a real path in case it
31
31
  # contains symlinks in its parents dirs.
32
+ def loop_mount_points
33
+ # get loop_mount_points only if not initialized earlier
34
+ @loop_mount_points ||= shell_out!("losetup -a").stdout
35
+
36
+ rescue Errno::ENOENT
37
+ @loop_mount_points = ""
38
+ end
32
39
 
33
40
  def mounted?
34
41
  mounted = false
35
-
36
42
  real_mount_point = if ::File.exists? @new_resource.mount_point
37
43
  ::File.realpath(@new_resource.mount_point)
38
44
  else
@@ -45,6 +51,14 @@ class Chef
45
51
  when /\A#{Regexp.escape(real_mount_point)}\s+#{device_mount_regex}\s/
46
52
  mounted = true
47
53
  logger.trace("Special device #{device_logstring} mounted as #{real_mount_point}")
54
+ # Permalink for loop type devices mount points https://rubular.com/r/a0bS4p2RvXsGxx
55
+ when %r{\A#{Regexp.escape(real_mount_point)}\s+\/dev\/loop+[0-9]+\s}
56
+ loop_mount_points.each_line do |mount_point|
57
+ if mount_point.include? device_real
58
+ mounted = true
59
+ break
60
+ end
61
+ end
48
62
  # Permalink for multiple devices mounted to the same mount point(i.e. '/proc') https://rubular.com/r/a356yzspU7N9TY
49
63
  when %r{\A#{Regexp.escape(real_mount_point)}\s+([/\w])+\s}
50
64
  mounted = false
@@ -64,4 +78,4 @@ class Chef
64
78
  end
65
79
  end
66
80
  end
67
- end
81
+ end
@@ -279,4 +279,4 @@ class Chef
279
279
  end
280
280
  end
281
281
  end
282
- end
282
+ end
@@ -98,7 +98,7 @@ class Chef
98
98
  end
99
99
  end
100
100
 
101
- def magic_version
101
+ def magic_version_array
102
102
  package_name_array.each_with_index.map do |pkg, i|
103
103
  magical_version(i).version_with_arch
104
104
  end
@@ -17,13 +17,13 @@
17
17
 
18
18
  require_relative "../package"
19
19
  require_relative "../../resource/powershell_package"
20
- require_relative "../../mixin/powershell_out"
20
+ require_relative "../../mixin/powershell_exec"
21
21
 
22
22
  class Chef
23
23
  class Provider
24
24
  class Package
25
25
  class Powershell < Chef::Provider::Package
26
- include Chef::Mixin::PowershellOut
26
+ include Chef::Mixin::PowershellExec
27
27
 
28
28
  provides :powershell_package
29
29
 
@@ -54,9 +54,9 @@ class Chef
54
54
  # Installs the package specified with the version passed else latest version will be installed
55
55
  def install_package(names, versions)
56
56
  names.each_with_index do |name, index|
57
- cmd = powershell_out(build_powershell_package_command("Install-Package '#{name}'", versions[index]), timeout: new_resource.timeout)
57
+ cmd = powershell_exec(build_powershell_package_command("Install-Package '#{name}'", versions[index]), timeout: new_resource.timeout)
58
58
  next if cmd.nil?
59
- raise Chef::Exceptions::PowershellCmdletException, "Failed to install package due to catalog signing error, use skip_publisher_check to force install" if /SkipPublisherCheck/.match?(cmd.stderr)
59
+ raise Chef::Exceptions::PowershellCmdletException, "Failed to install package due to catalog signing error, use skip_publisher_check to force install" if /SkipPublisherCheck/.match?(cmd.error)
60
60
  end
61
61
  end
62
62
 
@@ -64,11 +64,12 @@ class Chef
64
64
  def remove_package(names, versions)
65
65
  names.each_with_index do |name, index|
66
66
  if versions && !versions[index].nil?
67
- powershell_out(build_powershell_package_command("Uninstall-Package '#{name}'", versions[index]), timeout: new_resource.timeout)
67
+ powershell_exec(build_powershell_package_command("Uninstall-Package '#{name}'", versions[index]), timeout: new_resource.timeout)
68
68
  else
69
69
  version = "0"
70
70
  until version.empty?
71
- version = powershell_out(build_powershell_package_command("Uninstall-Package '#{name}'"), timeout: new_resource.timeout).stdout.strip
71
+ version = powershell_exec(build_powershell_package_command("Uninstall-Package '#{name}'"), timeout: new_resource.timeout).result
72
+ version = version.strip if version.respond_to?(:strip)
72
73
  unless version.empty?
73
74
  logger.info("Removed package '#{name}' with version #{version}")
74
75
  end
@@ -82,13 +83,14 @@ class Chef
82
83
  versions = []
83
84
  new_resource.package_name.each_with_index do |name, index|
84
85
  version = if new_resource.version && !new_resource.version[index].nil?
85
- powershell_out(build_powershell_package_command("Find-Package '#{name}'", new_resource.version[index]), timeout: new_resource.timeout).stdout.strip
86
+ powershell_exec(build_powershell_package_command("Find-Package '#{name}'", new_resource.version[index]), timeout: new_resource.timeout).result
86
87
  else
87
- powershell_out(build_powershell_package_command("Find-Package '#{name}'"), timeout: new_resource.timeout).stdout.strip
88
+ powershell_exec(build_powershell_package_command("Find-Package '#{name}'"), timeout: new_resource.timeout).result
88
89
  end
89
90
  if version.empty?
90
91
  version = nil
91
92
  end
93
+ version = version.strip if version.respond_to?(:strip)
92
94
  versions.push(version)
93
95
  end
94
96
  versions
@@ -99,13 +101,14 @@ class Chef
99
101
  version_list = []
100
102
  new_resource.package_name.each_with_index do |name, index|
101
103
  version = if new_resource.version && !new_resource.version[index].nil?
102
- powershell_out(build_powershell_package_command("Get-Package '#{name}'", new_resource.version[index]), timeout: new_resource.timeout).stdout.strip
104
+ powershell_exec(build_powershell_package_command("Get-Package '#{name}'", new_resource.version[index]), timeout: new_resource.timeout).result
103
105
  else
104
- powershell_out(build_powershell_package_command("Get-Package '#{name}'"), timeout: new_resource.timeout).stdout.strip
106
+ powershell_exec(build_powershell_package_command("Get-Package '#{name}'"), timeout: new_resource.timeout).result
105
107
  end
106
108
  if version.empty?
107
109
  version = nil
108
110
  end
111
+ version = version.strip if version.respond_to?(:strip)
109
112
  version_list.push(version)
110
113
  end
111
114
  version_list
@@ -113,6 +113,8 @@ class Chef
113
113
  end
114
114
  end
115
115
  nil
116
+ rescue
117
+ nil
116
118
  end
117
119
 
118
120
  def available_version(index)
@@ -438,47 +438,81 @@ class Chef
438
438
  @target_version_array ||=
439
439
  begin
440
440
  target_version_array = []
441
- each_package do |package_name, new_version, current_version, candidate_version|
441
+ each_package do |package_name, new_version, current_version, candidate_version, magic_version|
442
442
  case action
443
443
  when :upgrade
444
- if current_version.nil?
445
- # with use_magic_version there may be a package installed, but it fails the user's
446
- # requested new_resource.version constraints
444
+ if version_equals?(current_version, new_version)
445
+ # This is a short-circuit (mostly for the rubygems provider) to avoid needing to
446
+ # expensively query the candidate_version which must come later. This only checks
447
+ # exact matching, the check for fuzzy matching is later.
448
+ logger.trace("#{new_resource} #{package_name} #{new_version} is already installed")
449
+ target_version_array.push(nil)
450
+ elsif current_version.nil?
451
+ # This is a simple check to see if we have any currently installed version at all, this is
452
+ # safe to do before the allow_downgrade check so we check this before.
447
453
  logger.trace("#{new_resource} has no existing installed version. Installing install #{candidate_version}")
448
454
  target_version_array.push(candidate_version)
449
- elsif !use_magic_version? && version_equals?(current_version, new_version)
450
- # this is a short-circuit (mostly for the rubygems provider) to avoid needing to expensively query the candidate_version which must come later
451
- logger.trace("#{new_resource} #{package_name} #{new_version} is already installed")
455
+ elsif !allow_downgrade && version_compare(current_version, candidate_version) == 1
456
+ # This check for downgrading when allow_downgrade is false uses the current_version rather
457
+ # than the magic_version since we never want to downgrade even if the constraints are not met
458
+ # if the version is higher. This check does use the candidate_version and unlazies this so
459
+ # there will a perf hit on idempotent use when allow_downgrade is false which is unavoidable.
460
+ logger.trace("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{candidate_version}. Skipping...)")
452
461
  target_version_array.push(nil)
462
+ elsif magic_version.nil?
463
+ # This is the check for fuzzy matching of the installed_version, where if the installed version
464
+ # does not match the desired version constraints (but is not an exact match) then we need to
465
+ # install the candidate_version (this must come after the allow_downgrade check)
466
+ logger.trace("#{new_resource} has an installed version that does not match the version constraint. Installing install #{candidate_version}")
467
+ target_version_array.push(candidate_version)
453
468
  elsif candidate_version.nil?
469
+ # This check necessarily unlazies the candidate_version and may be expensive (connecting to
470
+ # rubygems.org or whatever). It comes as late as possible.
454
471
  logger.trace("#{new_resource} #{package_name} has no candidate_version to upgrade to")
455
472
  target_version_array.push(nil)
456
473
  elsif version_equals?(current_version, candidate_version)
474
+ # This check sees if the candidate_version is already installed or if we should upgrade/update the
475
+ # package. This is the normal idempotent behavior of :upgrade and is inherently expensive due to
476
+ # unlazying the candidate_version. To prevent the perf hit the version may be specified with a full
477
+ # version constraint. Then the cookbook can roll the version forward and use :upgrade to force version
478
+ # pinning.
457
479
  logger.trace("#{new_resource} #{package_name} #{candidate_version} is already installed")
458
480
  target_version_array.push(nil)
459
- elsif !allow_downgrade && version_compare(current_version, candidate_version) == 1
460
- logger.trace("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{candidate_version}. Skipping...)")
461
- target_version_array.push(nil)
462
481
  else
463
- logger.trace("#{new_resource} #{package_name} is out of date, will upgrade to #{candidate_version}")
482
+ logger.trace("#{new_resource} #{package_name} is out of date, will update to #{candidate_version}")
464
483
  target_version_array.push(candidate_version)
465
484
  end
466
485
 
467
486
  when :install
468
- if new_version && !use_magic_version?
487
+ if current_version && new_version && !allow_downgrade && version_compare(current_version, new_version) == 1
488
+ # This is the idempotency guard for downgrades when downgrades are not allowed. This should perhaps raise
489
+ # an exception since we were told to install an exact package version but we are silently refusing to do so
490
+ # because a higher version is already installed. Maybe we need a flag for users to apply their preferred
491
+ # declarative philosophy? This has to come early and outside of the two code paths below.
492
+ logger.warn("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{new_version}. Skipping...)")
493
+ target_version_array.push(nil)
494
+ elsif new_version && !use_magic_version?
495
+ # This is for "non magic version using" subclasses to do comparisons between the current_version and the
496
+ # desired new_version. XXX: If we converted this to current_version_requirement_satisfied? and made it specific
497
+ # to the current version check and then eliminated the magic_version, we might be able to eliminate separate codepaths
498
+ # here, and eliminate the semantic confusion around the magic_version?
469
499
  if version_requirement_satisfied?(current_version, new_version)
470
500
  logger.trace("#{new_resource} #{package_name} #{current_version} satisfies #{new_version} requirement")
471
501
  target_version_array.push(nil)
472
- elsif current_version && !allow_downgrade && version_compare(current_version, new_version) == 1
473
- logger.warn("#{new_resource} #{package_name} has installed version #{current_version}, which is newer than available version #{new_version}. Skipping...)")
474
- target_version_array.push(nil)
475
502
  else
503
+ # XXX: some subclasses seem to depend on this behavior where the new_version can be different from the
504
+ # candidate_version and we install the new_version, it seems like the candidate_version should be fixed to
505
+ # be resolved correctly to the new_version for those providers. although it may just be unit test bugs.
506
+ # it would be more correct to use the candidate_version here, but then it needs to be the correctly resolved
507
+ # candidate_version against the new_version constraint.
476
508
  logger.trace("#{new_resource} #{package_name} #{current_version} needs updating to #{new_version}")
477
509
  target_version_array.push(new_version)
478
510
  end
479
- elsif current_version.nil?
480
- # with use_magic_version there may be a package installed, but it fails the user's
481
- # requested new_resource.version constraints
511
+ elsif magic_version.nil?
512
+ # This is for when we have a "magic version using" subclass and where the installed version does not match the
513
+ # constraint specified in the new_version, so we need to upgrade to the candidate_version. This is the only
514
+ # codepath in the :install branch which references the candidate_version so it is slow, but it is the path where
515
+ # we need to do work anyway. XXX: should we check for candidate_version.nil? somewhere around here?
482
516
  logger.trace("#{new_resource} #{package_name} not installed, installing #{candidate_version}")
483
517
  target_version_array.push(candidate_version)
484
518
  else
@@ -512,8 +546,8 @@ class Chef
512
546
  @packages_missing_candidates ||=
513
547
  begin
514
548
  missing = []
515
- each_package do |package_name, new_version, current_version, candidate_version|
516
- missing.push(package_name) if current_version.nil? && candidate_version.nil?
549
+ each_package do |package_name, new_version, current_version, candidate_version, magic_version|
550
+ missing.push(package_name) if magic_version.nil? && candidate_version.nil?
517
551
  end
518
552
  missing
519
553
  end
@@ -536,7 +570,7 @@ class Chef
536
570
  @forced_packages_missing_candidates ||=
537
571
  begin
538
572
  missing = []
539
- each_package do |package_name, new_version, current_version, candidate_version|
573
+ each_package do |package_name, new_version, current_version, candidate_version, magic_version|
540
574
  next if new_version.nil? || current_version.nil?
541
575
 
542
576
  if use_magic_version?
@@ -559,9 +593,10 @@ class Chef
559
593
  def each_package
560
594
  package_name_array.each_with_index do |package_name, i|
561
595
  candidate_version = candidate_version_array[i]
562
- current_version = use_magic_version? ? magic_version[i] : current_version_array[i]
596
+ current_version = current_version_array[i]
597
+ magic_version = use_magic_version? ? magic_version_array[i] : current_version_array[i]
563
598
  new_version = new_version_array[i]
564
- yield package_name, new_version, current_version, candidate_version
599
+ yield package_name, new_version, current_version, candidate_version, magic_version
565
600
  end
566
601
  end
567
602
 
data/lib/chef/provider.rb CHANGED
@@ -269,7 +269,7 @@ class Chef
269
269
  end
270
270
 
271
271
  def requirements
272
- @requirements ||= ResourceRequirements.new(@new_resource, run_context)
272
+ @requirements ||= ResourceRequirements.new(@new_resource, run_context, action || new_resource.action)
273
273
  end
274
274
 
275
275
  def description(description = "NOT_PASSED")
data/lib/chef/pwsh.rb CHANGED
@@ -24,15 +24,16 @@ class Chef
24
24
  # bindir directory.
25
25
  #
26
26
  # @param script [String] script to run
27
+ # @param timeout [Integer, nil] timeout in seconds.
27
28
  # @return [Object] output
28
- def initialize(script)
29
+ def initialize(script, timeout: -1)
29
30
  @dll = Pwsh.dll
30
31
  super
31
32
  end
32
33
 
33
34
  protected
34
35
 
35
- def exec(script)
36
+ def exec(script, timeout: -1)
36
37
  # Note that we need to override the location of the shared dotnet core library
37
38
  # location. With most .net core applications, you can simply publish them as a
38
39
  # "self-contained" application allowing consumers of the application to run them
@@ -87,6 +87,17 @@ class Chef
87
87
  ]
88
88
  end
89
89
  ```
90
+
91
+ **Report directly to the [Chef Automate data collector endpoint](/automate/data_collection/#configure-chef-infra-client-to-use-the-data-collector-endpoint-in-chef-automate).**
92
+
93
+ ```ruby
94
+ chef_client_config 'Create client.rb' do
95
+ chef_server_url 'https://chef.example.dmz'
96
+ data_collector_server_url 'https://automate.example.dmz'
97
+ data_collector_token 'TEST_TOKEN_TEST'
98
+ end
99
+ ```
100
+
90
101
  DOC
91
102
 
92
103
  # @todo policy_file or policy_group being set requires the other to be set so enforce that.
@@ -231,6 +242,14 @@ class Chef
231
242
  property :additional_config, String,
232
243
  description: "Additional text to add at the bottom of the client.rb config. This can be used to run custom Ruby or to add less common config options"
233
244
 
245
+ property :data_collector_server_url, String,
246
+ description: "The data collector url (typically automate) to send node, converge and compliance data. Note: Data collection reporting to Automate should be performed directly by Chef Infra Server if possible, as this removes the need to distribute tokens to individual nodes.",
247
+ introduced: "17.8"
248
+
249
+ property :data_collector_token, String,
250
+ description: "The data collector token to interact with the data collector server url (Automate). Note: Data collection reporting to Automate should be performed directly by Chef Infra Server if possible, as this removes the need to distribute tokens to individual nodes.",
251
+ introduced: "17.8"
252
+
234
253
  action :create, description: "Create a client.rb config file for configuring #{ChefUtils::Dist::Infra::PRODUCT}." do
235
254
  unless ::Dir.exist?(new_resource.config_directory)
236
255
  directory new_resource.config_directory do
@@ -282,7 +301,9 @@ class Chef
282
301
  ssl_verify_mode: new_resource.ssl_verify_mode,
283
302
  start_handlers: format_handler(new_resource.start_handlers),
284
303
  additional_config: new_resource.additional_config,
285
- policy_persist_run_list: new_resource.policy_persist_run_list
304
+ policy_persist_run_list: new_resource.policy_persist_run_list,
305
+ data_collector_server_url: new_resource.data_collector_server_url,
306
+ data_collector_token: new_resource.data_collector_token
286
307
  )
287
308
  mode "0640"
288
309
  action :create
@@ -134,7 +134,7 @@ class Chef
134
134
  standard_error_path ::File.join(new_resource.log_directory, new_resource.log_file_name)
135
135
  program_arguments ["/bin/bash",
136
136
  "-c",
137
- "echo; echo #{ChefUtils::Dist::Infra::PRODUCT} launchd daemon config has been updated. Manually unloading and reloading the daemon; echo Now unloading the daemon; /bin/launchctl unload /Library/LaunchDaemons/com.#{ChefUtils::Dist::Infra::SHORT}.#{ChefUtils::Dist::Infra::CLIENT}.plist; sleep 2; echo Now loading the daemon; /bin/launchctl load /Library/LaunchDaemons/com.#{ChefUtils::Dist::Infra::SHORT}.#{ChefUtils::Dist::Infra::CLIENT}.plist"]
137
+ "echo; echo #{ChefUtils::Dist::Infra::PRODUCT} launchd daemon config has been updated. Manually unloading and reloading the daemon; echo Now unloading the daemon; sudo /bin/launchctl unload /Library/LaunchDaemons/com.#{ChefUtils::Dist::Infra::SHORT}.#{ChefUtils::Dist::Infra::CLIENT}.plist; sleep 2; echo Now loading the daemon; sudo /bin/launchctl load /Library/LaunchDaemons/com.#{ChefUtils::Dist::Infra::SHORT}.#{ChefUtils::Dist::Infra::CLIENT}.plist"]
138
138
  action :enable # enable creates the plist & triggers service restarts on change
139
139
  end
140
140
 
@@ -68,12 +68,10 @@ class Chef
68
68
  end
69
69
  }
70
70
 
71
- def allow_downgrade(arg = nil)
72
- unless arg.nil?
73
- Chef.deprecated(:dnf_package_allow_downgrade, "the allow_downgrade property on the dnf_package provider is not used, DNF supports downgrades by default.")
74
- end
75
- true
76
- end
71
+ property :allow_downgrade, [ TrueClass, FalseClass ],
72
+ description: "Allow downgrading a package to satisfy requested version requirements.",
73
+ default: true,
74
+ desired_state: false
77
75
  end
78
76
  end
79
77
  end
@@ -37,6 +37,11 @@ class Chef
37
37
  property :response_file_variables, Hash,
38
38
  description: "A Hash of response file variables in the form of {'VARIABLE' => 'VALUE'}.",
39
39
  default: {}, desired_state: false
40
+
41
+ property :allow_downgrade, [ TrueClass, FalseClass ],
42
+ description: "Allow downgrading a package to satisfy requested version requirements.",
43
+ default: true,
44
+ desired_state: false
40
45
  end
41
46
  end
42
47
  end
@@ -346,7 +346,7 @@ class Chef
346
346
 
347
347
  By default, notifications are `:delayed`, that is they are queued up as they are
348
348
  triggered, and then executed at the very end of a Chef Infra Client run. To run
349
- kan action immediately, use `:immediately`:
349
+ an action immediately, use `:immediately`:
350
350
 
351
351
  ```ruby
352
352
  template '/etc/nagios3/configures-nagios.conf' do
@@ -517,9 +517,6 @@ class Chef
517
517
  name_property: true,
518
518
  description: "An optional property to set the command to be executed if it differs from the resource block's name. Note: Use the **execute** resource to run a single command. Use multiple **execute** resource blocks to run multiple commands."
519
519
 
520
- property :umask, [ String, Integer ],
521
- description: "The file mode creation mask, or umask."
522
-
523
520
  property :creates, String,
524
521
  description: "Prevent a command from creating a file when that file already exists."
525
522
 
@@ -238,9 +238,6 @@ class Chef
238
238
  property :time_out, Integer,
239
239
  description: "The amount of time (in seconds) a job may be idle before it times out. If no value is specified, the default timeout value for launchd will be used."
240
240
 
241
- property :umask, Integer,
242
- description: "A decimal value to pass to `umask` before running a job."
243
-
244
241
  property :username, String,
245
242
  description: "When launchd is run as the root user, the user to run the job as."
246
243