Changeset 191


Ignore:
Timestamp:
07/30/12 23:48:21 (12 years ago)
Author:
atzm
Message:
  • implement ctl command "addport"
File:
1 edited

Legend:

Unmodified
Added
Removed
  • etherws/trunk/etherws.py

    r190 r191  
    320320 
    321321class EtherWebSocketHandler(DebugMixIn, BasicAuthMixIn, WebSocketHandler): 
     322    IFTYPE = 'server' 
     323 
    322324    def __init__(self, app, req, switch, htpasswd=None, debug=False): 
    323325        super(EtherWebSocketHandler, self).__init__(app, req) 
     
    326328        self._debug = debug 
    327329 
    328     @classmethod 
    329     def get_type(cls): 
    330         return 'server' 
    331  
    332330    def get_target(self): 
    333331        return self.request.remote_ip 
     
    348346 
    349347class TapHandler(DebugMixIn): 
     348    IFTYPE = 'tap' 
    350349    READ_SIZE = 65535 
    351350 
     
    356355        self._debug = debug 
    357356        self._tap = None 
    358  
    359     @classmethod 
    360     def get_type(cls): 
    361         return 'tap' 
    362357 
    363358    def get_target(self): 
     
    416411 
    417412class EtherWebSocketClient(DebugMixIn): 
     413    IFTYPE = 'client' 
     414 
    418415    def __init__(self, ioloop, switch, url, ssl_=None, cred=None, debug=False): 
    419416        self._ioloop = ioloop 
     
    429426            auth = ['Authorization: Basic %s' % token] 
    430427            self._options['header'] = auth 
    431  
    432     @classmethod 
    433     def get_type(cls): 
    434         return 'client' 
    435428 
    436429    def get_target(self): 
     
    495488class EtherWebSocketControlHandler(DebugMixIn, BasicAuthMixIn, RequestHandler): 
    496489    NAMESPACE = 'etherws.control' 
    497     INTERFACES = { 
    498         TapHandler.get_type():           TapHandler, 
    499         EtherWebSocketClient.get_type(): EtherWebSocketClient, 
     490    IFTYPES = { 
     491        TapHandler.IFTYPE:           TapHandler, 
     492        EtherWebSocketClient.IFTYPE: EtherWebSocketClient, 
    500493    } 
    501494 
     
    540533            target = p['target'] 
    541534            options = getattr(self, '_optparse_' + type_)(p.get('options', {})) 
    542             klass = self.INTERFACES[type_] 
     535            klass = self.IFTYPES[type_] 
    543536            interface = klass(self._ioloop, self._switch, target, **options) 
    544537            portnum = interface.open() 
     
    577570        return { 
    578571            'port':   port.number, 
    579             'type':   port.interface.get_type(), 
     572            'type':   port.interface.IFTYPE, 
    580573            'target': port.interface.get_target(), 
    581574            'tx':     port.tx, 
     
    735728 
    736729    def handle_ctl_addport(args): 
    737         raise NotImplementedError('addport') 
     730        params = [{ 
     731            'type':    args.type, 
     732            'target':  args.target, 
     733            'options': { 
     734                'instance': args.insecure, 
     735                'cacerts':  args.cacerts, 
     736                'user':     args.user, 
     737                'passwd':   args.passwd, 
     738            } 
     739        }] 
     740        res = request(args, 'addPort', params) 
     741        print(yaml.safe_dump(res)) 
    738742 
    739743    def handle_ctl_shutport(args): 
     
    790794 
    791795    parser_c_ap = control_method.add_parser('addport') 
     796    parser_c_ap.add_argument( 
     797        'type', choices=EtherWebSocketControlHandler.IFTYPES.keys()) 
    792798    parser_c_ap.add_argument('target') 
    793799    parser_c_ap.add_argument('--insecure', action='store_true', default=False) 
Note: See TracChangeset for help on using the changeset viewer.