for hv_name in constants.HYPER_TYPES:
hv_class = hypervisor.GetHypervisorClass(hv_name)
- allowed_files.update(hv_class.GetAncillaryFiles())
+ allowed_files.update(hv_class.GetAncillaryFiles()[0])
return frozenset(allowed_files)
# Files which should only be on VM-capable nodes
files_vm = set(filename
for hv_name in cluster.enabled_hypervisors
- for filename in hypervisor.GetHypervisor(hv_name).GetAncillaryFiles())
+ for filename in hypervisor.GetHypervisor(hv_name).GetAncillaryFiles()[0])
# Filenames must be unique
assert (len(files_all | files_all_opt | files_mc | files_vm) ==
"""
PARAMETERS = {}
ANCILLARY_FILES = []
+ ANCILLARY_FILES_OPT = []
CAN_MIGRATE = False
def __init__(self):
"""Return a list of ancillary files to be copied to all nodes as ancillary
configuration files.
- @rtype: list of strings
- @return: list of absolute paths of files to ship cluster-wide
+ @rtype: (list of absolute paths, list of absolute paths)
+ @return: (all files, optional files)
"""
# By default we return a member variable, so that if an hypervisor has just
# a static list of files it doesn't have to override this function.
- return cls.ANCILLARY_FILES
+ assert set(cls.ANCILLARY_FILES).issuperset(cls.ANCILLARY_FILES_OPT), \
+ "Optional ancillary files must be a subset of ancillary files"
+
+ return (cls.ANCILLARY_FILES, cls.ANCILLARY_FILES_OPT)
def Verify(self):
"""Verify the hypervisor.
ANCILLARY_FILES = [
_KVM_NETWORK_SCRIPT,
]
+ ANCILLARY_FILES_OPT = [
+ _KVM_NETWORK_SCRIPT,
+ ]
def __init__(self):
hv_base.BaseHypervisor.__init__(self)
XL_CONFIG_FILE,
VIF_BRIDGE_SCRIPT,
]
+ ANCILLARY_FILES_OPT = [
+ XL_CONFIG_FILE,
+ ]
@staticmethod
def _ConfigFileName(instance_name):
ANCILLARY_FILES = XenHypervisor.ANCILLARY_FILES + [
constants.VNC_PASSWORD_FILE,
]
+ ANCILLARY_FILES_OPT = XenHypervisor.ANCILLARY_FILES_OPT + [
+ constants.VNC_PASSWORD_FILE,
+ ]
PARAMETERS = {
constants.HV_ACPI: hv_base.NO_CHECK,