import Text.Printf (printf)
import Data.List (intercalate, nub, isPrefixOf)
import Data.Maybe
+import qualified Data.Set as Set
import Control.Monad
import Control.Applicative
import qualified System.Console.GetOpt as GetOpt
<*> arbitrary <*> arbitrary <*> arbitrary <*> getFQDN
<*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
<*> arbitrary <*> arbitrary <*> getFQDN <*> arbitrary
+ <*> (Set.fromList <$> genTags)
instance Arbitrary Rpc.RpcCallAllInstancesInfo where
arbitrary = Rpc.RpcCallAllInstancesInfo <$> arbitrary
]
++ timeStampFields
++ uuidFields
- ++ serialFields)
+ ++ serialFields
+ ++ tagsFields)
-- * IPolicy definitions
]
++ timeStampFields
++ uuidFields
- ++ serialFields)
+ ++ serialFields
+ ++ tagsFields)
-- * NodeGroup definitions
]
++ timeStampFields
++ uuidFields
- ++ serialFields)
+ ++ serialFields
+ ++ tagsFields)
-- | IP family type
$(declareIADT "IpFamily"
where
+import Control.Applicative
import Control.Concurrent
import Control.Exception
import Data.Bits (bitSize)
import qualified Ganeti.Constants as C
import Ganeti.Objects
---import Ganeti.Config
+import qualified Ganeti.Config as Config
import Ganeti.BasicTypes
import Ganeti.Logging
import Ganeti.Luxi
in return . Ok . J.makeObj $ obj
+handleCall cfg (QueryTags kind name) =
+ let tags = case kind of
+ TagCluster -> Ok . clusterTags $ configCluster cfg
+ TagGroup -> groupTags <$> Config.getGroup cfg name
+ TagNode -> nodeTags <$> Config.getNode cfg name
+ TagInstance -> instTags <$> Config.getInstance cfg name
+ in return (J.showJSON <$> tags)
+
handleCall _ op =
return . Bad $ "Luxi call '" ++ strOfOp op ++ "' not implemented"
"""
kind, name = _ExtractTagsObject(opts, args)
- cl = GetClient()
+ cl = GetClient(query=True)
result = cl.QueryTags(kind, name)
result = list(result)
result.sort()
if not self.name:
raise http.HttpBadRequest("Missing name on tag request")
- cl = self.GetClient()
+ cl = self.GetClient(query=True)
tags = list(cl.QueryTags(kind, self.name))
elif kind == constants.TAG_CLUSTER: