Example #1
0
 def specify_fstab_entry(type, **kwargs):
     """
     Specify entry in fstab file
     """
     type_list = ['cdrom', 'uuid', 'label', 'virtio', 'sr0', 'invalid']
     if type not in type_list:
         test.error('Not support %s in fstab' % type)
     session = kwargs['session']
     # Specify cdrom device
     if type == 'cdrom':
         line = '/dev/cdrom /media/CDROM auto exec'
         if 'grub2' in utils_misc.get_bootloader_cfg(session):
             line += ',nofail'
         line += ' 0 0'
         logging.debug('fstab entry is "%s"', line)
         cmd = [
             'mkdir -p /media/CDROM', 'mount /dev/cdrom /media/CDROM',
             'echo "%s" >> /etc/fstab' % line
         ]
         for i in range(len(cmd)):
             session.cmd(cmd[i])
     elif type == 'sr0':
         line = params.get('fstab_content')
         session.cmd('echo "%s" >> /etc/fstab' % line)
     elif type == 'invalid':
         line = utils_misc.generate_random_string(6)
         session.cmd('echo "%s" >> /etc/fstab' % line)
     else:
         map = {'uuid': 'UUID', 'label': 'LABEL', 'virtio': '/vd'}
         logging.info(type)
         if session.cmd_status('cat /etc/fstab|grep %s' % map[type]):
             # Specify device by UUID
             if type == 'uuid':
                 entry = session.cmd(
                     'blkid -s UUID|grep swap').strip().split()
                 # Replace path for UUID
                 origin = entry[0].strip(':')
                 replace = entry[1].replace('"', '')
             # Specify virtio device
             elif type == 'virtio':
                 entry = session.cmd('cat /etc/fstab|grep /boot').strip()
                 # Get the ID (no matter what, usually UUID)
                 origin = entry.split()[0]
                 key = origin.split('=')[1]
                 blkinfo = session.cmd('blkid|grep %s' % key).strip()
                 # Replace with virtio disk path
                 replace = blkinfo.split()[0].strip(':')
             # Specify device by label
             elif type == 'label':
                 blk = make_label(session)
                 entry = session.cmd('blkid|grep %s' % blk).strip()
                 # Remove " from LABEL="****"
                 replace = entry.split()[1].strip().replace('"', '')
                 # Replace the original id/path with label
                 origin = entry.split()[0].strip(':')
             cmd_fstab = "sed -i 's|%s|%s|' /etc/fstab" % (origin, replace)
             session.cmd(cmd_fstab)
     fstab = session.cmd_output('cat /etc/fstab')
     logging.debug('Content of /etc/fstab:\n%s', fstab)
Example #2
0
 def specify_fstab_entry(type, **kwargs):
     """
     Specify entry in fstab file
     """
     type_list = ['cdrom', 'uuid', 'label', 'virtio', 'sr0', 'invalid']
     if type not in type_list:
         test.error('Not support %s in fstab' % type)
     session = kwargs['session']
     # Specify cdrom device
     if type == 'cdrom':
         line = '/dev/cdrom /media/CDROM auto exec'
         if 'grub2' in utils_misc.get_bootloader_cfg(session):
             line += ',nofail'
         line += ' 0 0'
         logging.debug('fstab entry is "%s"', line)
         cmd = [
             'mkdir -p /media/CDROM',
             'mount /dev/cdrom /media/CDROM',
             'echo "%s" >> /etc/fstab' % line
         ]
         for i in range(len(cmd)):
             session.cmd(cmd[i])
     elif type == 'sr0':
         line = params.get('fstab_content')
         session.cmd('echo "%s" >> /etc/fstab' % line)
     elif type == 'invalid':
         line = utils_misc.generate_random_string(6)
         session.cmd('echo "%s" >> /etc/fstab' % line)
     else:
         map = {'uuid': 'UUID', 'label': 'LABEL', 'virtio': '/vd'}
         logging.info(type)
         if session.cmd_status('cat /etc/fstab|grep %s' % map[type]):
             # Specify device by UUID
             if type == 'uuid':
                 entry = session.cmd('blkid -s UUID|grep swap').strip().split()
                 # Replace path for UUID
                 origin = entry[0].strip(':')
                 replace = entry[1].replace('"', '')
             # Specify virtio device
             elif type == 'virtio':
                 entry = session.cmd('cat /etc/fstab|grep /boot').strip()
                 # Get the ID (no matter what, usually UUID)
                 origin = entry.split()[0]
                 key = origin.split('=')[1]
                 blkinfo = session.cmd('blkid|grep %s' % key).strip()
                 # Replace with virtio disk path
                 replace = blkinfo.split()[0].strip(':')
             # Specify device by label
             elif type == 'label':
                 blk = make_label(session)
                 entry = session.cmd('blkid|grep %s' % blk).strip()
                 # Remove " from LABEL="****"
                 replace = entry.split()[1].strip().replace('"', '')
                 # Replace the original id/path with label
                 origin = entry.split()[0].strip(':')
             cmd_fstab = "sed -i 's|%s|%s|' /etc/fstab" % (origin, replace)
             session.cmd(cmd_fstab)
     fstab = session.cmd_output('cat /etc/fstab')
     logging.debug('Content of /etc/fstab:\n%s', fstab)
