ohai 6.24.2 → 7.0.0.rc.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (259) hide show
  1. data/lib/ohai.rb +1 -1
  2. data/lib/ohai/application.rb +5 -12
  3. data/lib/ohai/common/dmi.rb +126 -0
  4. data/lib/ohai/config.rb +9 -9
  5. data/lib/ohai/{plugins/darwin/hostname.rb → dsl.rb} +7 -7
  6. data/lib/ohai/dsl/plugin.rb +186 -0
  7. data/lib/ohai/dsl/plugin/versionvi.rb +62 -0
  8. data/lib/ohai/dsl/plugin/versionvii.rb +106 -0
  9. data/lib/ohai/exception.rb +11 -2
  10. data/lib/ohai/hints.rb +48 -0
  11. data/lib/ohai/loader.rb +205 -0
  12. data/lib/ohai/mixin/command.rb +14 -18
  13. data/lib/ohai/mixin/constant_helper.rb +53 -0
  14. data/lib/ohai/mixin/gce_metadata.rb +0 -2
  15. data/lib/ohai/{plugins/freebsd/uptime.rb → mixin/network_constants.rb} +15 -13
  16. data/lib/ohai/mixin/os.rb +59 -0
  17. data/lib/ohai/mixin/seconds_to_human.rb +48 -0
  18. data/lib/ohai/plugins/aix/cpu.rb +26 -22
  19. data/lib/ohai/plugins/aix/filesystem.rb +47 -48
  20. data/lib/ohai/plugins/aix/kernel.rb +11 -7
  21. data/lib/ohai/plugins/aix/memory.rb +8 -4
  22. data/lib/ohai/plugins/aix/network.rb +73 -82
  23. data/lib/ohai/plugins/aix/platform.rb +9 -6
  24. data/lib/ohai/plugins/aix/uptime.rb +14 -12
  25. data/lib/ohai/plugins/azure.rb +33 -11
  26. data/lib/ohai/plugins/c.rb +103 -78
  27. data/lib/ohai/plugins/chef.rb +20 -8
  28. data/lib/ohai/plugins/cloud.rb +234 -230
  29. data/lib/ohai/plugins/command.rb +6 -2
  30. data/lib/ohai/plugins/darwin/cpu.rb +10 -4
  31. data/lib/ohai/plugins/darwin/filesystem.rb +32 -32
  32. data/lib/ohai/plugins/darwin/network.rb +157 -154
  33. data/lib/ohai/plugins/darwin/platform.rb +18 -16
  34. data/lib/ohai/plugins/darwin/system_profiler.rb +49 -46
  35. data/lib/ohai/plugins/dmi.rb +102 -102
  36. data/lib/ohai/plugins/ec2.rb +30 -28
  37. data/lib/ohai/plugins/erlang.rb +19 -16
  38. data/lib/ohai/plugins/eucalyptus.rb +37 -36
  39. data/lib/ohai/plugins/freebsd/cpu.rb +34 -29
  40. data/lib/ohai/plugins/freebsd/filesystem.rb +32 -32
  41. data/lib/ohai/plugins/freebsd/memory.rb +35 -25
  42. data/lib/ohai/plugins/freebsd/network.rb +94 -89
  43. data/lib/ohai/plugins/freebsd/platform.rb +10 -4
  44. data/lib/ohai/plugins/freebsd/virtualization.rb +62 -61
  45. data/lib/ohai/plugins/gce.rb +30 -36
  46. data/lib/ohai/plugins/groovy.rb +14 -11
  47. data/lib/ohai/plugins/hostname.rb +132 -10
  48. data/lib/ohai/plugins/ip_scopes.rb +31 -16
  49. data/lib/ohai/plugins/java.rb +45 -21
  50. data/lib/ohai/plugins/kernel.rb +186 -19
  51. data/lib/ohai/plugins/keys.rb +6 -2
  52. data/lib/ohai/plugins/languages.rb +6 -2
  53. data/lib/ohai/plugins/linode.rb +38 -30
  54. data/lib/ohai/plugins/linux/block_device.rb +19 -15
  55. data/lib/ohai/plugins/linux/cpu.rb +42 -38
  56. data/lib/ohai/plugins/linux/filesystem.rb +70 -130
  57. data/lib/ohai/plugins/linux/lsb.rb +35 -35
  58. data/lib/ohai/plugins/linux/memory.rb +65 -61
  59. data/lib/ohai/plugins/linux/network.rb +343 -362
  60. data/lib/ohai/plugins/linux/platform.rb +90 -88
  61. data/lib/ohai/plugins/linux/virtualization.rb +95 -90
  62. data/lib/ohai/plugins/lua.rb +14 -10
  63. data/lib/ohai/plugins/mono.rb +17 -13
  64. data/lib/ohai/plugins/netbsd/cpu.rb +25 -23
  65. data/lib/ohai/plugins/netbsd/filesystem.rb +32 -32
  66. data/lib/ohai/plugins/netbsd/memory.rb +59 -59
  67. data/lib/ohai/plugins/netbsd/network.rb +92 -88
  68. data/lib/ohai/plugins/netbsd/platform.rb +10 -3
  69. data/lib/ohai/plugins/netbsd/virtualization.rb +41 -38
  70. data/lib/ohai/plugins/network.rb +131 -130
  71. data/lib/ohai/plugins/network_listeners.rb +26 -22
  72. data/lib/ohai/plugins/nodejs.rb +14 -10
  73. data/lib/ohai/plugins/ohai.rb +11 -6
  74. data/lib/ohai/plugins/ohai_time.rb +6 -2
  75. data/lib/ohai/plugins/openbsd/cpu.rb +20 -15
  76. data/lib/ohai/plugins/openbsd/filesystem.rb +32 -32
  77. data/lib/ohai/plugins/openbsd/memory.rb +59 -59
  78. data/lib/ohai/plugins/openbsd/network.rb +92 -88
  79. data/lib/ohai/plugins/openbsd/platform.rb +10 -4
  80. data/lib/ohai/plugins/openbsd/virtualization.rb +41 -39
  81. data/lib/ohai/plugins/openstack.rb +23 -21
  82. data/lib/ohai/plugins/os.rb +8 -32
  83. data/lib/ohai/plugins/passwd.rb +27 -22
  84. data/lib/ohai/plugins/perl.rb +21 -16
  85. data/lib/ohai/plugins/php.rb +15 -12
  86. data/lib/ohai/plugins/platform.rb +9 -9
  87. data/lib/ohai/plugins/{linux/kernel.rb → ps.rb} +13 -12
  88. data/lib/ohai/plugins/python.rb +16 -12
  89. data/lib/ohai/plugins/rackspace.rb +82 -77
  90. data/lib/ohai/plugins/root_group.rb +13 -9
  91. data/lib/ohai/plugins/ruby.rb +50 -48
  92. data/lib/ohai/plugins/sigar/cpu.rb +21 -17
  93. data/lib/ohai/plugins/sigar/filesystem.rb +26 -23
  94. data/lib/ohai/plugins/sigar/memory.rb +17 -14
  95. data/lib/ohai/plugins/sigar/network.rb +133 -67
  96. data/lib/ohai/plugins/sigar/network_route.rb +33 -28
  97. data/lib/ohai/plugins/sigar/platform.rb +10 -6
  98. data/lib/ohai/plugins/solaris2/cpu.rb +41 -33
  99. data/lib/ohai/plugins/solaris2/dmi.rb +146 -146
  100. data/lib/ohai/plugins/solaris2/filesystem.rb +74 -77
  101. data/lib/ohai/plugins/{aix/hostname.rb → solaris2/memory.rb} +7 -4
  102. data/lib/ohai/plugins/solaris2/network.rb +91 -86
  103. data/lib/ohai/plugins/solaris2/platform.rb +40 -36
  104. data/lib/ohai/plugins/solaris2/virtualization.rb +54 -59
  105. data/lib/ohai/plugins/solaris2/zpools.rb +38 -38
  106. data/lib/ohai/plugins/ssh_host_key.rb +49 -45
  107. data/lib/ohai/plugins/uptime.rb +87 -25
  108. data/lib/ohai/plugins/virtualization.rb +59 -55
  109. data/lib/ohai/plugins/windows/cpu.rb +44 -40
  110. data/lib/ohai/plugins/windows/filesystem.rb +28 -22
  111. data/lib/ohai/plugins/windows/network.rb +88 -79
  112. data/lib/ohai/plugins/windows/platform.rb +10 -3
  113. data/lib/ohai/provides_map.rb +184 -0
  114. data/lib/ohai/runner.rb +109 -0
  115. data/lib/ohai/system.rb +103 -184
  116. data/lib/ohai/version.rb +4 -3
  117. data/spec/data/plugins/___lib64___libc.so.6.output +135 -0
  118. data/spec/data/plugins/___lib___libc.so.6.output +135 -0
  119. data/spec/data/plugins/cc.output +135 -0
  120. data/spec/data/plugins/cl.output +135 -0
  121. data/spec/data/plugins/devenv.com.output +135 -0
  122. data/spec/data/plugins/env.output +71 -0
  123. data/spec/data/plugins/erl.output +144 -0
  124. data/spec/data/plugins/gcc.output +135 -0
  125. data/spec/data/plugins/groovy.output +159 -0
  126. data/spec/data/plugins/java.output +143 -0
  127. data/spec/data/plugins/lua.output +143 -0
  128. data/spec/data/plugins/messages.rb +8 -0
  129. data/spec/data/plugins/node.output +143 -0
  130. data/spec/data/plugins/perl.output +143 -0
  131. data/spec/data/plugins/php.output +143 -0
  132. data/spec/data/plugins/python.output +143 -0
  133. data/spec/data/plugins/uname.output +71 -0
  134. data/spec/data/plugins/v6message.rb +2 -0
  135. data/spec/data/plugins/v7message.rb +7 -0
  136. data/spec/data/plugins/what.output +135 -0
  137. data/spec/data/plugins/xlc.output +135 -0
  138. data/spec/spec_helper.rb +52 -18
  139. data/spec/support/integration_helper.rb +44 -0
  140. data/spec/unit/dsl/plugin_spec.rb +298 -0
  141. data/spec/unit/hints_spec.rb +65 -0
  142. data/spec/unit/loader_spec.rb +226 -0
  143. data/spec/unit/mixin/ec2_metadata_spec.rb +9 -9
  144. data/spec/unit/plugins/aix/cpu_spec.rb +17 -18
  145. data/spec/unit/plugins/aix/filesystem_spec.rb +20 -18
  146. data/spec/unit/plugins/aix/hostname_spec.rb +8 -4
  147. data/spec/unit/plugins/aix/kernel_spec.rb +13 -12
  148. data/spec/unit/plugins/aix/network_spec.rb +66 -45
  149. data/spec/unit/plugins/aix/platform_spec.rb +11 -10
  150. data/spec/unit/plugins/aix/uptime_spec.rb +7 -8
  151. data/spec/unit/plugins/azure_spec.rb +20 -21
  152. data/spec/unit/plugins/c_spec.rb +88 -87
  153. data/spec/unit/plugins/chef_spec.rb +5 -6
  154. data/spec/unit/plugins/cloud_spec.rb +81 -82
  155. data/spec/unit/plugins/darwin/cpu_spec.rb +8 -9
  156. data/spec/unit/plugins/darwin/hostname_spec.rb +23 -11
  157. data/spec/unit/plugins/darwin/kernel_spec.rb +39 -16
  158. data/spec/unit/plugins/darwin/network_spec.rb +375 -378
  159. data/spec/unit/plugins/darwin/platform_spec.rb +23 -50
  160. data/spec/unit/plugins/darwin/system_profiler_spec.rb +7 -8
  161. data/spec/unit/plugins/dmi_spec.rb +7 -12
  162. data/spec/unit/plugins/ec2_spec.rb +70 -59
  163. data/spec/unit/plugins/erlang_spec.rb +18 -20
  164. data/spec/unit/plugins/eucalyptus_spec.rb +37 -33
  165. data/spec/unit/plugins/fail_spec.rb +276 -23
  166. data/spec/unit/plugins/freebsd/hostname_spec.rb +11 -9
  167. data/spec/unit/plugins/freebsd/kernel_spec.rb +8 -8
  168. data/spec/unit/plugins/freebsd/platform_spec.rb +9 -10
  169. data/spec/unit/plugins/freebsd/virtualization_spec.rb +32 -32
  170. data/spec/unit/plugins/gce_spec.rb +19 -25
  171. data/spec/unit/plugins/groovy_spec.rb +10 -16
  172. data/spec/unit/plugins/hostname_spec.rb +45 -20
  173. data/spec/unit/plugins/ip_scopes_spec.rb +97 -0
  174. data/spec/unit/plugins/java_spec.rb +145 -99
  175. data/spec/unit/plugins/kernel_spec.rb +51 -15
  176. data/spec/unit/plugins/linode_spec.rb +31 -29
  177. data/spec/unit/plugins/linux/cpu_spec.rb +42 -43
  178. data/spec/unit/plugins/linux/filesystem_spec.rb +143 -324
  179. data/spec/unit/plugins/linux/hostname_spec.rb +16 -23
  180. data/spec/unit/plugins/linux/kernel_spec.rb +22 -8
  181. data/spec/unit/plugins/linux/lsb_spec.rb +54 -56
  182. data/spec/unit/plugins/linux/network_spec.rb +196 -238
  183. data/spec/unit/plugins/linux/platform_spec.rb +186 -205
  184. data/spec/unit/plugins/linux/uptime_spec.rb +13 -25
  185. data/spec/unit/plugins/linux/virtualization_spec.rb +149 -129
  186. data/spec/unit/plugins/lua_spec.rb +12 -15
  187. data/spec/unit/plugins/mono_spec.rb +10 -15
  188. data/spec/unit/plugins/netbsd/hostname_spec.rb +17 -7
  189. data/spec/unit/plugins/netbsd/kernel_spec.rb +8 -8
  190. data/spec/unit/plugins/netbsd/platform_spec.rb +8 -10
  191. data/spec/unit/plugins/network_spec.rb +358 -235
  192. data/spec/unit/plugins/nodejs_spec.rb +13 -15
  193. data/spec/unit/plugins/ohai_spec.rb +3 -4
  194. data/spec/unit/plugins/ohai_time_spec.rb +8 -9
  195. data/spec/unit/plugins/openbsd/hostname_spec.rb +21 -11
  196. data/spec/unit/plugins/openbsd/kernel_spec.rb +8 -8
  197. data/spec/unit/plugins/openbsd/platform_spec.rb +6 -12
  198. data/spec/unit/plugins/openstack_spec.rb +214 -0
  199. data/spec/unit/plugins/os_spec.rb +13 -16
  200. data/spec/unit/plugins/passwd_spec.rb +12 -13
  201. data/spec/unit/plugins/perl_spec.rb +20 -44
  202. data/spec/unit/plugins/php_spec.rb +20 -15
  203. data/spec/unit/plugins/platform_spec.rb +24 -29
  204. data/spec/unit/plugins/python_spec.rb +13 -17
  205. data/spec/unit/plugins/rackspace_spec.rb +90 -57
  206. data/spec/unit/plugins/root_group_spec.rb +17 -19
  207. data/spec/unit/plugins/ruby_spec.rb +15 -16
  208. data/spec/unit/plugins/sigar/network_route_spec.rb +12 -13
  209. data/spec/unit/plugins/solaris2/cpu_spec.rb +82 -0
  210. data/spec/unit/plugins/solaris2/hostname_spec.rb +12 -13
  211. data/spec/unit/plugins/solaris2/kernel_spec.rb +11 -15
  212. data/{lib/ohai/plugins/openbsd/uptime.rb → spec/unit/plugins/solaris2/memory_spec.rb} +10 -12
  213. data/spec/unit/plugins/solaris2/network_spec.rb +44 -20
  214. data/spec/unit/plugins/solaris2/platform_spec.rb +13 -22
  215. data/spec/unit/plugins/solaris2/virtualization_spec.rb +37 -45
  216. data/spec/unit/plugins/ssh_host_keys_spec.rb +11 -15
  217. data/spec/unit/provides_map_spec.rb +208 -0
  218. data/spec/unit/runner_spec.rb +488 -0
  219. data/spec/unit/system_spec.rb +639 -104
  220. metadata +151 -87
  221. checksums.yaml +0 -7
  222. data/lib/ohai/mixin/from_file.rb +0 -36
  223. data/lib/ohai/plugins/aix/ps.rb +0 -23
  224. data/lib/ohai/plugins/darwin/kernel.rb +0 -37
  225. data/lib/ohai/plugins/darwin/ps.rb +0 -23
  226. data/lib/ohai/plugins/darwin/uptime.rb +0 -32
  227. data/lib/ohai/plugins/dmi_common.rb +0 -121
  228. data/lib/ohai/plugins/freebsd/hostname.rb +0 -22
  229. data/lib/ohai/plugins/freebsd/kernel.rb +0 -37
  230. data/lib/ohai/plugins/freebsd/ps.rb +0 -24
  231. data/lib/ohai/plugins/hpux/cpu.rb +0 -19
  232. data/lib/ohai/plugins/hpux/filesystem.rb +0 -19
  233. data/lib/ohai/plugins/hpux/hostname.rb +0 -19
  234. data/lib/ohai/plugins/hpux/memory.rb +0 -19
  235. data/lib/ohai/plugins/hpux/network.rb +0 -19
  236. data/lib/ohai/plugins/hpux/platform.rb +0 -19
  237. data/lib/ohai/plugins/hpux/ps.rb +0 -23
  238. data/lib/ohai/plugins/hpux/uptime.rb +0 -19
  239. data/lib/ohai/plugins/linux/hostname.rb +0 -40
  240. data/lib/ohai/plugins/linux/ps.rb +0 -23
  241. data/lib/ohai/plugins/linux/uptime.rb +0 -28
  242. data/lib/ohai/plugins/netbsd/hostname.rb +0 -22
  243. data/lib/ohai/plugins/netbsd/kernel.rb +0 -35
  244. data/lib/ohai/plugins/netbsd/ps.rb +0 -24
  245. data/lib/ohai/plugins/netbsd/uptime.rb +0 -31
  246. data/lib/ohai/plugins/openbsd/hostname.rb +0 -22
  247. data/lib/ohai/plugins/openbsd/kernel.rb +0 -35
  248. data/lib/ohai/plugins/openbsd/ps.rb +0 -24
  249. data/lib/ohai/plugins/sigar/hostname.rb +0 -28
  250. data/lib/ohai/plugins/sigar/uptime.rb +0 -27
  251. data/lib/ohai/plugins/solaris2/hostname.rb +0 -34
  252. data/lib/ohai/plugins/solaris2/kernel.rb +0 -40
  253. data/lib/ohai/plugins/solaris2/ps.rb +0 -23
  254. data/lib/ohai/plugins/solaris2/uptime.rb +0 -36
  255. data/lib/ohai/plugins/windows/hostname.rb +0 -33
  256. data/lib/ohai/plugins/windows/kernel.rb +0 -58
  257. data/lib/ohai/plugins/windows/kernel_devices.rb +0 -39
  258. data/lib/ohai/plugins/windows/uptime.rb +0 -23
  259. data/spec/unit/mixin/from_file_spec.rb +0 -53
