, simpleField "link" [t| String |]
])
-$(buildObject "PartialNic" "nic"
+$(buildObject "PartialNic" "nic" $
[ simpleField "mac" [t| String |]
, optionalField $ simpleField "ip" [t| String |]
, simpleField "nicparams" [t| PartialNicParams |]
, optionalField $ simpleField "network" [t| String |]
- ])
+ , optionalField $ simpleField "name" [t| String |]
+ ] ++ uuidFields)
+
+instance UuidObject PartialNic where
+ uuidOf = nicUuid
-- * Disk definitions
, diskIvName :: String
, diskSize :: Int
, diskMode :: DiskMode
+ , diskName :: Maybe String
+ , diskUuid :: String
} deriving (Show, Eq)
-$(buildObjectSerialisation "Disk"
+$(buildObjectSerialisation "Disk" $
[ customField 'decodeDLId 'encodeFullDLId ["dev_type"] $
simpleField "logical_id" [t| DiskLogicalId |]
-- , simpleField "physical_id" [t| String |]
, defaultField [| "" |] $ simpleField "iv_name" [t| String |]
, simpleField "size" [t| Int |]
, defaultField [| DiskRdWr |] $ simpleField "mode" [t| DiskMode |]
- ])
+ , optionalField $ simpleField "name" [t| String |]
+ ]
+ ++ uuidFields)
+
+instance UuidObject Disk where
+ uuidOf = diskUuid
-- * Instance definitions
-- generating recursive datastructures is a bit more work.
instance Arbitrary Disk where
arbitrary = Disk <$> arbitrary <*> pure [] <*> arbitrary
- <*> arbitrary <*> arbitrary
+ <*> arbitrary <*> arbitrary <*> arbitrary
+ <*> arbitrary
-- FIXME: we should generate proper values, >=0, etc., but this is
-- hard for partial ones, where all must be wrapped in a 'Maybe'
mac <- arbitrary
ip <- arbitrary
nicparams <- arbitrary
+ name <- arbitrary
+ uuid <- arbitrary
-- generate some more networks than the given ones
num_more_nets <- choose (0,3)
more_nets <- vectorOf num_more_nets genName
- let partial_nics = map (PartialNic mac ip nicparams . Just)
- (List.nub (nets ++ more_nets))
+ let genNic net = PartialNic mac ip nicparams net name uuid
+ partial_nics = map (genNic . Just)
+ (List.nub (nets ++ more_nets))
new_inst = plain_inst { instNics = partial_nics }
return new_inst