Revision f2374060

b/htools/Ganeti/HTools/QC.hs
57 57
import Text.Printf (printf)
58 58
import Data.List (intercalate, nub, isPrefixOf)
59 59
import Data.Maybe
60
import qualified Data.Set as Set
60 61
import Control.Monad
61 62
import Control.Applicative
62 63
import qualified System.Console.GetOpt as GetOpt
......
548 549
              <*> arbitrary <*> arbitrary <*> arbitrary <*> getFQDN
549 550
              <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
550 551
              <*> arbitrary <*> arbitrary <*> getFQDN <*> arbitrary
552
              <*> (Set.fromList <$> genTags)
551 553

  
552 554
instance Arbitrary Rpc.RpcCallAllInstancesInfo where
553 555
  arbitrary = Rpc.RpcCallAllInstancesInfo <$> arbitrary
b/htools/Ganeti/Objects.hs
293 293
  ]
294 294
  ++ timeStampFields
295 295
  ++ uuidFields
296
  ++ serialFields)
296
  ++ serialFields
297
  ++ tagsFields)
297 298

  
298 299
-- * IPolicy definitions
299 300

  
......
374 375
  ]
375 376
  ++ timeStampFields
376 377
  ++ uuidFields
377
  ++ serialFields)
378
  ++ serialFields
379
  ++ tagsFields)
378 380

  
379 381
-- * NodeGroup definitions
380 382

  
......
402 404
  ]
403 405
  ++ timeStampFields
404 406
  ++ uuidFields
405
  ++ serialFields)
407
  ++ serialFields
408
  ++ tagsFields)
406 409

  
407 410
-- | IP family type
408 411
$(declareIADT "IpFamily"
b/htools/Ganeti/Queryd.hs
29 29

  
30 30
where
31 31

  
32
import Control.Applicative
32 33
import Control.Concurrent
33 34
import Control.Exception
34 35
import Data.Bits (bitSize)
......
41 42

  
42 43
import qualified Ganeti.Constants as C
43 44
import Ganeti.Objects
44
--import Ganeti.Config
45
import qualified Ganeti.Config as Config
45 46
import Ganeti.BasicTypes
46 47
import Ganeti.Logging
47 48
import Ganeti.Luxi
......
118 119

  
119 120
  in return . Ok . J.makeObj $ obj
120 121

  
122
handleCall cfg (QueryTags kind name) =
123
  let tags = case kind of
124
               TagCluster -> Ok . clusterTags $ configCluster cfg
125
               TagGroup -> groupTags <$> Config.getGroup cfg name
126
               TagNode -> nodeTags <$> Config.getNode cfg name
127
               TagInstance -> instTags <$> Config.getInstance cfg name
128
  in return (J.showJSON <$> tags)
129

  
121 130
handleCall _ op =
122 131
  return . Bad $ "Luxi call '" ++ strOfOp op ++ "' not implemented"
123 132

  
b/lib/cli.py
464 464

  
465 465
  """
466 466
  kind, name = _ExtractTagsObject(opts, args)
467
  cl = GetClient()
467
  cl = GetClient(query=True)
468 468
  result = cl.QueryTags(kind, name)
469 469
  result = list(result)
470 470
  result.sort()
b/lib/rapi/rlib2.py
1339 1339
      if not self.name:
1340 1340
        raise http.HttpBadRequest("Missing name on tag request")
1341 1341

  
1342
      cl = self.GetClient()
1342
      cl = self.GetClient(query=True)
1343 1343
      tags = list(cl.QueryTags(kind, self.name))
1344 1344

  
1345 1345
    elif kind == constants.TAG_CLUSTER:

Also available in: Unified diff