manageiq-smartstate 0.2.6 → 0.2.7
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 +6 -0
- data/lib/VolumeManager/LVM/scanner.rb +44 -31
- data/lib/disk/modules/AzureDiskCommon.rb +6 -1
- data/lib/disk/modules/AzureManagedDisk.rb +1 -1
- data/lib/fs/MiqFS/FsProbe.rb +13 -6
- data/lib/fs/MiqFS/modules/AUFSProbe.rb +6 -6
- data/lib/fs/MiqFS/modules/Ext3Probe.rb +11 -14
- data/lib/fs/MiqFS/modules/Ext4Probe.rb +11 -14
- data/lib/fs/MiqFS/modules/Fat32Probe.rb +8 -4
- data/lib/fs/MiqFS/modules/HFSProbe.rb +2 -1
- data/lib/fs/MiqFS/modules/Iso9660Probe.rb +1 -1
- data/lib/fs/MiqFS/modules/NTFSProbe.rb +3 -3
- data/lib/fs/MiqFS/modules/ReFSProbe.rb +3 -4
- data/lib/fs/MiqFS/modules/RealFSProbe.rb +1 -1
- data/lib/fs/MiqFS/modules/Reiser4Probe.rb +2 -2
- data/lib/fs/MiqFS/modules/ReiserFSProbe.rb +6 -6
- data/lib/fs/MiqFS/modules/UnionFSProbe.rb +1 -1
- data/lib/fs/MiqFS/modules/XFSProbe.rb +12 -15
- data/lib/fs/MiqFS/modules/ZFSProbe.rb +2 -1
- data/lib/manageiq/smartstate/version.rb +1 -1
- data/manageiq-smartstate.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98576a595a6fc668bca6de56af398d52114fec83
|
4
|
+
data.tar.gz: 29fda5c203c4eebf2083449effe8ab4127d0ed17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7e3bdb59eb6e3724ed430315f9451c5dae75f1cd1dfc988e5f20d0a3a36903402f7357e842a08ea7cfe8d3553d7491a4f6f2bd624b590e373b45423ef9c4e42
|
7
|
+
data.tar.gz: 3b9ae707377b267a8c803bb3f478eca4ea81736367ff684dfcfbe85012bc487aa411a5e2e009cbb5df473c38dfb05a62b33f090078067013f49b8d1532589680
|
data/.codeclimate.yml
CHANGED
@@ -26,6 +26,7 @@ engines:
|
|
26
26
|
languages:
|
27
27
|
ruby:
|
28
28
|
mass_threshold: 25
|
29
|
+
count_threshold: 5
|
29
30
|
javascript:
|
30
31
|
eslint:
|
31
32
|
enabled: false
|
@@ -39,6 +40,11 @@ engines:
|
|
39
40
|
rubocop:
|
40
41
|
enabled: true
|
41
42
|
config: '.rubocop_cc.yml'
|
43
|
+
checks:
|
44
|
+
method-complexity:
|
45
|
+
enabled: true
|
46
|
+
config:
|
47
|
+
threshold: 8
|
42
48
|
prepare:
|
43
49
|
fetch:
|
44
50
|
- url: "https://raw.githubusercontent.com/ManageIQ/guides/master/.rubocop_base.yml"
|
@@ -5,59 +5,69 @@ module Lvm2Scanner
|
|
5
5
|
|
6
6
|
LVM_ID_LEN = 8
|
7
7
|
LVM_TYPE_LEN = 8
|
8
|
-
LVM_ID = "LABELONE"
|
8
|
+
LVM_ID = "LABELONE".freeze
|
9
9
|
|
10
10
|
PV_ID_LEN = 32
|
11
11
|
MDA_MAGIC_LEN = 16
|
12
|
-
FMTT_MAGIC = "\040\114\126\115\062\040\170\133\065\101\045\162\060\116\052\076"
|
12
|
+
FMTT_MAGIC = "\040\114\126\115\062\040\170\133\065\101\045\162\060\116\052\076".freeze
|
13
13
|
|
14
14
|
#
|
15
15
|
# On disk label header.
|
16
16
|
#
|
17
|
-
LABEL_HEADER = BinaryStruct.new(
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
LABEL_HEADER = BinaryStruct.new(
|
18
|
+
[
|
19
|
+
"A#{LVM_ID_LEN}", 'lvm_id',
|
20
|
+
'Q', 'sector_xl',
|
21
|
+
'L', 'crc_xl',
|
22
|
+
'L', 'offset_xl',
|
23
|
+
"A#{LVM_TYPE_LEN}", 'lvm_type'
|
24
|
+
]
|
25
|
+
)
|
24
26
|
|
25
27
|
#
|
26
28
|
# On disk physical volume header.
|
27
29
|
#
|
28
|
-
PV_HEADER = BinaryStruct.new(
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
PV_HEADER = BinaryStruct.new(
|
31
|
+
[
|
32
|
+
"A#{PV_ID_LEN}", 'pv_uuid',
|
33
|
+
"Q", 'device_size_xl'
|
34
|
+
]
|
35
|
+
)
|
32
36
|
|
33
37
|
#
|
34
38
|
# On disk disk location structure.
|
35
39
|
#
|
36
|
-
DISK_LOCN = BinaryStruct.new(
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
+
DISK_LOCN = BinaryStruct.new(
|
41
|
+
[
|
42
|
+
"Q", 'offset',
|
43
|
+
"Q", 'size'
|
44
|
+
]
|
45
|
+
)
|
40
46
|
|
41
47
|
#
|
42
48
|
# On disk metadata area header.
|
43
49
|
#
|
44
|
-
MDA_HEADER = BinaryStruct.new(
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
50
|
+
MDA_HEADER = BinaryStruct.new(
|
51
|
+
[
|
52
|
+
"L", 'checksum_xl',
|
53
|
+
"A#{MDA_MAGIC_LEN}", 'magic',
|
54
|
+
"L", 'version',
|
55
|
+
"Q", 'start',
|
56
|
+
"Q", 'size'
|
57
|
+
]
|
58
|
+
)
|
51
59
|
|
52
60
|
#
|
53
61
|
# On disk raw location header, points to metadata.
|
54
62
|
#
|
55
|
-
RAW_LOCN = BinaryStruct.new(
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
63
|
+
RAW_LOCN = BinaryStruct.new(
|
64
|
+
[
|
65
|
+
"Q", 'offset',
|
66
|
+
"Q", 'size',
|
67
|
+
"L", 'checksum',
|
68
|
+
"L", 'filler'
|
69
|
+
]
|
70
|
+
)
|
61
71
|
|
62
72
|
#
|
63
73
|
# Scan the physical volume for LVM headers.
|
@@ -91,7 +101,7 @@ module Lvm2Scanner
|
|
91
101
|
def self.readLabel(d, s)
|
92
102
|
d.seek(s * SECTOR_SIZE, IO::SEEK_SET)
|
93
103
|
lh = readStruct(d, LABEL_HEADER)
|
94
|
-
return lh if lh
|
104
|
+
return lh if lh&.lvm_id == LVM_ID
|
95
105
|
nil
|
96
106
|
end # def self.readLabel
|
97
107
|
|
@@ -152,5 +162,8 @@ module Lvm2Scanner
|
|
152
162
|
|
153
163
|
def self.readStruct(d, struct)
|
154
164
|
OpenStruct.new(struct.decode(d.read(struct.size)))
|
165
|
+
rescue StandardError => err
|
166
|
+
$log&.debug err.to_s
|
167
|
+
nil
|
155
168
|
end # def self.readStruct
|
156
169
|
end # module Lvm2Scanner
|
@@ -43,6 +43,7 @@ module AzureDiskCommon
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def d_close_common
|
46
|
+
@managed_disk&.close
|
46
47
|
return nil unless $log.debug?
|
47
48
|
t1 = Time.now.to_i
|
48
49
|
$log.debug("#{@my_class}: close(#{@disk_path})")
|
@@ -84,7 +85,7 @@ module AzureDiskCommon
|
|
84
85
|
options[:date] = @snapshot if @snapshot
|
85
86
|
ret = @storage_acct.get_blob_raw(@container, @blob, key, options)
|
86
87
|
else
|
87
|
-
ret =
|
88
|
+
ret = managed_disk.read(options)
|
88
89
|
end
|
89
90
|
|
90
91
|
@reads += 1
|
@@ -96,4 +97,8 @@ module AzureDiskCommon
|
|
96
97
|
def key
|
97
98
|
@key ||= @storage_acct_svc.list_account_keys(@storage_acct.name, @storage_acct.resource_group).fetch('key1')
|
98
99
|
end
|
100
|
+
|
101
|
+
def managed_disk
|
102
|
+
@managed_disk ||= @storage_disk_svc.open(@disk_name, @resource_group)
|
103
|
+
end
|
99
104
|
end
|
data/lib/fs/MiqFS/FsProbe.rb
CHANGED
@@ -25,13 +25,20 @@ module FsProbe
|
|
25
25
|
partNum = dobj.partNum
|
26
26
|
|
27
27
|
probes.each do |pmod|
|
28
|
-
$log.debug
|
28
|
+
$log.debug("MIQ(FsProbe-getFsMod) FS probe attempting [#{pmod}] for [#{fname}] [partition: #{partNum}]")
|
29
|
+
|
29
30
|
require_relative "modules/#{pmod}"
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
begin
|
32
|
+
if Object.const_get(pmod).probe(dobj)
|
33
|
+
mod = pmod.chomp("Probe")
|
34
|
+
$log.info("MIQ(FsProbe-getFsMod) FS probe detected [#{mod}] for [#{fname}] [partition: #{partNum}]")
|
35
|
+
require_relative "modules/#{mod}"
|
36
|
+
return Object.const_get(mod)
|
37
|
+
end
|
38
|
+
rescue StandardError => err
|
39
|
+
$log.debug(err.to_s)
|
40
|
+
# continue to probe even when one probing fails.
|
41
|
+
next
|
35
42
|
end
|
36
43
|
end
|
37
44
|
nil
|
@@ -7,18 +7,18 @@ module AUFSProbe
|
|
7
7
|
AUFS_MAGIC_OFFSET = 52
|
8
8
|
AUFS_MAGIC_SIZE = 4
|
9
9
|
AUFS_SUPER_MAGIC = 0x12121313
|
10
|
-
AUFS_FSTYPE = "aufs"
|
10
|
+
AUFS_FSTYPE = "aufs".freeze
|
11
11
|
|
12
12
|
def self.probe(dobj)
|
13
|
-
return
|
13
|
+
return false unless dobj.kind_of?(MiqDisk)
|
14
14
|
|
15
15
|
# Check for aufs magic number or name at offset.
|
16
16
|
dobj.seek(AUFS_SUPER_OFFSET + AUFS_MAGIC_OFFSET)
|
17
17
|
buf = dobj.read(AUFS_MAGIC_SIZE)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
raise "AUFS is Not Supported" if
|
18
|
+
bs = buf&.unpack('L')
|
19
|
+
magic = bs.nil? ? nil : bs[0]
|
20
|
+
|
21
|
+
raise "AUFS is Not Supported" if magic == AUFS_SUPER_MAGIC || buf == AUFS_FSTYPE
|
22
22
|
|
23
23
|
# No AUFS.
|
24
24
|
false
|
@@ -2,24 +2,21 @@ require 'fs/ext3/superblock'
|
|
2
2
|
|
3
3
|
module Ext3Probe
|
4
4
|
def self.probe(dobj)
|
5
|
-
$log.debug("Ext3Probe >> dobj=#{dobj}") if $log
|
6
5
|
unless dobj.kind_of?(MiqDisk)
|
7
|
-
$log
|
6
|
+
$log&.debug("Ext3Probe << FALSE because Disk Object class is not MiqDisk, but is '#{dobj.class}'")
|
8
7
|
return false
|
9
8
|
end
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
sb = Ext3::Superblock.new(dobj)
|
10
|
+
dobj.seek(0, IO::SEEK_SET)
|
11
|
+
Ext3::Superblock.new(dobj)
|
14
12
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
13
|
+
# If initializing the superblock does not throw any errors, then this is ext3
|
14
|
+
$log&.debug("Ext3Probe << TRUE")
|
15
|
+
return true
|
16
|
+
rescue => err
|
17
|
+
$log&.debug("Ext3Probe << FALSE because #{err.message}")
|
18
|
+
return false
|
19
|
+
ensure
|
20
|
+
dobj.seek(0, IO::SEEK_SET)
|
24
21
|
end
|
25
22
|
end
|
@@ -2,24 +2,21 @@ require 'fs/ext4/superblock'
|
|
2
2
|
|
3
3
|
module Ext4Probe
|
4
4
|
def self.probe(dobj)
|
5
|
-
$log.debug("Ext4Probe >> dobj=#{dobj}") if $log
|
6
5
|
unless dobj.kind_of?(MiqDisk)
|
7
|
-
$log
|
6
|
+
$log&.debug("Ext4Probe << FALSE because Disk Object class is not MiqDisk, but is '#{dobj.class}'")
|
8
7
|
return false
|
9
8
|
end
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
sb = Ext4::Superblock.new(dobj)
|
10
|
+
dobj.seek(0, IO::SEEK_SET)
|
11
|
+
Ext4::Superblock.new(dobj)
|
14
12
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
13
|
+
# If initializing the superblock does not throw any errors, then this is Ext4
|
14
|
+
$log&.debug("Ext4Probe << TRUE")
|
15
|
+
return true
|
16
|
+
rescue => err
|
17
|
+
$log&.debug("Ext4Probe << FALSE because #{err.message}")
|
18
|
+
return false
|
19
|
+
ensure
|
20
|
+
dobj.seek(0, IO::SEEK_SET)
|
24
21
|
end
|
25
22
|
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
module Fat32Probe
|
2
2
|
def self.probe(dobj)
|
3
|
-
$log.debug("Fat32Probe >> dobj=#{dobj}") if $log
|
4
3
|
unless dobj.kind_of?(MiqDisk)
|
5
|
-
$log
|
4
|
+
$log&.debug "Fat32Probe << FALSE because Disk Object class is not MiqDisk, but is '#{dobj.class}'"
|
6
5
|
return false
|
7
6
|
end
|
8
7
|
|
@@ -11,13 +10,18 @@ module Fat32Probe
|
|
11
10
|
bs = dobj.read(512)
|
12
11
|
|
13
12
|
# Check byte 66 for 0x29 (extended signature).
|
14
|
-
if bs[66] != 0x29
|
15
|
-
$log
|
13
|
+
if bs.nil? || bs[66] != 0x29
|
14
|
+
$log&.debug("Fat32Probe << FALSE because there is no extended signature")
|
16
15
|
return false
|
17
16
|
end
|
18
17
|
|
19
18
|
# Check file system label for 'FAT32 '
|
20
19
|
# NOTE: This works for MS tools but maybe not for others.
|
20
|
+
if bs.length < 90
|
21
|
+
$log&.debug("Fat32Probe << FALSE because there is no filesystem label")
|
22
|
+
return false
|
23
|
+
end
|
24
|
+
|
21
25
|
fslabel = bs[82, 8].unpack('a8')[0].strip
|
22
26
|
fat32 = fslabel == 'FAT32'
|
23
27
|
if $log
|
@@ -9,7 +9,8 @@ module HFSProbe
|
|
9
9
|
|
10
10
|
# Check for HFS signature in first int.
|
11
11
|
dobj.seek(HFS_SUPER_OFFSET + HFS_MAGIC_OFFSET)
|
12
|
-
|
12
|
+
bs = dobj.read(HFS_MAGIC_SIZE)&.unpack('S')
|
13
|
+
magic = bs.nil? ? nil : bs[0]
|
13
14
|
raise "HFS is Not Supported" if magic == HFS_SUPER_MAGIC
|
14
15
|
|
15
16
|
# No HFS.
|
@@ -1,14 +1,14 @@
|
|
1
1
|
module NTFSProbe
|
2
2
|
def self.probe(dobj)
|
3
|
-
$log.debug("NTFSProbe >> dobj=#{dobj}") if $log
|
4
3
|
unless dobj.kind_of?(MiqDisk)
|
5
|
-
$log
|
4
|
+
$log&.debug "NTFSProbe << FALSE because Disk Object class is not MiqDisk, but is '#{dobj.class}'"
|
6
5
|
return false
|
7
6
|
end
|
8
7
|
|
9
8
|
# Check for oem name = NTFS.
|
10
9
|
dobj.seek(3)
|
11
|
-
|
10
|
+
bs = dobj.read(8)&.unpack('a8')
|
11
|
+
oem = bs[0].strip if bs
|
12
12
|
|
13
13
|
ntfs = oem == 'NTFS'
|
14
14
|
if $log
|
@@ -1,12 +1,11 @@
|
|
1
1
|
module ReFSProbe
|
2
|
-
FS_SIGNATURE
|
2
|
+
FS_SIGNATURE = [0x00, 0x00, 0x00, 0x52, 0x65, 0x46, 0x53, 0x00].freeze # ...ReFS.
|
3
3
|
|
4
4
|
def self.probe(dobj)
|
5
|
-
|
6
|
-
return false unless dobj.kind_of?(MiqDisk)
|
5
|
+
return false unless dobj.kind_of?(MiqDisk)
|
7
6
|
|
8
7
|
dobj.seek(0, IO::SEEK_SET)
|
9
|
-
magic = dobj.read(FS_SIGNATURE.size)
|
8
|
+
magic = dobj.read(FS_SIGNATURE.size)&.unpack('C*')
|
10
9
|
|
11
10
|
# Check for ReFS signature
|
12
11
|
raise "ReFS is Not Supported" if magic == FS_SIGNATURE
|
@@ -2,14 +2,14 @@ module Reiser4Probe
|
|
2
2
|
REISER4_MASTER_OFFSET = 65536
|
3
3
|
REISER4_MAGIC_OFFSET = REISER4_MASTER_OFFSET
|
4
4
|
REISER4_MAGIC_SIZE = 10
|
5
|
-
REISER4_MAGIC = "ReIsEr4"
|
5
|
+
REISER4_MAGIC = "ReIsEr4".freeze
|
6
6
|
|
7
7
|
def self.probe(dobj)
|
8
8
|
return(false) unless dobj.kind_of?(MiqDisk)
|
9
9
|
|
10
10
|
# Assume Reiser4 - read magic at offset.
|
11
11
|
dobj.seek(REISER4_MAGIC_OFFSET)
|
12
|
-
magic = dobj.read(REISER4_MAGIC_SIZE)
|
12
|
+
magic = dobj.read(REISER4_MAGIC_SIZE)&.strip
|
13
13
|
raise "Reiser4 is Not Supported" if magic == REISER4_MAGIC
|
14
14
|
|
15
15
|
# No Reiser4.
|
@@ -1,19 +1,17 @@
|
|
1
1
|
module ReiserFSProbe
|
2
2
|
REISERFS_DISK_OFFSET_NEW = 64 * 1024
|
3
|
-
REISERFS_DISK_OFFSET_OLD =
|
3
|
+
REISERFS_DISK_OFFSET_OLD = 8 * 1024
|
4
4
|
|
5
5
|
REISERFS_SUPER_SIZE = 204
|
6
6
|
|
7
7
|
REISERFS_MAGIC_OFFSET = 52
|
8
8
|
REISERFS_MAGIC_SIZE = 10
|
9
9
|
|
10
|
-
REISERFS_MAGIC1 = "ReIsErFs"
|
11
|
-
REISERFS_MAGIC2 = "ReIsEr2Fs"
|
12
|
-
REISERFS_MAGIC3 = "ReIsEr3Fs"
|
10
|
+
REISERFS_MAGIC1 = "ReIsErFs".freeze
|
11
|
+
REISERFS_MAGIC2 = "ReIsEr2Fs".freeze
|
12
|
+
REISERFS_MAGIC3 = "ReIsEr3Fs".freeze
|
13
13
|
|
14
14
|
def self.probe(dobj)
|
15
|
-
return false unless dobj.kind_of?(MiqDisk)
|
16
|
-
|
17
15
|
return true if ReiserFSProbe.isMagic?(ReiserFSProbe.getMagic(dobj, REISERFS_DISK_OFFSET_NEW))
|
18
16
|
return true if ReiserFSProbe.isMagic?(ReiserFSProbe.getMagic(dobj, REISERFS_DISK_OFFSET_OLD))
|
19
17
|
|
@@ -22,6 +20,8 @@ module ReiserFSProbe
|
|
22
20
|
end
|
23
21
|
|
24
22
|
def self.getMagic(dobj, offset)
|
23
|
+
return false unless dobj.kind_of?(MiqDisk)
|
24
|
+
|
25
25
|
# Assume ReiserFS - read superblock at desired offset.
|
26
26
|
dobj.seek(offset) # new disk start offset.
|
27
27
|
sb = dobj.read(REISERFS_SUPER_SIZE)
|
@@ -9,7 +9,7 @@ module UnionFSProbe
|
|
9
9
|
|
10
10
|
# Assume UnionFS - read magic at offset.
|
11
11
|
dobj.seek(UNIONFS_SUPER_OFFSET + UNIONFS_MAGIC_OFFSET)
|
12
|
-
magic = dobj.read(UNIONFS_MAGIC_SIZE)
|
12
|
+
magic = dobj.read(UNIONFS_MAGIC_SIZE)&.unpack('L')
|
13
13
|
raise "UnionFS is Not Supported" if magic == UNIONFS_MAGIC
|
14
14
|
|
15
15
|
# No UnionFS.
|
@@ -2,25 +2,22 @@ require 'fs/xfs/superblock'
|
|
2
2
|
|
3
3
|
module XFSProbe
|
4
4
|
def self.probe(dobj)
|
5
|
-
$log.debug("XFSProbe >> dobj=#{dobj}") if $log
|
6
5
|
unless dobj.kind_of?(MiqDisk)
|
7
|
-
$log
|
6
|
+
$log&.debug("XFSProbe << FALSE because Disk Object class is not MiqDisk, but is '#{dobj.class}'")
|
8
7
|
return false
|
9
8
|
end
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
XFS::Superblock.new(dobj)
|
10
|
+
# The first Allocation Group's Superblock is at block zero.
|
11
|
+
dobj.seek(0, IO::SEEK_SET)
|
12
|
+
XFS::Superblock.new(dobj)
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
14
|
+
# If initializing the superblock does not throw any errors, then this is XFS
|
15
|
+
$log&.debug("XFSProbe << TRUE")
|
16
|
+
return true
|
17
|
+
rescue => err
|
18
|
+
$log&.debug("XFSProbe << FALSE because #{err.message}")
|
19
|
+
return false
|
20
|
+
ensure
|
21
|
+
dobj.seek(0, IO::SEEK_SET)
|
25
22
|
end
|
26
23
|
end
|
@@ -9,7 +9,8 @@ module ZFSProbe
|
|
9
9
|
|
10
10
|
# Check for magic at uberblock offset.
|
11
11
|
dobj.seek(ZFS_SUPER_OFFSET + ZFS_MAGIC_OFFSET)
|
12
|
-
|
12
|
+
bs = dobj.read(ZFS_MAGIC_SIZE)&.unpack('L')
|
13
|
+
magic = bs.nil? ? nil : bs[0]
|
13
14
|
raise "ZFS is Not Supported" if magic == ZFS_SUPER_MAGIC
|
14
15
|
|
15
16
|
# No ZFS.
|
data/manageiq-smartstate.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
|
-
spec.add_dependency "azure-armrest", "~> 0.9"
|
23
|
+
spec.add_dependency "azure-armrest", "~> 0.9.5"
|
24
24
|
spec.add_dependency "binary_struct", "~> 2.1"
|
25
25
|
spec.add_dependency "iniparse"
|
26
26
|
spec.add_dependency "linux_block_device", "~>0.2.1"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: manageiq-smartstate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ManageIQ Developers
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: azure-armrest
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.9.5
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.9.5
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: binary_struct
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|