data/lib/ohai.rb CHANGED
@@ -19,4 +19,4 @@
19
19
  require 'ohai/version'
20
20
  require 'ohai/config'
21
21
  require 'ohai/system'
22
-
22
+ require 'ohai/exception'
@@ -27,11 +27,6 @@ class Ohai::Application
27
27
  :long => "--directory DIRECTORY",
28
28
  :description => "A directory to add to the Ohai search path"
29
29
 
30
- option :file,
31
- :short => "-f FILE",
32
- :long => "--file FILE",
33
- :description => "A file to run Ohai against"
34
-
35
30
  option :log_level,
36
31
  :short => "-l LEVEL",
37
32
  :long => "--log_level LEVEL",
@@ -56,7 +51,7 @@ class Ohai::Application
56
51
  option :version,
57
52
  :short => "-v",
58
53
  :long => "--version",
59
- :description => "Show chef version",
54
+ :description => "Show Ohai version",
60
55
  :boolean => true,
61
56
  :proc => lambda {|v| puts "Ohai: #{::Ohai::VERSION}"},
62
57
  :exit => 0
@@ -77,6 +72,7 @@ class Ohai::Application
77
72
 
78
73
  def configure_ohai
79
74
  @attributes = parse_options
75
+ @attributes = nil if @attributes.empty?
80
76
 
