Revision 424ec11d htools/Ganeti/HTools/Loader.hs

b/htools/Ganeti/HTools/Loader.hs
288 288
                              in Container.add (Instance.idx inst) new_i im
289 289
                   ) il2 um
290 290
      allextags = extags ++ extractExTags tags
291
      inst_names = map Instance.name il
292
      selinst_lkp = map (lookupName inst_names) selinsts
293
      exinst_lkp = map (lookupName inst_names) exinsts
294
      lkp_unknown = filter (not . goodLookupResult) (selinst_lkp ++ exinst_lkp)
295
      selinst_names = map lrContent selinst_lkp
296
      exinst_names = map lrContent exinst_lkp
291 297
      il4 = Container.map (filterExTags allextags .
292
                           updateMovable selinsts exinsts) il3
298
                           updateMovable selinst_names exinst_names) il3
293 299
      nl2 = foldl' fixNodes nl (Container.elems il4)
294 300
      nl3 = Container.map (flip Node.buildPeers il4) nl2
295 301
      node_names = map Node.name (Container.elems nl)
296
      inst_names = map Instance.name il
297 302
      common_suffix = longestDomain (node_names ++ inst_names)
298 303
      snl = Container.map (computeAlias common_suffix) nl3
299 304
      sil = Container.map (computeAlias common_suffix) il4
300
      all_inst_names = concatMap allNames $ Container.elems sil
301
  in if not $ all (`elem` all_inst_names) exinsts
302
     then Bad $ "Some of the excluded instances are unknown: " ++
303
          show (exinsts \\ all_inst_names)
304
     else if not $ all (`elem` all_inst_names) selinsts
305
          then Bad $ "Some of the selected instances are unknown: " ++
306
               show (selinsts \\ all_inst_names)
307
          else Ok cdata { cdNodes = snl, cdInstances = sil }
305
  in if' (null lkp_unknown)
306
         (Ok cdata { cdNodes = snl, cdInstances = sil })
307
         (Bad $ "Unknown instance(s): " ++ show(map lrContent lkp_unknown))
308 308

  
309 309
-- | Checks the cluster data for consistency.
310 310
checkData :: Node.List -> Instance.List

Also available in: Unified diff