Exemplo n.º 1
0
 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
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
 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