81
77
  Ohai::Config.merge!(config)
82
78
  if Ohai::Config[:directory]
@@ -91,12 +87,9 @@ class Ohai::Application
91
87
 
92
88
  def run_application
93
89
  ohai = Ohai::System.new
94
- if Ohai::Config[:file]
95
- ohai.from_file(Ohai::Config[:file])
96
- else
97
- ohai.all_plugins
98
- end
99
- if @attributes.length > 0
90
+ ohai.all_plugins(@attributes)
91
+
92
+ if @attributes
100
93
  @attributes.each do |a|
101
94
  puts ohai.attributes_print(a)
102
95
  end
@@ -0,0 +1,126 @@
1
+ #
2
+ # Author:: Kurt Yoder (ktyopscode@yoderhome.com)
3
+ # Copyright:: Copyright (c) 2010 Kurt Yoder
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ module Ohai
20
+ module Common
21
+ module DMI
22
+ # List of IDs and what they translate to
23
+ # from 'man 8 dmidecode'
24
+ # all-lowercase, all non-alphanumeric converted to '_'
25
+ # 128-255 are 'oem_data_[id]'
26
+ # Everything else is 'unknown'
27
+ IdToDescription = {
28
+ 0 => 'bios',
29
+ 1 => 'system',
30
+ 2 => 'base_board',
31
+ 3 => 'chassis',
32
+ 4 => 'processor',
33
+ 5 => 'memory_controller',
34
+ 6 => 'memory_module',
35
+ 7 => 'cache',
36
+ 8 => 'port_connector',
37
+ 9 => 'system_slots',
38
+ 10 => 'on_board_devices',
39
+ 11 => 'oem_strings',
40
+ 12 => 'system_configuration_options',
41
+ 13 => 'bios_language',
42
+ 14 => 'group_associations',
43
+ 15 => 'system_event_log',
44
+ 16 => 'physical_memory_array',
45
+ 17 => 'memory_device',
46
+ 18 => '32_bit_memory_error',
47
+ 19 => 'memory_array_mapped_address',
48
+ 20 => 'memory_device_mapped_address',
49
+ 21 => 'built_in_pointing_device',
50
+ 22 => 'portable_battery',
51
+ 23 => 'system_reset',
52
+ 24 => 'hardware_security',
53
+ 25 => 'system_power_controls',
54
+ 26 => 'voltage_probe',
55
+ 27 => 'cooling_device',
56
+ 28 => 'temperature_probe',
57
+ 29 => 'electrical_current_probe',
58
+ 30 => 'out_of_band_remote_access',
59
+ 31 => 'boot_integrity_services',
60
+ 32 => 'system_boot',
61
+ 33 => '64_bit_memory_error',
62
+ 34 => 'management_device',
63
+ 35 => 'management_device_component',
64
+ 36 => 'management_device_threshold_data',
65
+ 37 => 'memory_channel',
66
+ 38 => 'ipmi_device',
67
+ 39 => 'power_supply',
68
+ 126 => 'disabled_entries',
69
+ 127 => 'end_of_table_marker',
70
+ }
71
+
72
+ # list of IDs to collect, otherwise we generate pages of hashes about cache chip size and whatnot
73
+ # See OHAI-260. When we can give the user a choice, this will be a default.
74
+ IdToCapture = [ 0, 1, 2, 3, 4, 6, 11 ]
75
+
76
+ # look up DMI ID
77
+ def id_lookup(id)
78
+ begin
79
+ id = id.to_i
80
+ if (id >= 128) and (id <= 255)
81
+ id = "oem_data_#{id}"
82
+ elsif DMI::IdToDescription.has_key?(id)
83
+ id = DMI::IdToDescription[id]
84
+ else
85
+ Ohai::Log.debug("unrecognized header id; falling back to 'unknown'")
86
+ id = 'unknown'
87
+ end
88
+ rescue
89
+ Ohai::Log.debug("failed to look up id #{id}, returning unchanged")
90
+ id
91
+ end
92
+ end
93
+
94
+ # create simplified convenience access keys for each record type
95
+ # for single occurrences of one type, copy to top level all fields and values
96
+ # for multiple occurrences of same type, copy to top level all fields and values that are common to all records
97
+ def convenience_keys(dmi)
98
+ dmi.each{ |type, records|
99
+ in_common = Mash.new
100
+ next unless records.class.to_s == 'Mash'
101
+ next unless records.has_key?('all_records')
102
+ records[:all_records].each{ |record|
103
+ record.each{ |field, value|
104
+ next if value.class.to_s == 'Mash'
105
+ next if field.to_s == 'application_identifier'
106
+ next if field.to_s == 'size'
107
+ next if field.to_s == 'record_id'
108
+ translated = field.downcase.gsub(/[^a-z0-9]/, '_')
109
+ if in_common.has_key?(translated)
110
+ in_common[translated] = nil unless in_common[translated] == value
111
+ else
112
+ in_common[translated] = value
113
+ end
114
+ }
115
+ }
116
+ in_common.each{ |field, value|
117
+ next if value == nil
118
+ dmi[type][field] = value
119
+ }
120
+ }
121
+ end
122
+
123
+ module_function :id_lookup, :convenience_keys
124
+ end
125
+ end
126
+ end
data/lib/ohai/config.rb CHANGED
@@ -6,9 +6,9 @@
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
- #
9
+ #
10
10
  # http://www.apache.org/licenses/LICENSE-2.0
