Revision 58458012
b/src/Ganeti/Storage/Lvm/LVParser.hs | ||
---|---|---|
112 | 112 |
<$> uuidP <*> nameP <*> attrP <*> majorP <*> minorP <*> kernelMajorP |
113 | 113 |
<*> kernelMinorP <*> sizeP <*> segCountP <*> tagsP <*> modulesP |
114 | 114 |
<*> vgUuidP <*> vgNameP <*> segtypeP <*> segStartP <*> segStartPeP |
115 |
<*> segSizeP <*> segTagsP <*> segPeRangesP <*> devicesP <* A.endOfLine |
|
115 |
<*> segSizeP <*> segTagsP <*> segPeRangesP <*> devicesP |
|
116 |
<*> return Nothing <* A.endOfLine |
|
116 | 117 |
|
117 | 118 |
-- | The parser for a whole diskstatus file. |
118 | 119 |
lvParser :: Parser [LVInfo] |
b/src/Ganeti/Storage/Lvm/Types.hs | ||
---|---|---|
54 | 54 |
, simpleField "seg_tags" [t| String |] |
55 | 55 |
, simpleField "seg_pe_ranges" [t| String |] |
56 | 56 |
, simpleField "devices" [t| String |] |
57 |
, optionalNullSerField $ |
|
58 |
simpleField "instance" [t| String |] |
|
57 | 59 |
]) |
b/test/hs/Test/Ganeti/Storage/Lvm/LVParser.hs | ||
---|---|---|
49 | 49 |
(negate 1) 253 0 1073741824 1 |
50 | 50 |
"originstname+instance1.example.com" "" |
51 | 51 |
"uZgXit-eiRr-vRqe-xpEo-e9nU-mTuR-9nfVIU" "xenvg" "linear" 0 0 1073741824 |
52 |
"" "/dev/sda5:0-15" "/dev/sda5(0)" |
|
52 |
"" "/dev/sda5:0-15" "/dev/sda5(0)" Nothing
|
|
53 | 53 |
, LVInfo "5fW5mE-SBSs-GSU0-KZDg-hnwb-sZOC-zZt736" |
54 | 54 |
"df9ff3f6-a833-48ff-8bd5-bff2eaeab759.disk0_meta" "-wi-ao" (negate 1) |
55 | 55 |
(negate 1) 253 1 134217728 1 |
56 | 56 |
"originstname+instance1.example.com" "" |
57 | 57 |
"uZgXit-eiRr-vRqe-xpEo-e9nU-mTuR-9nfVIU" "xenvg" "linear" 0 0 134217728 "" |
58 |
"/dev/sda5:16-17" "/dev/sda5(16)" |
|
58 |
"/dev/sda5:16-17" "/dev/sda5(16)" Nothing
|
|
59 | 59 |
] |
60 | 60 |
|
61 | 61 |
-- | Serialize a LVInfo in the same format that is output by @lvs@. |
62 |
-- The "instance" field is not serialized because it's not provided by @lvs@ |
|
63 |
-- so it is not part of this test. |
|
62 | 64 |
serializeLVInfo :: LVInfo -> String |
63 | 65 |
serializeLVInfo l = intercalate ";" |
64 | 66 |
[ lviUuid l |
... | ... | |
88 | 90 |
serializeLVInfos = concatMap serializeLVInfo |
89 | 91 |
|
90 | 92 |
-- | Arbitrary instance for LVInfo. |
93 |
-- The instance is always Nothing because it is not part of the parsed data: |
|
94 |
-- it is added afterwards from a different source. |
|
91 | 95 |
instance Arbitrary LVInfo where |
92 | 96 |
arbitrary = |
93 | 97 |
LVInfo |
... | ... | |
111 | 115 |
<*> genName -- seg_tags |
112 | 116 |
<*> genName -- seg_pe_ranges |
113 | 117 |
<*> genName -- devices |
118 |
<*> return Nothing -- instance |
|
114 | 119 |
|
115 | 120 |
-- | Test if a randomly generated LV lvs output is properly parsed. |
116 | 121 |
prop_parse_lvs_lv :: [LVInfo] -> Property |
Also available in: Unified diff