....to avoid having magic names spread all over htools.
Signed-off-by: Klaus Aehlig <[email protected]>
---
src/Ganeti/HTools/Program/Hsqueeze.hs | 15 ++++-----------
src/Ganeti/HTools/Tags.hs | 21 +++++++++++++++++++++
2 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/src/Ganeti/HTools/Program/Hsqueeze.hs
b/src/Ganeti/HTools/Program/Hsqueeze.hs
index 4275370..3fd8816 100644
--- a/src/Ganeti/HTools/Program/Hsqueeze.hs
+++ b/src/Ganeti/HTools/Program/Hsqueeze.hs
@@ -57,6 +57,7 @@ import Ganeti.HTools.ExtLoader
import qualified Ganeti.HTools.Instance as Instance
import Ganeti.HTools.Loader
import qualified Ganeti.HTools.Node as Node
+import Ganeti.HTools.Tags (hasStandbyTag, standbyAuto)
import Ganeti.HTools.Types
import Ganeti.JQueue (currentTimestamp, reasonTrailTimestamp)
import Ganeti.JQueue.Objects (Timestamp)
@@ -99,15 +100,6 @@ annotateOpCode ts comment =
. setOpComment (comment ++ " " ++ version)
. wrapOpCode
--- | The tag-prefix indicating that hsqueeze should consider a node
--- as being standby.
-standbyPrefix :: String
-standbyPrefix = "htools:standby:"
-
--- | Predicate of having a standby tag.
-hasStandbyTag :: Node.Node -> Bool
-hasStandbyTag = any (standbyPrefix `isPrefixOf`) . Node.nTags
-
-- | Within a cluster configuration, decide if the node hosts only
-- externally-mirrored instances.
onlyExternal :: (Node.List, Instance.List) -> Node.Node -> Bool
@@ -243,7 +235,7 @@ getMoveOpCodes nl il js = return $ zip (map opcodes js)
(map descr js)
getTagOpCodes :: [Node.Node] -> Result [([[OpCode]], String)]
getTagOpCodes nl = return $ zip (map opCode nl) (map descr nl)
where
- opCode node = [[Node.genAddTagsOpCode node ["htools:standby:auto"]]]
+ opCode node = [[Node.genAddTagsOpCode node [standbyAuto]]]
descr node = "Tagging node " ++ Node.name node ++ " with standby"
-- | Get opcodes for powering off nodes
@@ -319,7 +311,8 @@ main opts args = do
off_cmd =
Cluster.formatCmds off_jobs
++ "\necho Tagging Commands\n"
- ++ (toOffline >>= printf " gnt-node add-tags %s
htools:standby:auto\n"
+ ++ (toOffline >>= (printf " gnt-node add-tags %s %s\n"
+ `flip` standbyAuto)
. Node.alias)
++ "\necho Power Commands\n"
++ (toOffline >>= printf " gnt-node power -f off %s\n" . Node.alias)
diff --git a/src/Ganeti/HTools/Tags.hs b/src/Ganeti/HTools/Tags.hs
index b9b252d..263ba73 100644
--- a/src/Ganeti/HTools/Tags.hs
+++ b/src/Ganeti/HTools/Tags.hs
@@ -36,11 +36,32 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Ganeti.HTools.Tags
( exTagsPrefix
+ , standbyAuto
+ , hasStandbyTag
) where
+import Data.List (isPrefixOf)
+
+import qualified Ganeti.HTools.Node as Node
+
-- * Constants
-- | The exclusion tag prefix.
exTagsPrefix :: String
exTagsPrefix = "htools:iextags:"
+-- | The tag-prefix indicating that hsqueeze should consider a node
+-- as being standby.
+standbyPrefix :: String
+standbyPrefix = "htools:standby:"
+
+-- | The tag to be added to nodes that were shutdown by hsqueeze.
+standbyAuto :: String
+standbyAuto = "htools:standby:auto"
+
+-- * Predicates
+
+-- | Predicate of having a standby tag.
+hasStandbyTag :: Node.Node -> Bool
+hasStandbyTag = any (standbyPrefix `isPrefixOf`) . Node.nTags
+
--
2.1.0.rc2.206.gedb03e5