fauxhai 0.0.1

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.
@@ -0,0 +1,8 @@
1
+ module Fauxhai
2
+ module Exception
3
+ class InvalidVersion < ArgumentError; end
4
+ class InvalidPlatform < ArgumentError; end
5
+
6
+ class NoDefaultVersion < StandardError; end
7
+ end
8
+ end
@@ -0,0 +1,78 @@
1
+ require 'digest/sha1'
2
+ require 'json'
3
+ require 'net/ssh'
4
+
5
+ module Fauxhai
6
+ class Fetcher
7
+ def initialize(options = {}, &override_attributes)
8
+ @options = options
9
+
10
+ if !force_cache_miss? && cached?
11
+ @data = cache
12
+ else
13
+ Net::SSH.start(host, user, @options) do |ssh|
14
+ @data = JSON.parse(ssh.exec!('ohai'))
15
+ end
16
+
17
+ # cache this data so we do not have to SSH again
18
+ File.open(cache_file, 'w+'){ |f| f.write(@data.to_json) }
19
+ end
20
+
21
+ yield(@data) if block_given?
22
+
23
+ if defined?(ChefSpec)
24
+ data = @data
25
+ ::ChefSpec::ChefRunner.send :define_method, :fake_ohai do |ohai|
26
+ data.each_pair do |attribute,value|
27
+ ohai[attribute] = value
28
+ end
29
+ end
30
+ end
31
+
32
+ @data
33
+ end
34
+
35
+ def cache
36
+ @cache ||= JSON.parse(File.read(cache_file))
37
+ end
38
+
39
+ def cached?
40
+ File.exists?(cache_file)
41
+ end
42
+
43
+ def cache_key
44
+ Digest::SHA2.hexdigest("#{user}@#{host}")
45
+ end
46
+
47
+ def cache_file
48
+ File.expand_path( File.join(Fauxhai.root, 'tmp', cache_key) )
49
+ end
50
+
51
+ def force_cache_miss?
52
+ @force_cache_miss ||= @options.delete(:force_cache_miss) || false
53
+ end
54
+
55
+ # Return the given `@data` attribute as a Ruby hash instead of a JSON object
56
+ #
57
+ # @return [Hash] the `@data` represented as a Ruby hash
58
+ def to_hash(*args)
59
+ @data.to_hash(*args)
60
+ end
61
+
62
+ def to_s
63
+ "#<Fauxhai::Fetcher @host=#{host}, @options=#{@options}>"
64
+ end
65
+
66
+ private
67
+ def host
68
+ @host ||= begin
69
+ raise ArgumentError, ':host is a required option for Fauxhai.fetch' unless @options[:host]
70
+ @options.delete(:host)
71
+ end
72
+ end
73
+
74
+ def user
75
+ @user ||= (@options.delete(:user) || ENV['USER'] || ENV['USERNAME']).chomp
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,12 @@
1
+ -----BEGIN DSA PRIVATE KEY-----
2
+ MIIBvAIBAAKBgQCRaPQSwMOFihLOYYIqZOZuNtxcwbA1wmUjHAvXGv6Jv9VWMzKi
3
+ JosRnt7iAg8zRVFsRaCyU0ADnHMs6OjF2YkKsFiQyxYuajkq+sNl3DMhPs3eMDsj
4
+ KA4lTOX4s5hvCtxc66rxo8AXB3AXTkJ2r0oo6I9/AzduSfc4a4neQWOFpQIVAPFe
5
+ sLIbnZcLOfcVXh6PfzAkGSiZAoGAaLxjyeJj9j+gSvJR5dDz25LcEG1paSdd6M+k
6
+ RCRQ1XFIu71dum1/wY0F/qIc2UM5Y3c9UqVGz3P/J7gOHWq2JFYfdXgYt9OxDfCH
7
+ cUR49ngYKf2RuMrISHmxt1h68CQ/8VI42dTEX8g09Xq5lYuC744z4Fg8S2Zz6TGk
8
+ ektZ84ECgYEAj0Vd6DCWslvlsZ8+N53HWsqPi3gnx35JoLPz9Z2epkKIKqmEHav+
9
+ 93G3hdfztVa4I4t3phoPniQchYryF5+RNg8hqxKzjNtrIqUYCeuf2NJrksNsH7OZ
10
+ ygPHZpqt4kTuwAGZxjxEGfAI0y8DhkU2ntp2LnzRnWH106BQBCmcXwoCFQDry5iu
11
+ Lv4xvy0I7w/bDtXIGj5RYA==
12
+ -----END DSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-dss AAAAB3NzaC1kc3MAAACBAJFo9BLAw4WKEs5hgipk5m423FzBsDXCZSMcC9ca/om/1VYzMqImixGe3uICDzNFUWxFoLJTQAOccyzo6MXZiQqwWJDLFi5qOSr6w2XcMyE+zd4wOyMoDiVM5fizmG8K3FzrqvGjwBcHcBdOQnavSijoj38DN25J9zhrid5BY4WlAAAAFQDxXrCyG52XCzn3FV4ej38wJBkomQAAAIBovGPJ4mP2P6BK8lHl0PPbktwQbWlpJ13oz6REJFDVcUi7vV26bX/BjQX+ohzZQzljdz1SpUbPc/8nuA4darYkVh91eBi307EN8IdxRHj2eBgp/ZG4yshIebG3WHrwJD/xUjjZ1MRfyDT1ermVi4LvjjPgWDxLZnPpMaR6S1nzgQAAAIEAj0Vd6DCWslvlsZ8+N53HWsqPi3gnx35JoLPz9Z2epkKIKqmEHav+93G3hdfztVa4I4t3phoPniQchYryF5+RNg8hqxKzjNtrIqUYCeuf2NJrksNsH7OZygPHZpqt4kTuwAGZxjxEGfAI0y8DhkU2ntp2LnzRnWH106BQBCmcXwo= fauxhai.local
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEArSwnqraq/x25zkXJMNbpHS4aXxqDjxYuf3rChKJM06qtYLIE
3
+ NlfHppso36tYul130bUgcZHZR7/xlnT+cAU7hNhvOTMwZFUkD75sEDfJV/yTDxBL
4
+ Sl5HjqNKPdvz4kpr2OHkbHRdJsONFL4O47RN3938Y+Pe5M4eXyrZKx5xeMfYFwm1
5
+ Xa9xalyX4IEeSCcAMU6Hq2yu8f7kUvu2LmSPT4qd7bdeJ7/Xs8F3Lhm/7b41jmSD
6
+ YhZfIs1SBSou7MX019PaeDYGpsUUu0w9mHdI0/JxKBfVGU7IF3CdZA0sezezcRXz
7
+ Xz+qwnThkUc+IFIV7bFIxv15MT3gsGewPVZzgwIDAQABAoIBAHgnSt6IH90jIuic
8
+ QxxAAT7d3i5elymQmnKZGp4sfmHe6q1M1t9dyIkw3wtSOB4W/CvlIL2sFLZT16wt
9
+ QN04xDNIeOOXQNxctsi1twUJsAn8lYy+IX9YKw4s/jYthupb+LhjA7q8gmWDCUB7
10
+ HpmfYOkTfStR0DWxTiF5+XSRiunhmz0qidpAA0Rv8Fz5B1PL7zI0yyV1oJwVATc8
11
+ f1wEl53TDel+udwJ5rnWihiJMehLqsAa68WkQIOig77Logrz+WybMQYpF3D3SqRL
12
+ cx0vc2cStbvnpcuG8UtAz61fi029rkWmAj6sa7BSgngFXphCezZ9dFDBtahc+Kzw
13
+ ncMsyAECgYEA0++mKDq2oMN+i7Nc1VcvmfwxtkWMK6y+qusVpEhJB/u6E0Adxdxa
14
+ wHuRhiD623lGHduzHxO8GqSKAFSR5KDOwcDFduiq/K9f2rHJE4eL3BHnm28/0T0e
15
+ 2VGYXebs4IPxuGjpNOAWPw/jo0tMSU+xr7ajELi3PU5DAD1SUiHJWaECgYEA0S1N
16
+ LC+1Fz9ZsmL0hQpwoGhvKeLmbHinSbskovczMtI5JUU4HLzfCjovMuct93PxOsMO
17
+ Gsy7J/v+dVpk8P4x58g2ZYjpF98r9lLkIs+wa7r7XAkHBqJ3SrrA2z4qm1bijr15
18
+ /HGRT8q33umESYBFfdrbiN2CMHrs/72dgSBbIqMCgYEAtN5e1RJWbZipVJv76+3+
19
+ J9H8sutjlppUFhWOYKd3/CIuSON9BTDrGj3akbdvnwI+fpjSowD6lVo6k9GYuJ8s
20
+ FFppqvMhiYg5q6/yRIJ3L5bwK8yjj/QzcY+bEvhSy8CO96xA6ekb0zHCOce3ERG8
21
+ OJMLUufxKZayw2+R45oF9kECgYEAsn3Yk3LmMT8ymADOrFP7RTW4XeKrQzY1cboK
22
+ ijEsdBpk/wOw3PzhygVaTzJry/MYjk7xUzcOIRFr0dHfvrD5/tGecUfBt0gNaHTV
23
+ DUtyPItif+eIIkYySwdPGAZVLxaV3r2aQSrbl13hRoq3Ak09fyZpHMH/nMTYRWYU
24
+ 56GngscCgYB3/vF1j+fxoqjhecMuhxNB3KDxuj3kW6ZBFC1yI3tsiHU+cTDBzdlG
25
+ fANBAUvFxMyd7FV8DxRKsfv+YX4U3oET2SB5xxVyZZ5km+X4nWdzJdEXl2JNiBCr
26
+ yDsMDWkmavqDJTZkngJnQ43pwdEOZlv8ePLj453YcVGACziizDlsyw==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtLCeqtqr/HbnORckw1ukdLhpfGoOPFi5/esKEokzTqq1gsgQ2V8emmyjfq1i6XXfRtSBxkdlHv/GWdP5wBTuE2G85MzBkVSQPvmwQN8lX/JMPEEtKXkeOo0o92/PiSmvY4eRsdF0mw40Uvg7jtE3f3fxj497kzh5fKtkrHnF4x9gXCbVdr3FqXJfggR5IJwAxToerbK7x/uRS+7YuZI9Pip3tt14nv9ezwXcuGb/tvjWOZINiFl8izVIFKi7sxfTX09p4NgamxRS7TD2Yd0jT8nEoF9UZTsgXcJ1kDSx7N7NxFfNfP6rCdOGRRz4gUhXtsUjG/XkxPeCwZ7A9VnOD fauxhai.local
@@ -0,0 +1,79 @@
1
+ require 'json'
2
+
3
+ module Fauxhai
4
+ class Mocker
5
+ def initialize(options = {}, &override_attributes)
6
+ @options = options
7
+
8
+ @data = fauxhai_data
9
+ yield(@data) if block_given?
10
+
11
+ if defined?(ChefSpec)
12
+ data = @data
13
+ ::ChefSpec::ChefRunner.send :define_method, :fake_ohai do |ohai|
14
+ data.each_pair do |attribute,value|
15
+ ohai[attribute] = value
16
+ end
17
+ end
18
+ end
19
+
20
+ @data
21
+ end
22
+
23
+ # Return the given `@data` attribute as a Ruby hash instead of a JSON object
24
+ #
25
+ # @return [Hash] the `@data` represented as a Ruby hash
26
+ def to_hash(*args)
27
+ @data.to_hash(*args)
28
+ end
29
+
30
+ private
31
+ def default_version
32
+ @default_version ||= lambda do
33
+ default_filepath = File.join(platform_path, 'default.json')
34
+
35
+ if File.exists?(default_filepath)
36
+ JSON.parse( File.read(default_filepath) )['version']
37
+ else
38
+ filename = Dir["#{platform_path}/*.json"].sort.pop
39
+
40
+ if filename
41
+ filename.split('/').last.gsub(/\.json/, '')
42
+ else
43
+ raise Fauxhai::Exception::NoDefaultVersion.new('Could not detect default version!')
44
+ end
45
+ end
46
+ end.call
47
+ end
48
+
49
+ def fauxhai_data
50
+ @fauxhai_data ||= lambda do
51
+ filepath = File.join(platform_path, "#{version}.json")
52
+
53
+ if File.exists?(filepath)
54
+ JSON.parse( File.read(filepath) )
55
+ else
56
+ raise Fauxhai::Exception::InvalidVersion.new("Could not find version #{@options[:version]} in any of the sources!")
57
+ end
58
+ end.call
59
+ end
60
+
61
+ def platform
62
+ @options[:platform] ||= 'chefspec'
63
+ end
64
+
65
+ def platform_path
66
+ @platform_path ||= lambda do
67
+ if path = File.join(Fauxhai.root, 'lib', 'fauxhai', 'platforms', platform)
68
+ path
69
+ else
70
+ raise Fauxhai::Exception::InvalidPlatform.new('Platform not found!')
71
+ end
72
+ end.call
73
+ end
74
+
75
+ def version
76
+ @version ||= @options[:version] || default_version
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,404 @@
1
+ {
2
+ "kernel": {
3
+ "name": "Linux",
4
+ "release": "2.6.32-71.el6.x86_64",
5
+ "version": "#1 SMP Fri May 20 03:51:51 BST 2011",
6
+ "machine": "x86_64",
7
+ "modules": {
8
+ "vboxsf": {
9
+ "size": "36683",
10
+ "refcount": "1"
11
+ },
12
+ "8021q": {
13
+ "size": "24221",
14
+ "refcount": "0"
15
+ },
16
+ "garp": {
17
+ "size": "7310",
18
+ "refcount": "1"
19
+ },
20
+ "stp": {
21
+ "size": "2107",
22
+ "refcount": "1"
23
+ },
24
+ "llc": {
25
+ "size": "5608",
26
+ "refcount": "2"
27
+ },
28
+ "fcoe": {
29
+ "size": "21769",
30
+ "refcount": "0"
31
+ },
32
+ "libfcoe": {
33
+ "size": "16181",
34
+ "refcount": "1"
35
+ },
36
+ "libfc": {
37
+ "size": "93401",
38
+ "refcount": "2"
39
+ },
40
+ "scsi_transport_fc": {
41
+ "size": "50893",
42
+ "refcount": "2"
43
+ },
44
+ "scsi_tgt": {
45
+ "size": "12107",
46
+ "refcount": "1"
47
+ },
48
+ "sunrpc": {
49
+ "size": "241630",
50
+ "refcount": "1"
51
+ },
52
+ "ipv6": {
53
+ "size": "321209",
54
+ "refcount": "0"
55
+ },
56
+ "ppdev": {
57
+ "size": "8695",
58
+ "refcount": "0"
59
+ },
60
+ "parport_pc": {
61
+ "size": "22944",
62
+ "refcount": "0"
63
+ },
64
+ "parport": {
65
+ "size": "37327",
66
+ "refcount": "2"
67
+ },
68
+ "vboxguest": {
69
+ "size": "237840",
70
+ "refcount": "2"
71
+ },
72
+ "i2c_piix4": {
73
+ "size": "12574",
74
+ "refcount": "0"
75
+ },
76
+ "i2c_core": {
77
+ "size": "31274",
78
+ "refcount": "1"
79
+ },
80
+ "sg": {
81
+ "size": "30186",
82
+ "refcount": "0"
83
+ },
84
+ "ext4": {
85
+ "size": "353979",
86
+ "refcount": "2"
87
+ },
88
+ "mbcache": {
89
+ "size": "7918",
90
+ "refcount": "1"
91
+ },
92
+ "jbd2": {
93
+ "size": "89033",
94
+ "refcount": "1"
95
+ },
96
+ "sd_mod": {
97
+ "size": "37221",
98
+ "refcount": "3"
99
+ },
100
+ "crc_t10dif": {
101
+ "size": "1507",
102
+ "refcount": "1"
103
+ },
104
+ "sr_mod": {
105
+ "size": "16162",
106
+ "refcount": "0"
107
+ },
108
+ "cdrom": {
109
+ "size": "39769",
110
+ "refcount": "1"
111
+ },
112
+ "ahci": {
113
+ "size": "39105",
114
+ "refcount": "2"
115
+ },
116
+ "e1000": {
117
+ "size": "107170",
118
+ "refcount": "0"
119
+ },
120
+ "pata_acpi": {
121
+ "size": "3667",
122
+ "refcount": "0"
123
+ },
124
+ "ata_generic": {
125
+ "size": "3611",
126
+ "refcount": "0"
127
+ },
128
+ "ata_piix": {
129
+ "size": "22588",
130
+ "refcount": "0"
131
+ },
132
+ "dm_mod": {
133
+ "size": "76856",
134
+ "refcount": "6"
135
+ }
136
+ },
137
+ "os": "GNU/Linux"
138
+ },
139
+ "os": "linux",
140
+ "os_version": "2.6.32-71.el6.x86_64",
141
+ "ohai_time": 1341249933.6599944,
142
+ "command": {
143
+ "ps": "ps -ef"
144
+ },
145
+ "platform": "centos",
146
+ "platform_version": "6.0",
147
+ "dmi": {
148
+ },
149
+ "filesystem": {
150
+ "/dev/mapper/VolGroup-lv_root": {
151
+ "kb_size": "39776876",
152
+ "kb_used": "1362884",
153
+ "kb_available": "36393436",
154
+ "percent_used": "4%",
155
+ "mount": "/",
156
+ "fs_type": "ext4",
157
+ "mount_options": [
158
+ "rw"
159
+ ]
160
+ },
161
+ "tmpfs": {
162
+ "kb_size": "1961796",
163
+ "kb_used": "0",
164
+ "kb_available": "1961796",
165
+ "percent_used": "0%",
166
+ "mount": "/dev/shm",
167
+ "fs_type": "tmpfs",
168
+ "mount_options": [
169
+ "rw",
170
+ "rootcontext=\"system_u:object_r:tmpfs_t:s0\""
171
+ ]
172
+ },
173
+ "/dev/sda1": {
174
+ "kb_size": "495844",
175
+ "kb_used": "35739",
176
+ "kb_available": "434505",
177
+ "percent_used": "8%",
178
+ "mount": "/boot",
179
+ "fs_type": "ext4",
180
+ "mount_options": [
181
+ "rw"
182
+ ]
183
+ },
184
+ "v-root": {
185
+ "kb_size": "731423676",
186
+ "kb_used": "32065252",
187
+ "kb_available": "699358424",
188
+ "percent_used": "5%",
189
+ "mount": "/vagrant",
190
+ "fs_type": "vboxsf",
191
+ "mount_options": [
192
+ "uid=500",
193
+ "gid=503",
194
+ "rw"
195
+ ]
196
+ },
197
+ "proc": {
198
+ "mount": "/proc",
199
+ "fs_type": "proc",
200
+ "mount_options": [
201
+ "rw"
202
+ ]
203
+ },
204
+ "sysfs": {
205
+ "mount": "/sys",
206
+ "fs_type": "sysfs",
207
+ "mount_options": [
208
+ "rw"
209
+ ]
210
+ },
211
+ "devpts": {
212
+ "mount": "/dev/pts",
213
+ "fs_type": "devpts",
214
+ "mount_options": [
215
+ "rw",
216
+ "gid=5",
217
+ "mode=620"
218
+ ]
219
+ },
220
+ "none": {
221
+ "mount": "/proc/sys/fs/binfmt_misc",
222
+ "fs_type": "binfmt_misc",
223
+ "mount_options": [
224
+ "rw"
225
+ ]
226
+ },
227
+ "sunrpc": {
228
+ "mount": "/var/lib/nfs/rpc_pipefs",
229
+ "fs_type": "rpc_pipefs",
230
+ "mount_options": [
231
+ "rw"
232
+ ]
233
+ },
234
+ "rootfs": {
235
+ "mount": "/",
236
+ "fs_type": "rootfs",
237
+ "mount_options": [
238
+ "rw"
239
+ ]
240
+ },
241
+ "/proc": {
242
+ "mount": "/proc",
243
+ "fs_type": "proc",
244
+ "mount_options": [
245
+ "rw",
246
+ "relatime"
247
+ ]
248
+ },
249
+ "/sys": {
250
+ "mount": "/sys",
251
+ "fs_type": "sysfs",
252
+ "mount_options": [
253
+ "rw",
254
+ "seclabel",
255
+ "relatime"
256
+ ]
257
+ },
258
+ "udev": {
259
+ "mount": "/dev",
260
+ "fs_type": "devtmpfs",
261
+ "mount_options": [
262
+ "rw",
263
+ "seclabel",
264
+ "relatime",
265
+ "size=1951876k",
266
+ "nr_inodes=487969",
267
+ "mode=755"
268
+ ]
269
+ },
270
+ "/proc/bus/usb": {
271
+ "mount": "/proc/bus/usb",
272
+ "fs_type": "usbfs",
273
+ "mount_options": [
274
+ "rw",
275
+ "relatime"
276
+ ]
277
+ }
278
+ },
279
+ "languages": {
280
+ "ruby": {
281
+ "platform": "x86_64-linux",
282
+ "version": "1.9.2",
283
+ "release_date": "2011-07-09",
284
+ "target": "x86_64-unknown-linux-gnu",
285
+ "target_cpu": "x86_64",
286
+ "target_vendor": "unknown",
287
+ "target_os": "linux",
288
+ "host": "x86_64-unknown-linux-gnu",
289
+ "host_cpu": "x86_64",
290
+ "host_os": "linux-gnu",
291
+ "host_vendor": "unknown",
292
+ "bin_dir": "/usr/local/bin",
293
+ "ruby_bin": "/usr/local/bin/ruby",
294
+ "gems_dir": "/usr/local/gems",
295
+ "gem_bin": "/usr/local/bin/gem"
296
+ }
297
+ },
298
+ "chef_packages": {
299
+ "chef": {
300
+ "version": "10.12.0",
301
+ "chef_root": "/usr/local/gems/chef-10.12.0/lib"
302
+ },
303
+ "ohai": {
304
+ "version": "0.6.4",
305
+ "ohai_root": "/usr/local/gems/ohai-0.6.4/lib/ohai"
306
+ }
307
+ },
308
+ "counters": {
309
+ "network": {
310
+ "interfaces": {
311
+ "eth0": {
312
+ "rx": {
313
+ "bytes": "0",
314
+ "packets": "0",
315
+ "errors": "0",
316
+ "drop": 0,
317
+ "overrun": 0,
318
+ "frame": 0,
319
+ "compressed": 0,
320
+ "multicast": 0
321
+ },
322
+ "tx": {
323
+ "bytes": "342",
324
+ "packets": "0",
325
+ "errors": "0",
326
+ "drop": 0,
327
+ "overrun": 0,
328
+ "collisions": "0",
329
+ "carrier": 0,
330
+ "compressed": 0
331
+ }
332
+ }
333
+ }
334
+ }
335
+ },
336
+ "current_user": "fauxhai",
337
+ "domain": "local",
338
+ "etc": {
339
+ "passwd": {
340
+ "fauxhai": {
341
+ "dir": "/home/fauxhai",
342
+ "gid": 0,
343
+ "uid": 0,
344
+ "shell": "/bin/bash",
345
+ "gecos": "Fauxhai"
346
+ }
347
+ },
348
+ "group": {
349
+ "fauxhai": {
350
+ "gid": 0,
351
+ "members": [
352
+ "fauxhai"
353
+ ]
354
+ }
355
+ }
356
+ },
357
+ "hostname": "Fauxhai",
358
+ "fqdn": "fauxhai.local",
359
+ "ipaddress": "10.0.0.2",
360
+ "keys": {
361
+ "ssh": {
362
+ "host_dsa_public": "ssh-dss AAAAB3NzaC1kc3MAAACBAJFo9BLAw4WKEs5hgipk5m423FzBsDXCZSMcC9ca/om/1VYzMqImixGe3uICDzNFUWxFoLJTQAOccyzo6MXZiQqwWJDLFi5qOSr6w2XcMyE+zd4wOyMoDiVM5fizmG8K3FzrqvGjwBcHcBdOQnavSijoj38DN25J9zhrid5BY4WlAAAAFQDxXrCyG52XCzn3FV4ej38wJBkomQAAAIBovGPJ4mP2P6BK8lHl0PPbktwQbWlpJ13oz6REJFDVcUi7vV26bX/BjQX+ohzZQzljdz1SpUbPc/8nuA4darYkVh91eBi307EN8IdxRHj2eBgp/ZG4yshIebG3WHrwJD/xUjjZ1MRfyDT1ermVi4LvjjPgWDxLZnPpMaR6S1nzgQAAAIEAj0Vd6DCWslvlsZ8+N53HWsqPi3gnx35JoLPz9Z2epkKIKqmEHav+93G3hdfztVa4I4t3phoPniQchYryF5+RNg8hqxKzjNtrIqUYCeuf2NJrksNsH7OZygPHZpqt4kTuwAGZxjxEGfAI0y8DhkU2ntp2LnzRnWH106BQBCmcXwo= fauxhai.local",
363
+ "host_rsa_public": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtLCeqtqr/HbnORckw1ukdLhpfGoOPFi5/esKEokzTqq1gsgQ2V8emmyjfq1i6XXfRtSBxkdlHv/GWdP5wBTuE2G85MzBkVSQPvmwQN8lX/JMPEEtKXkeOo0o92/PiSmvY4eRsdF0mw40Uvg7jtE3f3fxj497kzh5fKtkrHnF4x9gXCbVdr3FqXJfggR5IJwAxToerbK7x/uRS+7YuZI9Pip3tt14nv9ezwXcuGb/tvjWOZINiFl8izVIFKi7sxfTX09p4NgamxRS7TD2Yd0jT8nEoF9UZTsgXcJ1kDSx7N7NxFfNfP6rCdOGRRz4gUhXtsUjG/XkxPeCwZ7A9VnOD fauxhai.local"
364
+ }
365
+ },
366
+ "macaddress": "11:11:11:11:11:11",
367
+ "network": {
368
+ "default_gateway": "10.0.0.1",
369
+ "default_interface": "eth0",
370
+ "eth0": {
371
+ "addresses": {
372
+ "10.0.0.2": {
373
+ "broadcast": "10.0.0.255",
374
+ "family": "inet",
375
+ "netmask": "255.255.255.0",
376
+ "prefixlen": "23",
377
+ "scope": "Global"
378
+ }
379
+ },
380
+ "arp": {
381
+ "10.0.0.1": "fe:ff:ff:ff:ff:ff"
382
+ },
383
+ "encapsulation": "Ethernet",
384
+ "flags": [
385
+ "BROADCAST",
386
+ "MULTICAST",
387
+ "UP",
388
+ "LOWER_UP"
389
+ ],
390
+ "mtu": "1500",
391
+ "number": "0",
392
+ "routes": {
393
+ "10.0.0.0/255": {
394
+ "scope": "link",
395
+ "src": "10.0.0.2"
396
+ }
397
+ },
398
+ "state": "up",
399
+ "type": "eth"
400
+ }
401
+ },
402
+ "uptime": "30 days 15 hours 07 minutes 30 seconds",
403
+ "uptime_seconds": 2646450
404
+ }