On Mon, Oct 12, 2015 at 01:30:31PM -0400, 'Hrvoje Ribicic' via ganeti-devel 
wrote:
commit ec71d7974653bfd148ef0a97b5fd44920cc8f0da
Merge: 553363a a4687d7
Author: Hrvoje Ribicic <[email protected]>
Date:   Mon Oct 12 16:54:51 2015 +0000

   Merge branch 'stable-2.16'

I'd suggest to add "into master", just like in the subject.


   * stable-2.16
     Make CommitTemporaryIPs call out to WConfD
     Also accept just "BoringSSL"
     Accept BoringSSL as a known good ssl library
     Add a test for group independence in capacity checks
     Make hspace correctly handle --independent-groups
     Add a predicate whether a group is globally N+1 redundant
     Make global N+1 checks honor algCapacityIgnoreGroups
     Add a parameter to ignore groups in capacity checks

   * stable-2.15
     For queries, take the correct base address of an IP block
     Fix computation in network blocks

   * stable-2.14
     Add test for tags accounting in hail
     Set node tags in iallocator htools backend

   * stable-2.13
     Improve xl socat migrations

   * stable-2.12
     QA: Retrieve only the RAPI certificate
     QA: Allow usage of specific RAPI certificates and files
     QA: Reload certificates only when renew-crypto has been run
     QA: Restart Ganeti after adding the RAPI users file
     QA: Add reading the RAPI password from a file
     QA: Allow the RAPI user to be set
     QA: Do not remove nodes from cluster without destroying it
     QA: Refactor RAPI handling
     Increase default disk size of burnin to 1G
     break line with more than 80 characters
     Only search for Python-2 interpreters
     Fix faulty comments / indentation
     Handle Xen 4.3 states better

   * stable-2.11
     (no changes)

   * stable-2.10
     Add a test for parsing of admin_state in IAlloc backend
     At IAlloc backend guess state from admin state

   * stable-2.9
     Update harep's man page to notify users of its limitations

   Conflicts:
       IAlloc.hs: Take both the tags and the mem calculation change
       htools-hail.test: Merge tests

   Signed-off-by: Hrvoje Ribicic <[email protected]>

diff --cc src/Ganeti/HTools/AlgorithmParams.hs
index deee223,b93f437..8a53e69
--- a/src/Ganeti/HTools/AlgorithmParams.hs
+++ b/src/Ganeti/HTools/AlgorithmParams.hs
@@@ -41,9 -41,8 +41,10 @@@ module Ganeti.HTools.AlgorithmParam
   , fromCLIOptions
   ) where

+import qualified Data.Set as Set
+
 import qualified Ganeti.HTools.CLI as CLI
+ import qualified Ganeti.HTools.Types as T

 data AlgorithmOptions = AlgorithmOptions
   { algDiskMoves :: Bool            -- ^ Whether disk moves are allowed
@@@ -59,9 -54,8 +60,10 @@@
   , algMinGainLimit :: Double       -- ^ Limit below which minimal gain
is used
   , algCapacity :: Bool             -- ^ Whether to check capacity
properties,
                                     -- like global N+1 redundancy
+   , algCapacityIgnoreGroups :: [T.Gdx] -- ^ Groups to ignore in capacity
checks
   , algRestrictToNodes :: Maybe [String] -- ^ nodes to restrict
allocation to
+  , algAllowedNodes :: Maybe (Set.Set Int) -- ^ if given, do not perform
any
+                                    -- operations involving other nodes
   , algAcceptExisting :: Bool       -- ^ accept existing violations in
capacity
                                     -- checks
   }
@@@ -78,8 -71,8 +80,9 @@@ fromCLIOptions opts = AlgorithmOption
   , algMinGain = CLI.optMinGain opts
   , algMinGainLimit = CLI.optMinGainLim opts
   , algCapacity = CLI.optCapacity opts
+   , algCapacityIgnoreGroups = []
   , algRestrictToNodes = CLI.optRestrictToNodes opts
+  , algAllowedNodes = Nothing
   , algAcceptExisting = CLI.optAcceptExisting opts
   }