11
- #
11
+ #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
14
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -21,7 +21,7 @@ require 'mixlib/config'
21
21
  module Ohai
22
22
  class Config
23
23
  extend Mixlib::Config
24
-
24
+
25
25
  # from chef/config.rb, should maybe be moved to mixlib-config?
26
26
  def self.platform_specific_path(path)
27
27
  if RUBY_PLATFORM =~ /mswin|mingw|windows/
@@ -32,12 +32,12 @@ module Ohai
32
32
  end
33
33
  path
34
34
  end
35
-
36
35
 
37
- log_level :info
38
- log_location STDOUT
39
- plugin_path [ File.expand_path(File.join(File.dirname(__FILE__), 'plugins'))]
40
- disabled_plugins []
41
- hints_path [ platform_specific_path('/etc/chef/ohai/hints') ]
36
+
37
+ default :log_level, :info
38
+ default :log_location, STDERR
39
+ default :plugin_path, [ File.expand_path(File.join(File.dirname(__FILE__), 'plugins'))]
40
+ default :disabled_plugins, []
41
+ default(:hints_path) { [ platform_specific_path('/etc/chef/ohai/hints') ] }
42
42
  end
43
43
  end
@@ -1,6 +1,6 @@
1
1
  #
2
- # Author:: Adam Jacob (<adam@opscode.com>)
3
- # Copyright:: Copyright (c) 2008 Opscode, Inc.
2
+ # Author:: Serdar Sutay (<serdar@opscode.com>)
3
+ # Copyright:: Copyright (c) 2013 Opscode, Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -11,12 +11,12 @@
11
11
  #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
