manageiq-smartstate 0.5.9 → 0.7.0
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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +34 -35
- data/.rubocop.yml +3 -3
- data/.rubocop_cc.yml +3 -4
- data/.rubocop_local.yml +1 -1
- data/.travis.yml +2 -3
- data/lib/MiqVm/MiqRhevmVm.rb +1 -1
- data/lib/MiqVm/MiqVm.rb +0 -140
- data/lib/OpenStackExtract/MiqOpenStackVm/MiqOpenStackImage.rb +0 -1
- data/lib/OpenStackExtract/MiqOpenStackVm/MiqOpenStackInstance.rb +0 -1
- data/lib/VolumeManager/MiqLdm.rb +1 -1
- data/lib/db/MiqSqlite/MiqSqlite3Cell.rb +2 -3
- data/lib/disk/modules/MSCommon.rb +3 -1
- data/lib/disk/modules/VhdxDisk.rb +3 -1
- data/lib/fs/MiqMountManager.rb +2 -29
- data/lib/fs/VimDatastoreFS/VimDatastoreFS.rb +1 -6
- data/lib/fs/ext3/superblock.rb +1 -1
- data/lib/fs/ext4/superblock.rb +2 -2
- data/lib/fs/fat32/directory_entry.rb +60 -60
- data/lib/fs/iso9660/boot_sector.rb +3 -2
- data/lib/fs/iso9660/directory_entry.rb +3 -2
- data/lib/fs/iso9660/rock_ridge.rb +3 -1
- data/lib/fs/modules/LinuxMount.rb +3 -3
- data/lib/fs/ntfs/attrib_attribute_list.rb +3 -1
- data/lib/fs/ntfs/attrib_file_name.rb +3 -1
- data/lib/fs/ntfs/attrib_header.rb +3 -1
- data/lib/fs/ntfs/attrib_index_root.rb +3 -1
- data/lib/fs/ntfs/attrib_object_id.rb +1 -1
- data/lib/fs/ntfs/attrib_volume_name.rb +3 -1
- data/lib/fs/xfs/allocation_group.rb +1 -1
- data/lib/fs/xfs/bmap_btree_block.rb +1 -1
- data/lib/fs/xfs/superblock.rb +1 -1
- data/lib/manageiq/smartstate/util.rb +18 -0
- data/lib/manageiq/smartstate/version.rb +1 -1
- data/lib/metadata/MIQExtract/MIQExtract.rb +2 -3
- data/lib/metadata/VmConfig/GetNativeCfg.rb +2 -4
- data/lib/metadata/VmConfig/VmConfig.rb +7 -5
- data/lib/metadata/VmConfig/cfgConfig.rb +4 -0
- data/lib/metadata/VmConfig/xmlConfig.rb +3 -3
- data/lib/metadata/linux/MiqRpmPackages.rb +3 -1
- data/lib/metadata/util/md5deep.rb +4 -2
- data/lib/metadata/util/win32/Win32Accounts.rb +3 -0
- data/lib/metadata/util/win32/Win32EventLog.rb +5 -3
- data/lib/metadata/util/win32/Win32Software.rb +5 -3
- data/lib/metadata/util/win32/decode.rb +0 -0
- data/lib/metadata/util/win32/fleece_hives.rb +0 -8
- data/lib/metadata/util/win32/ms-registry.rb +3 -1
- data/lib/metadata/util/win32/peheader.rb +7 -8
- data/lib/miq_unicode.rb +45 -0
- data/manageiq-smartstate.gemspec +9 -7
- metadata +76 -33
- data/lib/fs/MetakitFS/MetakitFS.rb +0 -530
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2eed9833b4418d9405995117c01ae36ec8d9dbd8f59c2a71a3b1695fd1845eca
|
4
|
+
data.tar.gz: 014abce3c3c7a22594ffe9877046b1a390b0941e58e4052b3eb29525c80bd6fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 417c6b7efe6f1ebdf11f037beb537f9fd48f1654e5985699a6b6c2d29342ea7fd22b59df97b48ae4ba09e1d6c75624c198add8d988b6387d071084ae48b0aafb
|
7
|
+
data.tar.gz: 35335b08093b49f9fb4e57aeba97b2c89d6c01ead9de3cb854086f84b0a70b59f90a178f1aaa44230dd1feea24c70acefa0546f43e2b65a279b8bcd59b0d1146
|
data/.codeclimate.yml
CHANGED
@@ -1,17 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
-
|
9
|
-
|
10
|
-
-
|
11
|
-
|
12
|
-
-
|
13
|
-
|
14
|
-
|
1
|
+
checks:
|
2
|
+
method-complexity:
|
3
|
+
enabled: true
|
4
|
+
config:
|
5
|
+
threshold: 8
|
6
|
+
prepare:
|
7
|
+
fetch:
|
8
|
+
- url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/.rubocop_base.yml
|
9
|
+
path: ".rubocop_base.yml"
|
10
|
+
- url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/.rubocop_cc_base.yml
|
11
|
+
path: ".rubocop_cc_base.yml"
|
12
|
+
- url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/styles/base.yml
|
13
|
+
path: styles/base.yml
|
14
|
+
- url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/styles/cc_base.yml
|
15
|
+
path: styles/cc_base.yml
|
16
|
+
plugins:
|
17
|
+
rubocop:
|
18
|
+
enabled: true
|
19
|
+
config: ".rubocop_cc.yml"
|
20
|
+
channel: rubocop-0-82
|
15
21
|
brakeman:
|
16
22
|
enabled: false
|
17
23
|
bundler-audit:
|
@@ -25,7 +31,7 @@ engines:
|
|
25
31
|
ruby:
|
26
32
|
mass_threshold: 25
|
27
33
|
count_threshold: 5
|
28
|
-
javascript:
|
34
|
+
javascript:
|
29
35
|
eslint:
|
30
36
|
enabled: false
|
31
37
|
channel: eslint-3
|
@@ -33,23 +39,16 @@ engines:
|
|
33
39
|
enabled: false
|
34
40
|
markdownlint:
|
35
41
|
enabled: false
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
- url: https://raw.githubusercontent.com/ManageIQ/guides/master/.rubocop_cc_base.yml
|
50
|
-
path: ".rubocop_cc_base.yml"
|
51
|
-
ratings:
|
52
|
-
paths:
|
53
|
-
- Gemfile.lock
|
54
|
-
- "**.rake"
|
55
|
-
- "**.rb"
|
42
|
+
exclude_patterns:
|
43
|
+
- ".git/"
|
44
|
+
- "**.xml"
|
45
|
+
- "**.yaml"
|
46
|
+
- "**.yml"
|
47
|
+
- lib/metadata/linux/test/Packages
|
48
|
+
- lib/metadata/linux/test/tc_LinuxUtils.rb
|
49
|
+
- locale/
|
50
|
+
- spec/
|
51
|
+
- test/
|
52
|
+
- tools/
|
53
|
+
- tmp/
|
54
|
+
version: '2'
|
data/.rubocop.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
inherit_from:
|
2
|
-
-
|
3
|
-
|
4
|
-
- .
|
2
|
+
- ".rubocop_local.yml"
|
3
|
+
inherit_gem:
|
4
|
+
manageiq-style: ".rubocop_base.yml"
|
data/.rubocop_cc.yml
CHANGED
data/.rubocop_local.yml
CHANGED
data/.travis.yml
CHANGED
data/lib/MiqVm/MiqRhevmVm.rb
CHANGED
@@ -42,7 +42,7 @@ class MiqRhevmVm < MiqVm
|
|
42
42
|
disks = @rhevm.collect_vm_disks(@rhevmVm)
|
43
43
|
disks.each_with_index do |disk, idx|
|
44
44
|
$log.debug "MiqRhevmVm#getCfg: disk = #{disk.inspect}"
|
45
|
-
storage_domain = disk.storage_domains
|
45
|
+
storage_domain = disk.storage_domains&.first
|
46
46
|
if storage_domain.nil?
|
47
47
|
$log.info("Disk <#{disk.name}> is skipped due to unassigned storage domain")
|
48
48
|
next
|
data/lib/MiqVm/MiqVm.rb
CHANGED
@@ -205,143 +205,3 @@ class MiqVm
|
|
205
205
|
(xml)
|
206
206
|
end
|
207
207
|
end # class MiqVm
|
208
|
-
|
209
|
-
if __FILE__ == $0
|
210
|
-
require 'metadata/util/win32/boot_info_win'
|
211
|
-
|
212
|
-
# vmDir = File.join(ENV.fetch("HOME", '.'), 'VMs')
|
213
|
-
vmDir = "/volumes/WDpassport/Virtual Machines"
|
214
|
-
puts "vmDir = #{vmDir}"
|
215
|
-
|
216
|
-
targetLv = "rpolv2"
|
217
|
-
rootLv = "LogVol00"
|
218
|
-
|
219
|
-
require 'logger'
|
220
|
-
$log = Logger.new(STDERR)
|
221
|
-
$log.level = Logger::DEBUG
|
222
|
-
|
223
|
-
#
|
224
|
-
# *** Test start
|
225
|
-
#
|
226
|
-
|
227
|
-
# vmCfg = File.join(vmDir, "cacheguard/cacheguard.vmx")
|
228
|
-
# vmCfg = File.join(vmDir, "Red Hat Linux.vmwarevm/Red Hat Linux.vmx")
|
229
|
-
# vmCfg = File.join(vmDir, "MIQ Server Appliance - Ubuntu MD - small/MIQ Server Appliance - Ubuntu.vmx")
|
230
|
-
# vmCfg = File.join(vmDir, "winxpDev.vmwarevm/winxpDev.vmx")
|
231
|
-
vmCfg = File.join(vmDir, "Win2K_persistent/Windows 2000 Professional.vmx")
|
232
|
-
# vmCfg = File.join(vmDir, "Win2K_non_persistent/Windows 2000 Professional.vmx")
|
233
|
-
puts "VM config file: #{vmCfg}"
|
234
|
-
|
235
|
-
ost = OpenStruct.new
|
236
|
-
ost.openParent = true
|
237
|
-
|
238
|
-
vm = MiqVm.new(vmCfg, ost)
|
239
|
-
|
240
|
-
puts "\n*** Disk Files:"
|
241
|
-
vm.vmConfig.getDiskFileHash.each do |k, v|
|
242
|
-
puts "\t#{k}\t#{v}"
|
243
|
-
end
|
244
|
-
|
245
|
-
puts "\n*** configHash:"
|
246
|
-
vm.vmConfig.getHash.each do |k, v|
|
247
|
-
puts "\t#{k} => #{v}"
|
248
|
-
end
|
249
|
-
|
250
|
-
tlv = nil
|
251
|
-
rlv = nil
|
252
|
-
puts "\n*** Visible Volumes:"
|
253
|
-
vm.volumeManager.visibleVolumes.each do |vv|
|
254
|
-
puts "\tDisk type: #{vv.diskType}"
|
255
|
-
puts "\tDisk sig: #{vv.diskSig}"
|
256
|
-
puts "\tStart LBA: #{vv.lbaStart}"
|
257
|
-
if vv.respond_to?(:logicalVolume)
|
258
|
-
puts "\t\tLV name: #{vv.logicalVolume.lvName}"
|
259
|
-
puts "\t\tLV UUID: #{vv.logicalVolume.lvId}"
|
260
|
-
tlv = vv if vv.logicalVolume.lvName == targetLv
|
261
|
-
rlv = vv if vv.logicalVolume.lvName == rootLv
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
# raise "#{targetLv} not found" if !tlv
|
266
|
-
#
|
267
|
-
# tlv.seek(0, IO::SEEK_SET)
|
268
|
-
# rs = tlv.read(2040)
|
269
|
-
# puts "\n***** START *****"
|
270
|
-
# puts rs
|
271
|
-
# puts "****** END ******"
|
272
|
-
#
|
273
|
-
# tlv.seek(2048*512*5119, IO::SEEK_SET)
|
274
|
-
# rs = tlv.read(2040)
|
275
|
-
# puts "\n***** START *****"
|
276
|
-
# puts rs
|
277
|
-
# puts "****** END ******"
|
278
|
-
#
|
279
|
-
# raise "#{rootLv} not found" if !rlv
|
280
|
-
#
|
281
|
-
# puts "\n*** Mounting #{rootLv}"
|
282
|
-
# rfs = MiqFS.getFS(rlv)
|
283
|
-
# puts "\tFS Type: #{rfs.fsType}"
|
284
|
-
# puts "\t*** Root-level files and directories:"
|
285
|
-
# rfs.dirForeach("/") { |de| puts "\t\t#{de}" }
|
286
|
-
|
287
|
-
puts "\n***** Detected Guest OSs:"
|
288
|
-
raise "No OSs detected" if vm.rootTrees.length == 0
|
289
|
-
vm.rootTrees.each do |rt|
|
290
|
-
puts "\t#{rt.guestOS}"
|
291
|
-
if rt.guestOS == "Linux"
|
292
|
-
puts "\n\t\t*** /etc/fstab contents:"
|
293
|
-
rt.fileOpen("/etc/fstab", &:read).each_line do |fstl|
|
294
|
-
next if fstl =~ /^#.*$/
|
295
|
-
puts "\t\t\t#{fstl}"
|
296
|
-
end
|
297
|
-
end
|
298
|
-
end
|
299
|
-
|
300
|
-
vm.rootTrees.each do |rt|
|
301
|
-
if rt.guestOS == "Linux"
|
302
|
-
# tdirArr = [ "/", "/boot", "/var/www/miq", "/var/www/miq/vmdb/log", "/var/lib/mysql" ]
|
303
|
-
tdirArr = ["/", "/boot", "/etc/init.d", "/etc/rc.d/init.d", "/etc/rc.d/rc0.d"]
|
304
|
-
|
305
|
-
tdirArr.each do |tdir|
|
306
|
-
begin
|
307
|
-
puts "\n*** Listing #{tdir} directory (1):"
|
308
|
-
rt.dirForeach(tdir) { |de| puts "\t\t#{de}" }
|
309
|
-
puts "*** end"
|
310
|
-
|
311
|
-
puts "\n*** Listing #{tdir} directory (2):"
|
312
|
-
rt.chdir(tdir)
|
313
|
-
rt.dirForeach { |de| puts "\t\t#{de}" }
|
314
|
-
puts "*** end"
|
315
|
-
rescue => err
|
316
|
-
puts "*** #{err}"
|
317
|
-
end
|
318
|
-
end
|
319
|
-
|
320
|
-
# lf = rt.fileOpen("/etc/rc0.d/S01halt")
|
321
|
-
# puts "\n*** Contents of /etc/rc0.d/S01halt:"
|
322
|
-
# puts lf.read
|
323
|
-
# puts "*** END"
|
324
|
-
# lf.close
|
325
|
-
#
|
326
|
-
# lfn = "/etc/rc0.d/S01halt"
|
327
|
-
# puts "Is #{lfn} a symbolic link? #{rt.fileSymLink?(lfn)}"
|
328
|
-
# puts "#{lfn} => #{rt.getLinkPath(lfn)}"
|
329
|
-
else # Windows
|
330
|
-
tdirArr = ["c:/", "e:/", "e:/testE2", "f:/"]
|
331
|
-
|
332
|
-
tdirArr.each do |tdir|
|
333
|
-
puts "\n*** Listing #{tdir} directory (1):"
|
334
|
-
rt.dirForeach(tdir) { |de| puts "\t\t#{de}" }
|
335
|
-
puts "*** end"
|
336
|
-
|
337
|
-
puts "\n*** Listing #{tdir} directory (2):"
|
338
|
-
rt.chdir(tdir)
|
339
|
-
rt.dirForeach { |de| puts "\t\t#{de}" }
|
340
|
-
puts "*** end"
|
341
|
-
end
|
342
|
-
end
|
343
|
-
end
|
344
|
-
|
345
|
-
vm.unmount
|
346
|
-
puts "...done"
|
347
|
-
end
|
data/lib/VolumeManager/MiqLdm.rb
CHANGED
@@ -5,7 +5,6 @@ require 'enumerator'
|
|
5
5
|
|
6
6
|
require 'binary_struct'
|
7
7
|
require_relative 'MiqSqlite3Util'
|
8
|
-
require_relative 'MiqSqlite3Page'
|
9
8
|
|
10
9
|
module MiqSqlite3DB
|
11
10
|
class MiqSqlite3Cell
|
@@ -150,8 +149,8 @@ module MiqSqlite3DB
|
|
150
149
|
when 2 then return 2, 'integer'
|
151
150
|
when 3 then return 3, 'integer'
|
152
151
|
when 4 then return 4, 'integer'
|
153
|
-
when
|
154
|
-
when
|
152
|
+
when 5 then return 6, 'integer'
|
153
|
+
when 6 then return 8, 'integer'
|
155
154
|
when 7 then return 8, 'float'
|
156
155
|
when 8 then return 0, 'false'
|
157
156
|
when 9 then return 0, 'true'
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'disk/modules/MiqLargeFile'
|
2
|
-
require '
|
2
|
+
require 'miq_unicode'
|
3
3
|
require 'binary_struct'
|
4
4
|
require 'memory_buffer'
|
5
5
|
require 'Scvmm/miq_hyperv_disk'
|
6
6
|
|
7
7
|
module MSCommon
|
8
|
+
using ManageIQ::UnicodeString
|
9
|
+
|
8
10
|
# NOTE: All values are stored in network byte order.
|
9
11
|
|
10
12
|
FOOTER = BinaryStruct.new([
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: US-ASCII
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'miq_unicode'
|
4
4
|
require 'binary_struct'
|
5
5
|
require 'disk/MiqDisk'
|
6
6
|
require 'memory_buffer'
|
@@ -8,6 +8,8 @@ require 'disk/modules/MiqLargeFile'
|
|
8
8
|
require 'disk/modules/vhdx_bat_entry'
|
9
9
|
|
10
10
|
module VhdxDisk
|
11
|
+
using ManageIQ::UnicodeString
|
12
|
+
|
11
13
|
# NOTE: All values are stored in network byte order.
|
12
14
|
|
13
15
|
VHDX_FILE_IDENTIFIER = BinaryStruct.new([
|
data/lib/fs/MiqMountManager.rb
CHANGED
@@ -8,6 +8,7 @@ class MiqMountManager < MiqFS
|
|
8
8
|
def self.mountVolumes(volMgr, vmCfg, ost = nil)
|
9
9
|
rootTrees = []
|
10
10
|
noFsVolumes = []
|
11
|
+
|
11
12
|
volMgr.visibleVolumes.each do |dobj|
|
12
13
|
$log.debug("MiqMountManager.mountVolumes >> fileName=#{dobj.dInfo.fileName}, partition=#{dobj.partNum}") if $log
|
13
14
|
fs = MiqFS.getFS(dobj)
|
@@ -20,10 +21,7 @@ class MiqMountManager < MiqFS
|
|
20
21
|
rootTrees << new(rsm, dobj, volMgr, vmCfg, ost)
|
21
22
|
end
|
22
23
|
end
|
23
|
-
|
24
|
-
require 'MetakitFS'
|
25
|
-
rootTrees.each { |rt| rt.findPayload(noFsVolumes) } unless noFsVolumes.empty?
|
26
|
-
end
|
24
|
+
|
27
25
|
rootTrees
|
28
26
|
end # def self.mountVolumes
|
29
27
|
|
@@ -41,31 +39,6 @@ class MiqMountManager < MiqFS
|
|
41
39
|
super(rootModule, rootVolume)
|
42
40
|
end # def initialize
|
43
41
|
|
44
|
-
def findPayload(noFsVolumes)
|
45
|
-
$log.debug "MiqMountManager.findPayload: searching for payloads:" if $log
|
46
|
-
noFsVolumes.each do |v|
|
47
|
-
next unless v.respond_to?(:devFile)
|
48
|
-
if v.devFile
|
49
|
-
$log.debug "\tMiqMountManager.findPayload: devFile = #{v.devFile}" if $log
|
50
|
-
v.mkfile = v.devFile
|
51
|
-
unless MetakitFS.supported?(v)
|
52
|
-
$log.debug "\tMiqMountManager.findPayload: devFile = #{v.devFile} not mkfs, skipping" if $log
|
53
|
-
v.mkfile = nil
|
54
|
-
next
|
55
|
-
end
|
56
|
-
mkFs = MiqFS.new(MetakitFS, v)
|
57
|
-
if mkFs.fsId == "MIQPAYLOAD"
|
58
|
-
$log.debug "\tMiqMountManager.findPayload: payload found devFile = #{v.devFile}" if $log
|
59
|
-
@payloads << mkFs
|
60
|
-
else
|
61
|
-
$log.debug "\tMiqMountManager.findPayload: devFile = #{v.devFile} not payload, fsId = #{mkFs.fsId}" if $log
|
62
|
-
end
|
63
|
-
else
|
64
|
-
$log.debug "\tMiqMountManager.findPayload: devFile not set, fileName = #{v.dInfo.fileName}" if $log
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
42
|
#
|
70
43
|
# Override standard MiqFS methods to account for mount indirection.
|
71
44
|
# The getFsPath method is defined by the OS-specific mount modules.
|
@@ -105,12 +105,7 @@ module VimDatastoreFS
|
|
105
105
|
#
|
106
106
|
# fpos = 0
|
107
107
|
# fsize = @pSize.get(fileRow)
|
108
|
-
#
|
109
|
-
# @pSize.set fileRow, 0
|
110
|
-
# @pData.set fileRow, Metakit::Bytes.new("", 0)
|
111
|
-
# elsif fappend
|
112
|
-
# fpos = fsize
|
113
|
-
# end
|
108
|
+
# fpos = fsize if fappend
|
114
109
|
#
|
115
110
|
# return(MkFile.new(p, fileRow, fpos, fread, fwrite))
|
116
111
|
# end # def fs_fileOpen
|
data/lib/fs/ext3/superblock.rb
CHANGED
data/lib/fs/ext4/superblock.rb
CHANGED
@@ -4,7 +4,7 @@ require 'fs/ext4/group_descriptor_table'
|
|
4
4
|
require 'fs/ext4/inode'
|
5
5
|
|
6
6
|
require 'binary_struct'
|
7
|
-
require '
|
7
|
+
require 'uuidtools'
|
8
8
|
require 'stringio'
|
9
9
|
require 'memory_buffer'
|
10
10
|
|
@@ -225,7 +225,7 @@ module Ext4
|
|
225
225
|
end
|
226
226
|
|
227
227
|
def groupDescriptorSize
|
228
|
-
@groupDescriptorSize ||= is_enabled_64_bit? ? @sb['group_desc_size'] : GDE_SIZE
|
228
|
+
@groupDescriptorSize ||= is_enabled_64_bit? ? @sb['group_desc_size'] : GDE_SIZE
|
229
229
|
end
|
230
230
|
|
231
231
|
def freeBytes
|