fauxhai 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+ }