import os
import os.path
-import sha
import re
import logging
import tempfile
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
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():
f.close()
sshkey = sshline.split(" ")[1]
- utils.AddHostToEtcHosts(hostname.name)
+ if modify_etc_hosts:
+ utils.AddHostToEtcHosts(hostname.name)
+
_InitSSHSetup()
# init of cluster config file
file_storage_dir=file_storage_dir,
enabled_hypervisors=enabled_hypervisors,
default_hypervisor=default_hypervisor,
- beparams={constants.BEGR_DEFAULT: beparams},
+ beparams={constants.PP_DEFAULT: beparams},
hvparams=hvparams,
candidate_pool_size=candidate_pool_size,
+ modify_etc_hosts=modify_etc_hosts,
)
master_node_config = objects.Node(name=hostname.name,
primary_ip=hostname.ip,
@param cfg_file: configuration file path
@rtype: L{ssconf.SimpleConfigWriter}
- @returns: initialized config instance
+ @return: initialized config instance
"""
nodes = {
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.