[976] | 1 |
|
---|
| 2 | import re
|
---|
| 3 | import struct
|
---|
| 4 |
|
---|
| 5 | from ....builtins import *
|
---|
| 6 |
|
---|
| 7 | from ...exceptions import *
|
---|
| 8 | from ...expressions import *
|
---|
| 9 | from ...streams import *
|
---|
| 10 |
|
---|
| 11 | def vmoprcmd_validate(data):
|
---|
| 12 |
|
---|
| 13 | for line in data:
|
---|
| 14 | if re.compile(r'^\s+PENDING REQUESTS\s+$').match(line):
|
---|
| 15 | return True
|
---|
| 16 | if re.compile(r'^\s+DRIVE STATUS\s+$').match(line):
|
---|
| 17 | return True
|
---|
| 18 | if re.compile(r'^\s+ADDITIONAL DRIVE STATUS\s+$').match(line):
|
---|
| 19 | return True
|
---|
| 20 |
|
---|
| 21 | return false
|
---|
| 22 |
|
---|
| 23 | def vmoprcmd_split(data):
|
---|
| 24 |
|
---|
| 25 | pending_requests = []
|
---|
| 26 | drive_status = []
|
---|
| 27 | additional_drive_status = []
|
---|
| 28 | lines = []
|
---|
| 29 | current_section = None
|
---|
| 30 |
|
---|
| 31 | i = 0
|
---|
| 32 | j = len(data)
|
---|
| 33 |
|
---|
| 34 | while( i < j ):
|
---|
| 35 | line = data[i]
|
---|
| 36 | i += 1
|
---|
| 37 | if re.compile(r'^\s+PENDING REQUESTS\s+$').match(line):
|
---|
| 38 | print 'PROCESSING PENDING REQUESTS'
|
---|
| 39 | current_section = 'PENDING REQUESTS'
|
---|
| 40 | lines = pending_requests
|
---|
| 41 | continue
|
---|
| 42 | if re.compile(r'^\s+DRIVE STATUS\s+$').match(line):
|
---|
| 43 | print 'PROCESSING DRIVE STATUS'
|
---|
| 44 | current_section = 'DRIVE STATUS'
|
---|
| 45 | lines = drive_status
|
---|
| 46 | continue
|
---|
| 47 | if re.compile(r'^\s+ADDITIONAL DRIVE STATUS\s+$').match(line):
|
---|
| 48 | print 'PROCESSING ADDITIONAL DRIVE STATUS'
|
---|
| 49 | current_section = 'ADDITIONAL DRIVE STATUS'
|
---|
| 50 | lines = additional_drive_status
|
---|
| 51 | continue
|
---|
| 52 | if re.compile(r'^$').match(line):
|
---|
| 53 | continue
|
---|
| 54 | if current_section == 'PENDING REQUESTS' and re.compile(r'^\s+<NONE>\s+$').match(line):
|
---|
| 55 | continue
|
---|
| 56 | if current_section == 'DRIVE STATUS' and re.compile(r'^Drv').search(line):
|
---|
| 57 | continue
|
---|
| 58 | if current_section == 'ADDITIONAL DRIVE STATUS' and re.compile(r'^Drv').search(line):
|
---|
| 59 | continue
|
---|
| 60 | lines.append(line)
|
---|
| 61 | return (pending_requests, drive_status, additional_drive_status)
|
---|
| 62 |
|
---|
| 63 |
|
---|
| 64 | def drive_status_parse(data):
|
---|
| 65 |
|
---|
| 66 | ds = {}
|
---|
| 67 |
|
---|
| 68 | for line in data:
|
---|
| 69 | line = line[:-1]
|
---|
| 70 | print line
|
---|
| 71 | (drv, type, control, user, label, recmid, extmid, ready, wrenbl, reqid) = struct.unpack('3sx6sx8sx9sx6sx7sx7sx7sx9sx5s', line)
|
---|
| 72 | ds['drv' ] = drv
|
---|
| 73 | ds['type' ] = type
|
---|
| 74 | ds['control'] = control
|
---|
| 75 | ds['user' ] = user
|
---|
| 76 | ds['label' ] = label
|
---|
| 77 | ds['recmid' ] = recmid
|
---|
| 78 | ds['extmid' ] = extmid
|
---|
| 79 | ds['ready' ] = ready
|
---|
| 80 | ds['wrenbl' ] = wrenbl
|
---|
| 81 | ds['reqid' ] = reqid
|
---|
| 82 | for key in ds.keys():
|
---|
| 83 | ds[key] = ds[key].lstrip().rstrip()
|
---|
| 84 | if ds[key] == '' or ds[key] == '-':
|
---|
| 85 | ds[key] = None
|
---|
| 86 | print 'Drv Type Control User Label RecMID ExtMID Ready Wr.Enbl. ReqId'
|
---|
| 87 | print '%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|' % (ds['drv'], ds['type'], ds['control'], ds['user'], ds['label'], ds['recmid'], ds['extmid'], ds['ready'], ds['wrenbl'], ds['reqid'])
|
---|
| 88 |
|
---|
| 89 |
|
---|
| 90 |
|
---|
| 91 |
|
---|
| 92 | def additional_drive_status_parse(data):
|
---|
| 93 |
|
---|
| 94 | ds = {}
|
---|
| 95 |
|
---|
| 96 | for line in data:
|
---|
| 97 | line = line[:-1]
|
---|
| 98 | print line
|
---|
| 99 | (drv, drivename, shared, assigned, comment) = struct.unpack('3sx20sx9sx15sx26s', line)
|
---|
| 100 | ds['drv' ] = drv
|
---|
| 101 | ds['drivename' ] = drivename
|
---|
| 102 | ds['shared' ] = shared
|
---|
| 103 | ds['assigned' ] = assigned
|
---|
| 104 | ds['comment' ] = comment
|
---|
| 105 | for key in ds.keys():
|
---|
| 106 | ds[key] = ds[key].lstrip().rstrip()
|
---|
| 107 | if ds[key] == '' or ds[key] == '-':
|
---|
| 108 | ds[key] = None
|
---|
| 109 | print 'Drv DriveName Shared Assigned Comment'
|
---|
| 110 | print '%s|%s|%s|%s|%s|' % (ds['drv'], ds['drivename'], ds['shared'], ds['assigned'], ds['comment'])
|
---|
| 111 |
|
---|