Changeset 199


Ignore:
Timestamp:
08/01/12 02:16:57 (12 years ago)
Author:
atzm
Message:
  • kill depends on yaml
Location:
etherws/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • etherws/trunk/etherws.py

    r198 r199  
    99#   - websocket-client-0.7.0 
    1010#   - tornado-2.3 
    11 #   - PyYAML-3.10 
    1211# 
    1312# =========================================================================== 
     
    4443import time 
    4544import json 
    46 import yaml 
    4745import fcntl 
    4846import base64 
     
    559557                if entry: 
    560558                    mac = EthernetFrame.format_mac(mac) 
    561                     list_.append([vid, mac, entry.port.number, int(entry.age)]) 
    562         return {'result': list_} 
     559                    list_.append({ 
     560                        'vid':  vid, 
     561                        'mac':  mac, 
     562                        'port': entry.port.number, 
     563                        'age':  int(entry.age), 
     564                    }) 
     565        return {'entries': list_} 
    563566 
    564567    def handle_listPort(self, params): 
    565568        list_ = [self._portstat(p) for p in self._switch.portlist] 
    566         return {'result': list_} 
     569        return {'entries': list_} 
    567570 
    568571    def handle_addPort(self, params): 
     
    576579            portnum = interface.open() 
    577580            list_.append(self._portstat(self._switch.get_port(portnum))) 
    578         return {'result': list_} 
     581        return {'entries': list_} 
    579582 
    580583    def handle_delPort(self, params): 
     
    584587            list_.append(self._portstat(port)) 
    585588            port.interface.close() 
    586         return {'result': list_} 
     589        return {'entries': list_} 
    587590 
    588591    def handle_shutPort(self, params): 
     
    592595            port.shut = bool(p['shut']) 
    593596            list_.append(self._portstat(port)) 
    594         return {'result': list_} 
     597        return {'entries': list_} 
    595598 
    596599    def _optparse_tap(self, opt): 
     
    764767        return json.loads(urllib2.urlopen(req, data).read()) 
    765768 
     769    def maxlen(dict_, key, min_): 
     770        max_ = max(len(str(r[key])) for r in dict_) 
     771        return min_ if max_ < min_ else max_ 
     772 
     773    def print_portlist(result): 
     774        pmax = maxlen(result, 'port', 4) 
     775        ymax = maxlen(result, 'type', 4) 
     776        smax = maxlen(result, 'shut', 5) 
     777        rmax = maxlen(result, 'rx', 2) 
     778        tmax = maxlen(result, 'tx', 2) 
     779        fmt = '  %%%ds  %%%ds  %%%ds  %%%ds  %%%ds  %%s' % \ 
     780              (pmax, ymax, smax, rmax, tmax) 
     781        print(fmt % ('Port', 'Type', 'State', 'RX', 'TX', 'Target')) 
     782        for r in result: 
     783            shut = 'shut' if r['shut'] else 'up' 
     784            print(fmt % 
     785                  (r['port'], r['type'], shut, r['rx'], r['tx'], r['target'])) 
     786 
    766787    def handle_ctl_addport(args): 
    767788        params = [{ 
     
    775796            } 
    776797        }] 
    777         return request(args, 'addPort', params) 
     798        result = request(args, 'addPort', params) 
     799        if result['error']: 
     800            print(result['error']['message']) 
     801        else: 
     802            print_portlist(result['result']['entries']) 
    778803 
    779804    def handle_ctl_shutport(args): 
     
    781806            raise ValueError('invalid port: %d' % args.port) 
    782807        params = [{'port': args.port, 'shut': args.no}] 
    783         return request(args, 'shutPort', params) 
     808        result = request(args, 'shutPort', params) 
     809        if result['error']: 
     810            print(result['error']['message']) 
     811        else: 
     812            print_portlist(result['result']['entries']) 
    784813 
    785814    def handle_ctl_delport(args): 
     
    787816            raise ValueError('invalid port: %d' % args.port) 
    788817        params = [{'port': args.port}] 
    789         return request(args, 'delPort', params) 
     818        result = request(args, 'delPort', params) 
     819        if result['error']: 
     820            print(result['error']['message']) 
     821        else: 
     822            print_portlist(result['result']['entries']) 
    790823 
    791824    def handle_ctl_listport(args): 
    792         return request(args, 'listPort', []) 
     825        result = request(args, 'listPort', []) 
     826        if result['error']: 
     827            print(result['error']['message']) 
     828        else: 
     829            print_portlist(result['result']['entries']) 
    793830 
    794831    def handle_ctl_listfdb(args): 
    795         return request(args, 'listFdb', []) 
    796  
    797     res = locals()['handle_ctl_' + args.control_method](args) 
    798  
    799     if res['error']: 
    800         print(res['error']['message']) 
    801     else: 
    802         print(yaml.safe_dump(res['result']).strip()) 
     832        result = request(args, 'listFdb', []) 
     833        if result['error']: 
     834            print(result['error']['message']) 
     835            return 
     836        result = result['result']['entries'] 
     837        vmax = maxlen(result, 'vid', 4) 
     838        mmax = maxlen(result, 'mac', 3) 
     839        pmax = maxlen(result, 'port', 4) 
     840        amax = maxlen(result, 'age', 3) 
     841        fmt = '  %%%ds  %%%ds  %%%ds  %%%ds' % (vmax, mmax, pmax, amax) 
     842        print(fmt % ('VLAN', 'MAC', 'Port', 'Age')) 
     843        for r in result: 
     844            print(fmt % (r['vid'], r['mac'], r['port'], r['age'])) 
     845 
     846    locals()['handle_ctl_' + args.control_method](args) 
    803847 
    804848 
  • etherws/trunk/setup.py

    r194 r199  
    5151        'websocket-client>=0.7.0', 
    5252        'tornado>=2.3', 
    53         'PyYAML>=3.10', 
    5453    ], 
    5554    classifiers=[ 
Note: See TracChangeset for help on using the changeset viewer.