Merge "Sync with recent changes in fuel-main" into stable/brahmaputra
[fuel.git] / deploy / deploy.py
old mode 100644 (file)
new mode 100755 (executable)
index 4e209a9..7635ced
@@ -1,3 +1,4 @@
+#!/usr/bin/python
 ###############################################################################
 # Copyright (c) 2015 Ericsson AB and others.
 # szilard.cserey@ericsson.com
@@ -146,12 +147,15 @@ 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:
@@ -160,9 +164,34 @@ class AutoDeploy(object):
             pattern = r'%s=[^ ]\S+' % key
             replace = '%s=%s' % (key, val)
             data = re.sub(pattern, replace, 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,