+ # implied.
15
16
  # See the License for the specific language governing permissions and
16
17
  # limitations under the License.
17
18
  #
18
19
 
19
- provides "fqdn", "hostname"
20
-
21
- hostname from("hostname -s")
22
- fqdn from("hostname")
20
+ require 'ohai/dsl/plugin'
21
+ require 'ohai/dsl/plugin/versionvi'
22
+ require 'ohai/dsl/plugin/versionvii'
@@ -0,0 +1,186 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Author:: Claire McQuin (<claire@opscode.com>)
4
+ # Copyright:: Copyright (c) 2008, 2013 Opscode, Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ require 'ohai/mixin/os'
22
+ require 'ohai/mixin/command'
23
+ require 'ohai/mixin/seconds_to_human'
24
+ require 'ohai/hints'
25
+
26
+ module Ohai
27
+
28
+ # For plugin namespacing
29
+ module NamedPlugin
30
+ def self.valid_name?(name)
31
+ name.is_a?(Symbol) && name.to_s.match(/^[^A-Z]|_/).nil?
32
+ end
33
+
34
+ # dealing with ruby 1.8
35
+ if Module.method(:const_defined?).arity == 1
36
+ def self.strict_const_defined?(const)
37
+ const_defined?(const)
38
+ end
39
+ else
40
+ def self.strict_const_defined?(const)
41
+ const_defined?(const, false)
42
+ end
43
+ end
44
+ end
45
+
46
+ def self.plugin(name, &block)
47
+ raise Ohai::Exceptions::InvalidPluginName, "#{name} is not a valid plugin name. A valid plugin name is a symbol which begins with a capital letter and contains no underscores" unless NamedPlugin.valid_name?(name)
48
+
49
+ plugin = nil
50
+
51
+ if NamedPlugin.strict_const_defined?(name)
52
+ plugin = NamedPlugin.const_get(name)
53
+ plugin.class_eval(&block)
54
+ else
55
+ klass = Class.new(DSL::Plugin::VersionVII, &block)
56
+ plugin = NamedPlugin.const_set(name, klass)
57
+ end
58
+
59
+ plugin
60
+ end
61
+
62
+ # Cross platform /dev/null to support testability
63
+ def self.dev_null
64
+ if RUBY_PLATFORM =~ /mswin|mingw|windows/
65
+ "NUL"
66
+ else
67
+ "/dev/null"
68
+ end
69
+ end
70
+
71
+ # Extracted abs_path to support testability:
72
+ # This method gets overridden at test time, to force the shell to check
73
+ # ohai/spec/unit/path/original/absolute/path/to/exe
74
+ def self.abs_path( abs_path )
75
+ abs_path
76
+ end
77
+
78
+ module DSL
79
+ class Plugin
80
+
81
+ include Ohai::Mixin::OS
82
+ include Ohai::Mixin::Command
83
+ include Ohai::Mixin::SecondsToHuman
84
+
85
+ attr_reader :data
86
+
87
+ def initialize(data)
88
+ @data = data
89
+ @has_run = false
90
+ end
91
+
92
+ def run
93
+ @has_run = true
94
+ run_plugin
95
+ end
96
+
97
+ def has_run?
98
+ @has_run
99
+ end
100
+
101
+ def reset!
102
+ @has_run = false
103
+ end
104
+
105
+ def [](key)
106
+ @data[key]
107
+ end
108
+
109
+ def []=(key, value)
110
+ @data[key] = value
111
+ end
112
+
113
+ def each(&block)
114
+ @data.each do |key, value|
115
+ block.call(key, value)
116
+ end
117
+ end
118
+
119
+ def attribute?(name)
120
+ @data.has_key?(name)
121
+ end
122
+
123
+ def set(name, *value)
124
+ set_attribute(name, *value)
125
+ end
126
+
127
+ def from(cmd)
128
+ status, stdout, stderr = run_command(:command => cmd)
129
+ return "" if stdout.nil? || stdout.empty?
130
+ stdout.strip
131
+ end
132
+
133
+ # Set the value equal to the stdout of the command, plus
134
+ # run through a regex - the first piece of match data is\
135
+ # the value.
136
+ def from_with_regex(cmd, *regex_list)
137
+ regex_list.flatten.each do |regex|
138
+ status, stdout, stderr = run_command(:command => cmd)
139
+ return "" if stdout.nil? || stdout.empty?
140
+ stdout.chomp!.strip
141
+ md = stdout.match(regex)
142
+ return md[1]
143
+ end
144
+ end
145
+
146
+ def set_attribute(name, *values)
147
+ @data[name] = Array18(*values)
148
+ @data[name]
149
+ end
150
+
151
+ def get_attribute(name)
152
+ @data[name]
153
+ end
154
+
155
+ def hint?(name)
156
+ Ohai::Hints.hint?(name)
157
+ end
158
+
159
+ # emulates the old plugin loading behavior
160
+ def safe_run
161
+ begin
162
+ self.run
163
+ rescue Ohai::Exceptions::Error => e
164
+ raise e
165
+ rescue => e
166
+ Ohai::Log.debug("Plugin #{self.name} threw #{e.inspect}")
167
+ e.backtrace.each { |line| Ohai::Log.debug( line )}
168
+ end
169
+ end
170
+
171
+ def method_missing(name, *args)
172
+ return get_attribute(name) if args.length == 0
173
+
174
+ set_attribute(name, *args)
175
+ end
176
+
177
+ private
178
+
179
+ def Array18(*args)
180
+ return nil if args.empty?
181
+ return args.first if args.length == 1
182
+ return *args
183
+ end
184
+ end
185
+ end
186
+ end
@@ -0,0 +1,62 @@
1
+ #
2
+ # Author:: Serdar Sutay (<serdar@opscode.com>)
3
+ # Copyright:: Copyright (c) 2013 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
+ # implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ module Ohai
21
+ module DSL
22
+ class Plugin
23
+ class VersionVI < Plugin
24
+ attr_reader :version
25
+ attr_reader :source
26
+
27
+ def initialize(controller, plugin_path, plugin_dir_path)
28
+ super(controller.data)
29
+ @controller = controller
30
+ @version = :version6
31
+ @source = plugin_path
32
+ @plugin_dir_path = plugin_dir_path
33
+ end
34
+
35
+ def name
36
+ # Ohai V6 doesn't have any name specification for plugins.
37
+ # So we are using the partial path to infer the name of the plugin
38
+ partial_path = Pathname.new(@source).relative_path_from(Pathname.new(@plugin_dir_path)).to_s
39
+ partial_path.chomp(".rb").gsub("/", "::")
40
+ end
41
+
42
+ def self.version
43
+ :version6
44
+ end
45
+
46
+ def self.collect_contents(contents)
47
+ define_method(:run_plugin) { self.instance_eval(contents) }
48
+ end
49
+
50
+ def provides(*paths)
51
+ Ohai::Log.debug("Skipping provides '#{paths.join(",")}' for plugin '#{name}'")
52
+ end
53
+
54
+ def require_plugin(plugin_ref)
55
+ @controller.require_plugin(plugin_ref)
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end
62
+