azure-linux-automation/remote-scripts/BVT-VERIFY-UUID-FSTAB.py

75 строки
2.8 KiB
Python

#!/usr/bin/python
from azuremodules import *
import sys
import time
import re
import linecache
def RunTest():
UpdateState("TestRunning")
uuid_from_demesg = 0
dmsg_dev_count = 0
output = JustRun("dmesg")
output = output.lower()
filter_condition_dmesg = r'.*root=UUID=(.*?) .*'
filter_condition_fstab = r'.*UUID=(.*?)[ \t]+\/[ \t]+'
if (DetectDistro()[0] == 'opensuse' or DetectDistro()[0] == 'SUSE'or DetectDistro()[0] == 'sles'):
filter_condition_dmesg = r'.*root=/dev/disk/by-uuid/(.*?) .*'
filter_condition_fstab = r'.*/dev/disk/by-uuid/(.*?)[ \t]+\/[ \t]+'
dmsg_dev_count = output.count('command line:.*root=/dev/sd')
outputlist = re.split("\n", output)
for line in outputlist:
matchObj = re.match(filter_condition_dmesg, line, re.M|re.I)
if matchObj:
uuid_from_demesg = matchObj.group(1)
uuid_from_fstab = 0
fstab_dev_count = 0
fstab_dev_count = output = JustRun("cat /etc/fstab")
fstab_dev_count = output.count('/dev/sd')
outputlist = re.split("\n", output)
for line in outputlist:
matchObj = re.match(filter_condition_fstab, line, re.M|re.I)
#matchObj = re.match( r'.*UUID=(.*?)[ \t]*/ .*', line, re.M|re.I)
if matchObj:
uuid_from_fstab = matchObj.group(1)
if(uuid_from_demesg and uuid_from_fstab and (uuid_from_demesg == uuid_from_fstab) and (dmsg_dev_count == 0) and (fstab_dev_count == 0)):
ResultLog.info('PASS')
#print "UUID are valid and matched"
elif (DetectDistro()[0] == 'coreos'):
output = JustRun("dmesg | grep root")
if ("root=LABEL" in output):
RunLog.info('CoreOS uses disk labels to specify drives.')
ResultLog.info('PASS')
else:
RunLog.info('root partition is not mounted using LABEL in dmesg.')
ResultLog.info('FAIL')
elif(DetectDistro()[0] == 'ubuntu' and fstab_dev_count == 1):
if (uuid_from_demesg != 0 and uuid_from_fstab != 0 and uuid_from_demesg == uuid_from_fstab and dmsg_dev_count == 0):
ResultLog.info('PASS')
else:
ResultLog.info('FAIL')
else:
if (uuid_from_demesg == 0):
RunLog.info('/ partition is not mounted using UUID in dmesg.')
if (uuid_from_fstab == 0):
RunLog.info('/ partition is not mounted using UUID in /etc/fstab.')
if (uuid_from_demesg != uuid_from_fstab):
RunLog.info(' UUID is not same in dmesg and /etc/fstab.')
if (dmsg_dev_count != 0):
RunLog.info('Found disks mounted without using UUID in dmesg.')
if (fstab_dev_count != 0):
RunLog.info('Found disks mounted without using UUID in /etc/fstab.')
ResultLog.info('FAIL')
UpdateState("TestCompleted")
RunTest()