diff --cc src/Ganeti/HTools/Backend/IAlloc.hs
index 5946efe,7bd31ee..f2575f6
--- a/src/Ganeti/HTools/Backend/IAlloc.hs
+++ b/src/Ganeti/HTools/Backend/IAlloc.hs
@@@ -170,8 -178,8 +179,9 @@@ parseNode ktg n a = d
   dfree  <- lvextract 0 "free_disk"
   ctotal <- lvextract 0.0 "total_cpus"
   cnos <- lvextract 0 "reserved_cpus"
-  let node = flip Node.setNodeTags tags $
-             Node.create n mtotal mnode mfree dtotal dfree ctotal cnos
+  let node_mem = obtainNodeMemory hvstate mnode
-       node = Node.create n mtotal node_mem mfree dtotal dfree ctotal cnos
++      node = flip Node.setNodeTags tags $
++             Node.create n mtotal node_mem mfree dtotal dfree ctotal cnos
              (not live || drained) sptotal spfree gidx excl_stor
   return (n, node)

diff --cc src/Ganeti/Network.hs
index f2feebf,1cb6aa1..b557369
--- a/src/Ganeti/Network.hs
+++ b/src/Ganeti/Network.hs
@@@ -54,8 -55,9 +55,9 @@@ module Ganeti.Networ
   ) where

 import Control.Monad
-import Control.Monad.Error
+import Control.Monad.Error.Class (MonadError)
 import Control.Monad.State
+ import Data.Bits ((.&.))
 import Data.Function (on)

 import Ganeti.BasicTypes
@@@ -172,10 -180,10 +180,10 @@@ getMap = maybe "" (BA.asString '.' 'X'

 -- | Returns an address index wrt a network.
 -- Fails if the address isn't in the network range.
-addrIndex :: (MonadError e m, Error e) => Ip4Address -> Network -> m Int
+addrIndex :: (MonadError e m, FromString e) => Ip4Address -> Network -> m
Int
 addrIndex addr net = do
   let n = networkNetwork net
-       i = on (-) ip4AddressToNumber addr (ip4netAddr n)
+       i = on (-) ip4AddressToNumber addr (ip4BaseAddr n)
   when ((i < 0) || (i >= ipv4NumHosts (ip4netMask n))) . failError
     $ "Address '" ++ show addr ++ "' not in the network '" ++ show net ++
"'"
   return $ fromInteger i
diff --cc test/hs/shelltests/htools-hail.test
index b34a2b8,46bfa20..61943ba
--- a/test/hs/shelltests/htools-hail.test
+++ b/test/hs/shelltests/htools-hail.test
@@@ -105,9 -105,14 +105,14 @@@ cat $TESTDATA_DIR/hail-alloc-invalid-ne
 >>>= 0

 ./test/hs/hail $T/hail-alloc-twodisks.json.fail-excl-stor
->>> /"success":false,.*FailSpindles: 1"/
+>>> /"success":false,.*FailTooSmall: 1"/
 >>>= 0

+ # check that hail correctly parses admin state
+ ./test/hs/hail -v -v $TESTDATA_DIR/hail-alloc-drbd.json
+ >>>2 /runSt = StatusDown/
+ >>>=0
+
 # check that hail can use the simu backend
 ./test/hs/hail --simu p,8,8T,16g,16 $TESTDATA_DIR/hail-alloc-drbd.json
 >>> /"success":true,/
@@@ -225,7 -230,7 +230,12 @@@
 >>> /successes 2, failures 0.*"result":"node-2-2"/
 >>>= 0

+# Memory over-commitment test
+./test/hs/hail $TESTDATA_DIR/hail-alloc-memory-over-commitment.json
+>>> /"success":true.*/
+>>>= 0
++
+ # Check that hail account location tags
+ ./test/hs/hail $TESTDATA_DIR/hail-alloc-nlocation.json
+ >>> /"success":true,.*,"result":\["node3","node2"\]/
+ >>>= 0
Hrvoje Ribicic
Ganeti Engineering
Google Germany GmbH
Dienerstr. 12, 80331, M??nchen

Gesch??ftsf??hrer: Matthew Scott Sucherman, Paul Terence Manicle
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg

Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind,
leiten Sie diese bitte nicht weiter, informieren Sie den Absender und
l??schen Sie die E-Mail und alle Anh??nge. Vielen Dank.

This e-mail is confidential. If you are not the right addressee please do
not forward it, please inform the sender, and please erase this e-mail
including any attachments. Thanks.

Rest LGTM, no need to resend

Reply via email to