Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrades: use the management address type from old install #41

Open
wants to merge 2 commits into
base: 10.10.19-8.3
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ def getPrepSequence(ans, interactive):
seq = [
Task(util.getUUID, As(ans), ['installation-uuid']),
Task(util.getUUID, As(ans), ['control-domain-uuid']),
Task(util.mgmtAddrType, As(ans), ['management-address-type']),
Task(util.randomLabelStr, As(ans), ['disk-label-suffix']),
Task(diskutil.create_raid, A(ans, 'raid'), []),
Task(partitionTargetDisk, A(ans, 'primary-disk', 'installation-to-overwrite', 'preserve-first-partition','sr-on-primary'), ['target-boot-mode', 'boot-partnum', 'primary-partnum', 'backup-partnum', 'logs-partnum', 'swap-partnum', 'storage-partnum']),
Expand Down Expand Up @@ -190,7 +191,7 @@ def getFinalisationSequence(ans):
Task(writeFstab, A(ans, 'mounts', 'target-boot-mode', 'primary-disk', 'logs-partnum', 'swap-partnum', 'disk-label-suffix'), []),
Task(enableAgent, A(ans, 'mounts', 'network-backend', 'services'), []),
Task(configureCC, A(ans, 'mounts'), []),
Task(writeInventory, A(ans, 'installation-uuid', 'control-domain-uuid', 'mounts', 'primary-disk',
Task(writeInventory, A(ans, 'installation-uuid', 'control-domain-uuid', 'management-address-type', 'mounts', 'primary-disk',
'backup-partnum', 'storage-partnum', 'guest-disks', 'net-admin-bridge',
'branding', 'net-admin-configuration', 'host-config', 'install-type'), []),
Task(writeXencommons, A(ans, 'control-domain-uuid', 'mounts'), []),
Expand Down Expand Up @@ -1595,7 +1596,7 @@ def writeXencommons(controlID, mounts):
with open(os.path.join(mounts['root'], constants.XENCOMMONS_FILE), "w") as f:
f.write(contents)

def writeInventory(installID, controlID, mounts, primary_disk, backup_partnum, storage_partnum, guest_disks, admin_bridge, branding, admin_config, host_config, install_type):
def writeInventory(installID, controlID, mgmtAddrType, mounts, primary_disk, backup_partnum, storage_partnum, guest_disks, admin_bridge, branding, admin_config, host_config, install_type):
inv = open(os.path.join(mounts['root'], constants.INVENTORY_FILE), "w")
if 'product-brand' in branding:
inv.write("PRODUCT_BRAND='%s'\n" % branding['product-brand'])
Expand Down Expand Up @@ -1636,11 +1637,15 @@ def writeInventory(installID, controlID, mounts, primary_disk, backup_partnum, s
inv.write("DOM0_MEM='%d'\n" % host_config['dom0-mem'])
inv.write("DOM0_VCPUS='%d'\n" % host_config['dom0-vcpus'])
inv.write("MANAGEMENT_INTERFACE='%s'\n" % admin_bridge)
# Default to IPv4 unless we have only got an IPv6 admin interface
if ((not admin_config.mode) and admin_config.modev6):
inv.write("MANAGEMENT_ADDRESS_TYPE='IPv6'\n")
# If we read MANAGEMENT_ADDRESS_TYPE from xensource-inventory use it
if mgmtAddrType:
gthvn1 marked this conversation as resolved.
Show resolved Hide resolved
inv.write("MANAGEMENT_ADDRESS_TYPE='%s'\n" % mgmtAddrType)
else:
inv.write("MANAGEMENT_ADDRESS_TYPE='IPv4'\n")
# Default to IPv4 unless we have only got an IPv6 admin interface
if ((not admin_config.mode) and admin_config.modev6):
inv.write("MANAGEMENT_ADDRESS_TYPE='IPv6'\n")
else:
inv.write("MANAGEMENT_ADDRESS_TYPE='IPv4'\n")
if constants.CC_PREPARATIONS and install_type == constants.INSTALL_TYPE_FRESH:
inv.write("CC_PREPARATIONS='true'\n")
inv.close()
Expand Down
11 changes: 6 additions & 5 deletions upgrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -523,18 +523,19 @@ def replace_config(config_file, destination):
finally:
primary_fs.unmount()

prepUpgradeArgs = ['installation-uuid', 'control-domain-uuid']
prepStateChanges = ['installation-uuid', 'control-domain-uuid']
def prepareUpgrade(self, progress_callback, installID, controlID):
prepUpgradeArgs = []
prepStateChanges = ['installation-uuid', 'control-domain-uuid', 'management-address-type']
def prepareUpgrade(self, progress_callback, installID, controlID, mgmtAddrType):
""" Try to preserve the installation and control-domain UUIDs from
xensource-inventory."""
try:
installID = self.source.getInventoryValue("INSTALLATION_UUID")
controlID = self.source.getInventoryValue("CONTROL_DOMAIN_UUID")
mgmtAddrType = self.source.getInventoryValue("MANAGEMENT_ADDRESS_TYPE")
except KeyError:
raise RuntimeError("Required information (INSTALLATION_UUID, CONTROL_DOMAIN_UUID) was missing from your xensource-inventory file. Aborting installation; please replace these keys and try again.")
raise RuntimeError("Required information (INSTALLATION_UUID, CONTROL_DOMAIN_UUID, MANAGEMENT_ADDRESS_TYPE) was missing from your xensource-inventory file. Aborting installation; please replace these keys and try again.")

return installID, controlID
return installID, controlID, mgmtAddrType

def buildRestoreList(self, src_base):
self.restore_list += ['etc/xensource/ptoken', 'etc/xensource/pool.conf',
Expand Down
3 changes: 3 additions & 0 deletions util.py
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,9 @@ def udevinfoCmd():
def randomLabelStr():
return "".join([random.choice(string.ascii_lowercase) for x in range(6)])

def mgmtAddrType():
return None

def getLocalTime(timezone=None):
if timezone:
os.environ['TZ'] = timezone
Expand Down