manageiq-smartstate 0.2.6 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|