X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/a5728081faa3068dcb797a7ccccd9ce47c0b23e0..9205a895ac0b5d60b881458a44bb157b88eac21d:/lib/bootstrap.py diff --git a/lib/bootstrap.py b/lib/bootstrap.py index 3e56154..0bc907a 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 @@ -124,7 +123,8 @@ def _InitGanetiServerSetup(): def InitCluster(cluster_name, mac_prefix, def_bridge, master_netdev, file_storage_dir, candidate_pool_size, secondary_ip=None, vg_name=None, beparams=None, hvparams=None, - enabled_hypervisors=None, default_hypervisor=None): + enabled_hypervisors=None, default_hypervisor=None, + modify_etc_hosts=True): """Initialise the cluster. @type candidate_pool_size: int @@ -205,6 +205,9 @@ def InitCluster(cluster_name, mac_prefix, def_bridge, raise errors.OpPrereqError("Init.d script '%s' missing or not" " executable." % constants.NODE_INITD_SCRIPT) + 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(): @@ -223,7 +226,9 @@ def InitCluster(cluster_name, mac_prefix, def_bridge, f.close() sshkey = sshline.split(" ")[1] - utils.AddHostToEtcHosts(hostname.name) + if modify_etc_hosts: + utils.AddHostToEtcHosts(hostname.name) + _InitSSHSetup() # init of cluster config file @@ -245,6 +250,7 @@ def InitCluster(cluster_name, mac_prefix, def_bridge, beparams={constants.BEGR_DEFAULT: beparams}, hvparams=hvparams, candidate_pool_size=candidate_pool_size, + modify_etc_hosts=opts.modify_etc_hosts, ) master_node_config = objects.Node(name=hostname.name, primary_ip=hostname.ip, @@ -282,7 +288,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 = { @@ -443,6 +449,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.