summaryrefslogtreecommitdiffstats
path: root/deploy/deploy.py
diff options
context:
space:
mode:
Diffstat (limited to 'deploy/deploy.py')
-rwxr-xr-xdeploy/deploy.py46
1 files changed, 44 insertions, 2 deletions
diff --git a/deploy/deploy.py b/deploy/deploy.py
index 8a4bfc40a..393523bf9 100755
--- a/deploy/deploy.py
+++ b/deploy/deploy.py
@@ -147,23 +147,65 @@ class AutoDeploy(object):
log('isolinux.cfg after: %s'
% exec_cmd('grep netmask %s' % isolinux))
+ iso_label = self.parse_iso_volume_label(self.iso_file)
+ log('Volume label: %s' % iso_label)
+
iso_linux_bin = 'isolinux/isolinux.bin'
exec_cmd('mkisofs -quiet -r -J -R -b %s '
'-no-emul-boot -boot-load-size 4 '
'-boot-info-table -hide-rr-moved '
- '-x "lost+found:" -o %s .'
- % (iso_linux_bin, new_iso))
+ '-x "lost+found:" -V %s -o %s .'
+ % (iso_linux_bin, iso_label, new_iso))
def update_fuel_isolinux(self, file):
with io.open(file) as f:
data = f.read()
for key, val in self.fuel_conf.iteritems():
+ # skip replacing these keys, as the format is custom
+ if key in ['ip', 'gw', 'netmask', 'hostname']:
+ continue
+
pattern = r'%s=[^ ]\S+' % key
replace = '%s=%s' % (key, val)
data = re.sub(pattern, replace, data)
+
+ # process networking parameters
+ ip = ':'.join([self.fuel_conf['ip'],
+ '',
+ self.fuel_conf['gw'],
+ self.fuel_conf['netmask'],
+ self.fuel_conf['hostname'],
+ 'eth0:off:::'])
+
+ data = re.sub(r'ip=[^ ]\S+', 'ip=%s' % ip, data)
+
+ netmask = self.fuel_conf['netmask']
+ data = self.append_kernel_param(data, 'netmask=%s' % netmask)
+
with io.open(file, 'w') as f:
f.write(data)
+ def append_kernel_param(self, data, kernel_param):
+ """Append the specified kernel parameter to a list of kernel
+ parameters. Do it only if it isn't already there.
+ """
+ data_final = ''
+ key = re.match(r'(.+?=)', kernel_param).group()
+
+ for line in data.splitlines():
+ data_final += line
+ if (re.search(r'append ', line) and
+ not re.search(key, line)):
+ data_final += ' ' + kernel_param
+ data_final += '\n'
+
+ return data_final
+
+ def parse_iso_volume_label(self, iso_filename):
+ label_line = exec_cmd('isoinfo -d -i %s | grep -i "Volume id: "' % iso_filename)
+ # cut leading text: 'Volume id: '
+ return label_line[11:]
+
def deploy_env(self):
dep = CloudDeploy(self.dea, self.dha, self.fuel_conf['ip'],
self.fuel_username, self.fuel_password,