Example #3
0
 def grub_serial_terminal(**kwargs):
     """
     Edit the serial and terminal lines of grub.conf
     """
     session = kwargs['session']
     vm = kwargs['vm']
     grub_file = utils_misc.get_bootloader_cfg(session)
     if 'grub2' in grub_file:
         test.cancel('Skip this case on grub2')
     cmd = "sed -i '1iserial -unit=0 -speed=115200\\n"
     cmd += "terminal -timeout=10 serial console' %s" % grub_file
     session.cmd(cmd)
Example #4
0
 def check_grub_file(vmcheck, check):
     """
     Check grub file content
     """
     logging.info('Checking grub file')
     grub_file = utils_misc.get_bootloader_cfg(session=vmcheck.session)
     if not grub_file:
         test.error('Not found grub file')
     content = vmcheck.session.cmd('cat %s' % grub_file)
     if check == 'console_xvc0':
         if 'console=xvc0' in content:
             log_fail('"console=xvc0" still exists')
 def check_grub_file(vmcheck, check):
     """
     Check grub file content
     """
     logging.info('Checking grub file')
     grub_file = utils_misc.get_bootloader_cfg(session=vmcheck.session)
     if not grub_file:
         test.error('Not found grub file')
     content = vmcheck.session.cmd('cat %s' % grub_file)
     if check == 'console_xvc0':
         if 'console=xvc0' in content:
             log_fail('"console=xvc0" still exists')
Example #6
0
 def grub_serial_terminal(**kwargs):
     """
     Edit the serial and terminal lines of grub.conf
     """
     session = kwargs['session']
     vm = kwargs['vm']
     grub_file = utils_misc.get_bootloader_cfg(session)
     if 'grub2' in grub_file:
         test.cancel('Skip this case on grub2')
     cmd = "sed -i '1iserial -unit=0 -speed=115200\\n"
     cmd += "terminal -timeout=10 serial console' %s" % grub_file
     session.cmd(cmd)
Example #7
0
 def bogus_kernel(**kwargs):
     """
     Add a bogus kernel entry
     """
     session = kwargs['session']
     vm = kwargs['vm']
     grub_file = utils_misc.get_bootloader_cfg(session)
     cfg = {
         "file": [grub_file, "/etc/grub.d/40_custom"],
         "search": ["title .*?.img", "menuentry '.*?}"],
         "title": [["(title\s)", r"\1bogus "],
                   ["(menuentry\s'.*?)'", r"\1 bogus'"]],
         "kernel": [["(kernel .*?)(\s)", r"\1.bogus\2"],
                    ["(/vmlinuz.*?)(\s)", r"\1.bogus\2"]],
         "make": ["pwd", "grub2-mkconfig -o /boot/grub2/grub.cfg"]
     }
     if 'grub2' in grub_file:
         index = 1
     else:
         index = 0
     content = session.cmd('cat %s' % grub_file).strip()
     search = re.search(cfg['search'][index], content, re.DOTALL)
     if search:
         # Make a copy of existing kernel entry string
         new_entry = search.group(0)
         # Replace title with bogus title
         new_entry = re.sub(cfg['title'][index][0], cfg['title'][index][1],
                            new_entry)
         # Replace kernel with bogus kernel
         new_entry = re.sub(cfg['kernel'][index][0],
                            cfg['kernel'][index][1], new_entry)
         logging.info(new_entry)
         session.cmd('echo "%s"|cat >> %s' %
                     (new_entry, cfg['file'][index]))
         # Make effect
         session.cmd(cfg['make'][index])
     else:
         test.error('No kernel found')
Example #8
0
 def bogus_kernel(**kwargs):
     """
     Add a bogus kernel entry
     """
     session = kwargs['session']
     vm = kwargs['vm']
     grub_file = utils_misc.get_bootloader_cfg(session)
     cfg = {
         "file": [grub_file, "/etc/grub.d/40_custom"],
         "search": ["title .*?.img", "menuentry '.*?}"],
         "title": [["(title\s)", r"\1bogus "],
                   ["(menuentry\s'.*?)'", r"\1 bogus'"]],
         "kernel": [["(kernel .*?)(\s)", r"\1.bogus\2"],
                    ["(/vmlinuz.*?)(\s)", r"\1.bogus\2"]],
         "make": ["pwd", "grub2-mkconfig -o /boot/grub2/grub.cfg"]
     }
     if 'grub2' in grub_file:
         index = 1
     else:
         index = 0
     content = session.cmd('cat %s' % grub_file).strip()
     search = re.search(cfg['search'][index], content, re.DOTALL)
     if search:
         # Make a copy of existing kernel entry string
         new_entry = search.group(0)
         # Replace title with bogus title
         new_entry = re.sub(cfg['title'][index][0],
                            cfg['title'][index][1], new_entry)
         # Replace kernel with bogus kernel
         new_entry = re.sub(cfg['kernel'][index][0],
                            cfg['kernel'][index][1], new_entry)
         logging.info(new_entry)
         session.cmd('echo "%s"|cat >> %s' % (new_entry, cfg['file'][index]))
         # Make effect
         session.cmd(cfg['make'][index])
     else:
         test.error('No kernel found')