Commit 9fdd3d0f authored by Iustin Pop's avatar Iustin Pop

Switch hspace to read the disk template from the cluster

The default disk template is the first enabled template.
Signed-off-by: default avatarIustin Pop <iustin@google.com>
Reviewed-by: default avatarRené Nussbaumer <rn@google.com>
parent fc42a408
......@@ -107,7 +107,7 @@ data Options = Options
{ optDataFile :: Maybe FilePath -- ^ Path to the cluster data file
, optDiskMoves :: Bool -- ^ Allow disk moves
, optInstMoves :: Bool -- ^ Allow instance moves
, optDiskTemplate :: DiskTemplate -- ^ The requested disk template
, optDiskTemplate :: Maybe DiskTemplate -- ^ Override for the disk template
, optDynuFile :: Maybe FilePath -- ^ Optional file with dynamic use data
, optEvacMode :: Bool -- ^ Enable evacuation mode
, optExInst :: [String] -- ^ Instances to be excluded
......@@ -146,7 +146,7 @@ defaultOptions = Options
{ optDataFile = Nothing
, optDiskMoves = True
, optInstMoves = True
, optDiskTemplate = DTDrbd8
, optDiskTemplate = Nothing
, optDynuFile = Nothing
, optEvacMode = False
, optExInst = []
......@@ -214,8 +214,8 @@ oDiskTemplate :: OptType
oDiskTemplate = Option "" ["disk-template"]
(ReqArg (\ t opts -> do
dt <- diskTemplateFromRaw t
return $ opts { optDiskTemplate = dt }) "TEMPLATE")
"select the desired disk template"
return $ opts { optDiskTemplate = Just dt })
"TEMPLATE") "select the desired disk template"
oSelInst :: OptType
oSelInst = Option "" ["select-instances"]
......
......@@ -358,10 +358,11 @@ runAllocation :: ClusterData -- ^ Cluster data
-> Maybe Cluster.AllocResult -- ^ Optional stop-allocation
-> Result Cluster.AllocResult -- ^ Allocation result
-> RSpec -- ^ Requested instance spec
-> DiskTemplate -- ^ Requested disk template
-> SpecType -- ^ Allocation type
-> Options -- ^ CLI options
-> IO (FailStats, Node.List, Int, [(RSpec, Int)])
runAllocation cdata stop_allocation actual_result spec mode opts = do
runAllocation cdata stop_allocation actual_result spec dt mode opts = do
(reasons, new_nl, new_il, new_ixes, _) <-
case stop_allocation of
Just result_noalloc -> return result_noalloc
......@@ -371,7 +372,7 @@ runAllocation cdata stop_allocation actual_result spec mode opts = do
descr = name ++ " allocation"
ldescr = "after " ++ map toLower descr
printISpec (optMachineReadable opts) spec mode (optDiskTemplate opts)
printISpec (optMachineReadable opts) spec mode dt
printAllocationMap (optVerbose opts) descr new_nl new_ixes
......@@ -399,16 +400,24 @@ main = do
exitWith $ ExitFailure 1
let verbose = optVerbose opts
disk_template = optDiskTemplate opts
req_nodes = Instance.requiredNodes disk_template
machine_r = optMachineReadable opts
orig_cdata@(ClusterData gl fixed_nl il _ ipol) <- loadExternalData opts
nl <- setNodeStatus opts fixed_nl
cluster_disk_template <-
case iPolicyDiskTemplates ipol of
first_templ:_ -> return first_templ
_ -> do
_ <- hPutStrLn stderr $ "Error: null list of disk templates\
\ received from cluster!"
exitWith $ ExitFailure 1
let num_instances = Container.size il
all_nodes = Container.elems fixed_nl
cdata = orig_cdata { cdNodes = fixed_nl }
disk_template = fromMaybe cluster_disk_template (optDiskTemplate opts)
req_nodes = Instance.requiredNodes disk_template
csf = commonSuffix fixed_nl il
when (not (null csf) && verbose > 1) $
......@@ -440,7 +449,7 @@ main = do
runAllocation cdata stop_allocation
(Cluster.tieredAlloc nl il alloclimit
(instFromSpec tspec disk_template) allocnodes [] [])
tspec SpecTiered opts
tspec disk_template SpecTiered opts
printTiered machine_r spec_map (optMcpu opts) nl trl_nl treason
......@@ -453,7 +462,7 @@ main = do
runAllocation cdata stop_allocation
(Cluster.iterateAlloc nl il alloclimit
(instFromSpec ispec disk_template) allocnodes [] [])
ispec SpecNormal opts
ispec disk_template SpecNormal opts
printResults machine_r nl fin_nl num_instances allocs sreason
......
......@@ -203,8 +203,9 @@ OPTIONS
The options that can be passed to the program are as follows:
--disk-template *template*
The disk template for the instance; one of the Ganeti disk templates
(e.g. plain, drbd, so on) should be passed in.
Overrides the disk template for the instance read from the cluster;
one of the Ganeti disk templates (e.g. plain, drbd, so on) should be
passed in.
--max-cpu=*cpu-ratio*
The maximum virtual to physical cpu ratio, as a floating point number
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment