def get_ports(self): """ Return a dict of the ports (port, addr, tag, type) on the bridge, looks like { 'qvoxxx':{ 'port':2, 'addr':08:91:ff:ff:f3, 'vlan':1, 'type':internal, } } """ ports = {} cmd = "ovs-ofctl show %s" % self.bridge result, error = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True).communicate() if error: return {} #output('%-8s%-16s%-16s\n' %('PORT','INTF','ADDR')) bridges = get_bridges() for l in result.split('\n'): if l.startswith(' ') and l.find('(') >= 0 and l.find(')') >= 0: l = l.strip() port = get_str_before(l, '(') intf = get_str_between(l, '(', ')') addr = l[l.find('addr:') + len('addr:'):] #output('%-8s%-16s%-16s\n' %(port,intf,addr)) if self.bridge in bridges and intf in bridges[self.bridge]['Port']: tag = bridges[self.bridge]['Port'][intf].get('vlan', '') intf_type = bridges[self.bridge]['Port'][intf].get('type', '') else: tag, intf_type = '', '' ports[intf] = {'port': port, 'addr': addr, 'vlan': tag, 'type': intf_type} return ports
def br_list(): """ List available bridges. """ bridges = get_bridges() if not bridges: output('None bridge exists.\n') return br_info = '' for br in sorted(bridges.keys()): br_info += "%s\n" % br if bridges[br]['Port']: br_info += " Port:\t\t%s\n" % (' '.join(sorted(bridges[br]['Port'].keys()))) if bridges[br]['Controller']: br_info += " Controller:\t%s\n" % (' '.join(bridges[br]['Controller'])) if bridges[br]['fail_mode']: br_info += " Fail_Mode:\t%s\n" % (bridges[br]['fail_mode']) output(br_info)
def get_ports(self): """ Return a dict of the ports (port, addr, tag, type) on the bridge, looks like { 'qvoxxx':{ 'port':2, 'addr':08:91:ff:ff:f3, 'vlan':1, 'type':internal, } } """ ports = {} cmd = "ovs-ofctl show %s" % self.bridge result, error = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True).communicate() if error: return {} #output('%-8s%-16s%-16s\n' %('PORT','INTF','ADDR')) bridges = get_bridges() for l in result.split('\n'): if l.startswith(' ') and l.find('(') >= 0 and l.find(')') >= 0: l = l.strip() port = get_str_before(l, '(') intf = get_str_between(l, '(', ')') addr = l[l.find('addr:') + len('addr:'):] #output('%-8s%-16s%-16s\n' %(port,intf,addr)) if self.bridge in bridges and intf in bridges[ self.bridge]['Port']: tag = bridges[self.bridge]['Port'][intf].get('vlan', '') intf_type = bridges[self.bridge]['Port'][intf].get( 'type', '') else: tag, intf_type = '', '' ports[intf] = { 'port': port, 'addr': addr, 'vlan': tag, 'type': intf_type } return ports