X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/af64c0eac10e030337b3316b75bea80f57d31be8..5c3b5f99df49ea1a10f2cef1c6695b28fed0b0b7:/lib/bootstrap.py diff --git a/lib/bootstrap.py b/lib/bootstrap.py index 5632d39..0308484 100644 --- a/lib/bootstrap.py +++ b/lib/bootstrap.py @@ -25,7 +25,6 @@ import os import os.path -import sha import re import logging import tempfile @@ -38,6 +37,7 @@ from ganeti import config from ganeti import constants from ganeti import objects from ganeti import ssconf +from ganeti import hypervisor def _InitSSHSetup(): @@ -204,7 +204,15 @@ def InitCluster(cluster_name, mac_prefix, def_bridge, raise errors.OpPrereqError("Init.d script '%s' missing or not" " executable." % constants.NODE_INITD_SCRIPT) - utils.CheckBEParams(beparams) + dirs = [(constants.RUN_GANETI_DIR, constants.RUN_DIRS_MODE)] + utils.EnsureDirs(dirs) + + utils.ForceDictType(beparams, constants.BES_PARAMETER_TYPES) + # hvparams is a mapping of hypervisor->hvparams dict + for hv_name, hv_params in hvparams.iteritems(): + utils.ForceDictType(hv_params, constants.HVS_PARAMETER_TYPES) + hv_class = hypervisor.GetHypervisor(hv_name) + hv_class.CheckParameterSyntax(hv_params) # set up the inter-node password and certificate _InitGanetiServerSetup() @@ -276,7 +284,7 @@ def InitConfig(version, cluster_config, master_node_config, @param cfg_file: configuration file path @rtype: L{ssconf.SimpleConfigWriter} - @returns: initialized config instance + @return: initialized config instance """ nodes = { @@ -437,6 +445,22 @@ def MasterFailover(): return rcode +def GetMaster(): + """Returns the current master node. + + This is a separate function in bootstrap since it's needed by + gnt-cluster, and instead of importing directly ssconf, it's better + to abstract it in bootstrap, where we do use ssconf in other + functions too. + + """ + sstore = ssconf.SimpleStore() + + old_master, _ = ssconf.GetMasterAndMyself(sstore) + + return old_master + + def GatherMasterVotes(node_list): """Check the agreement on who is the master.