commit 1d21963cb45d632c05f98e7607e94ec0c9447ca5
Merge: 5fdd0f8 22b6496
Author: Klaus Aehlig <[email protected]>
Date: Tue May 20 17:23:33 2014 +0200
Merge branch 'stable-2.11' into stable-2.12
* stable-2.11
Add missing import
Fix INicParams to include inicNetwork
Improve KVM userspace access documentation
* stable-2.10
Add --no-locks option to gnt-debug dela
Include design-performance-tests.rst in index
Document the --force-failover option
Support group evacuation by failover
Add an option --force-failover
Extend OpGroupEvacuate by a ForceFailover paramter
Mark performance tests design as implemented
openvswitch fix
Document the --sequential option
Support sequential evacuation
Add an option --sequential
Extend OpGroupEvacuate by a sequential paramter
* stable-2.9
Improve haskell style
check-man-warnings: use C.UTF-8 and set LC_ALL
Fix passing of ispecs in cluster init during QA
Conflicts:
doc/design-draft.rst
lib/client/gnt_debug.py
lib/cmdlib/test.py
src/Ganeti/HTools/Program/Harep.hs
src/Ganeti/HTools/Program/Hspace.hs
src/Ganeti/JQueue.hs
src/Ganeti/OpCodes.hs
src/Ganeti/OpParams.hs
test/hs/Test/Ganeti/HTools/Instance.hs
Resolution:
lib/cmdlib/test.py: modify/remove resolved
in favor of the remove on stable-2.12
*/HTools/* and src/Ganeti/Op*: add both new
parameters to the delay opcode
rest: trivial union
Signed-off-by: Klaus Aehlig <[email protected]>
diff --cc doc/design-draft.rst
index e3531ee,deeb924..55bed7c
--- a/doc/design-draft.rst
+++ b/doc/design-draft.rst
@@@ -19,11 -19,7 +19,10 @@@ Design document draft
design-daemons.rst
design-hsqueeze.rst
design-os.rst
+ design-move-instance-improvements.rst
design-node-security.rst
+ design-systemd.rst
+ design-cpu-speed.rst
- design-performance-tests.rst
.. vim: set textwidth=72 :
.. Local Variables:
diff --cc lib/client/gnt_debug.py
index 5a18099,a3c96f3..478bbe1
--- a/lib/client/gnt_debug.py
+++ b/lib/client/gnt_debug.py
@@@ -66,7 -65,7 +66,8 @@@ def Delay(opts, args)
on_master=opts.on_master,
on_nodes=opts.on_nodes,
repeat=opts.repeat,
- interruptible=opts.interruptible)
++ interruptible=opts.interruptible,
+ no_locks=opts.no_locks)
SubmitOrSend(op, opts)
return 0
@@@ -680,10 -630,9 +681,13 @@@ commands =
action="append", help="Select nodes to sleep on"),
cli_option("-r", "--repeat", type="int", default="0", dest="repeat",
help="Number of times to repeat the sleep"),
+ cli_option("-i", "--interruptible", default=False, dest="interruptible",
+ action="store_true",
+ help="Allows the opcode to be interrupted by using a domain "
+ "socket"),
+ cli_option("-l", "--no-locks", default=False, dest="no_locks",
+ action="store_true",
+ help="Don't take locks while performing the delay"),
DRY_RUN_OPT, PRIORITY_OPT] + SUBMIT_OPTS,
"[opts...] <duration>", "Executes a TestDelay OpCode"),
"submit-job": (
diff --cc lib/cmdlib/test.py
index a2c404b,98bbe3e..f7f43b6
--- a/lib/cmdlib/test.py
+++ b/lib/cmdlib/test.py
@@@ -109,11 -52,11 +109,14 @@@ class LUTestDelay(NoHooksLU)
This expands the node list, if any.
"""
- self.needed_locks = {}
+
+ if self.op.duration <= 0:
+ raise errors.OpPrereqError("Duration must be greater than zero")
+ if not self.op.no_locks and (self.op.on_nodes or self.op.on_master):
+ self.needed_locks[locking.LEVEL_NODE] = []
+
+ self.op.on_node_uuids = []
if self.op.on_nodes:
# _GetWantedNodes can be used here, but is not always appropriate to use
# this way in ExpandNames. Check LogicalUnit.ExpandNames docstring for
diff --cc src/Ganeti/HTools/Program/Harep.hs
index d257ed2,d3519fa..6599116
--- a/src/Ganeti/HTools/Program/Harep.hs
+++ b/src/Ganeti/HTools/Program/Harep.hs
@@@ -427,7 -423,7 +427,8 @@@ doRepair client delay instData (rtype,
, opDelayOnNodes = []
, opDelayOnNodeUuids = Nothing
, opDelayRepeat = fromJust $ mkNonNegative 0
+ , opDelayInterruptible = False
+ , opDelayNoLocks = False
} : opcodes
else
opcodes
diff --cc src/Ganeti/JQueue.hs
index 303ac41,aa48ec8..dea4541
--- a/src/Ganeti/JQueue.hs
+++ b/src/Ganeti/JQueue.hs
@@@ -64,23 -66,15 +64,23 @@@ module Ganeti.JQueu
, cancelJob
, queueDirPermissions
, archiveJobs
+ -- re-export
+ , Timestamp
+ , InputOpCode(..)
+ , QueuedOpCode(..)
+ , QueuedJob(..)
) where
- import Control.Applicative (liftA2, (<|>))
+ import Control.Applicative (liftA2, (<|>), (<$>))
import Control.Arrow (first, second)
-import Control.Concurrent (forkIO)
-import Control.Concurrent.MVar
+import Control.Concurrent (forkIO, threadDelay)
import Control.Exception
+import Control.Lens (over)
import Control.Monad
+import Control.Monad.IO.Class
+import Control.Monad.Trans (lift)
+import Control.Monad.Trans.Maybe
- import Data.Functor ((<$), (<$>))
+ import Data.Functor ((<$))
import Data.List
import Data.Maybe
import Data.Ord (comparing)
diff --cc src/Ganeti/OpCodes.hs
index 5609030,eb24b0a..d5b3e01
--- a/src/Ganeti/OpCodes.hs
+++ b/src/Ganeti/OpCodes.hs
@@@ -831,7 -814,7 +833,8 @@@ $(genOpCode "OpCode
, pDelayOnNodes
, pDelayOnNodeUuids
, pDelayRepeat
+ , pDelayInterruptible
+ , pDelayNoLocks
],
"duration")
, ("OpTestAllocator",
diff --cc src/Ganeti/OpParams.hs
index 6eaff4c,c330c83..7aaec81
--- a/src/Ganeti/OpParams.hs
+++ b/src/Ganeti/OpParams.hs
@@@ -236,7 -221,7 +237,8 @@@ module Ganeti.OpParam
, pDelayOnNodes
, pDelayOnNodeUuids
, pDelayRepeat
+ , pDelayInterruptible
+ , pDelayNoLocks
, pIAllocatorDirection
, pIAllocatorMode
, pIAllocatorReqName
@@@ -1585,13 -1489,12 +1599,19 @@@ pDelayRepeat
defaultField [| forceNonNeg (0::Int) |] $
simpleField "repeat" [t| NonNegative Int |]
+pDelayInterruptible :: Field
+pDelayInterruptible =
+ withDoc "Allows socket-based interruption of a running OpTestDelay" .
+ renameField "DelayInterruptible" .
+ defaultField [| False |] $
+ simpleField "interruptible" [t| Bool |]
+
+ pDelayNoLocks :: Field
+ pDelayNoLocks =
+ withDoc "Don't take locks during the delay" .
+ renameField "DelayNoLocks" $
+ defaultTrue "no_locks"
+
pIAllocatorDirection :: Field
pIAllocatorDirection =
withDoc "IAllocator test direction" .
diff --cc test/hs/Test/Ganeti/HTools/Instance.hs
index 9212548,60c6ba1..60099a0
--- a/test/hs/Test/Ganeti/HTools/Instance.hs
+++ b/test/hs/Test/Ganeti/HTools/Instance.hs
@@@ -35,9 -35,8 +35,9 @@@ module Test.Ganeti.HTools.Instanc
, Instance.Instance(..)
) where
+import Control.Arrow ((&&&))
+ import Control.Applicative ((<$>))
import Control.Monad (liftM)
- import Data.Functor ((<$>))
import Test.QuickCheck hiding (Result)
import Test.Ganeti.TestHelper
--
Klaus Aehlig
Google Germany GmbH, Dienerstr. 12, 80331 Muenchen
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschaeftsfuehrer: Graham Law, Christine Elizabeth Flores