示例#1
0
文件: ring.py 项目: netx-ulx/varanus
    def _new_link(self, node1, port1_cfg, node2, port2_cfg, link_builder):
        if is_some(port1_cfg):
            port1_cfg = as_a(port1_cfg,
                             instance_of=PortConfig,
                             name='port1_cfg')
        elif is_some(self.port1_cfg):
            port1_cfg = self.port1_cfg
        else:
            port1_cfg = PortConfig(2)

        if is_some(port2_cfg):
            port2_cfg = as_a(port2_cfg,
                             instance_of=PortConfig,
                             name='port2_cfg')
        elif is_some(self.port2_cfg):
            port2_cfg = self.port2_cfg
        else:
            port2_cfg = PortConfig(1)

        if is_some(link_builder):
            link_builder = as_callable(link_builder, name='link_builder')
        elif is_some(self.link_builder):
            link_builder = self.link_builder
        else:
            raise ValueError(
                'no default link builder is available; must provide one')

        port1 = port1_cfg.create_port(node1)
        port2 = port2_cfg.create_port(node2)
        return as_a(link_builder(port1, port2),
                    instance_of=LinkConfig,
                    name='created link')
示例#2
0
文件: rcli.py 项目: netx-ulx/varanus
 def __init__( self, key, node, host, port, cmd ):
     self.key = _IOUtils.encode_str( as_str( key, name='key' ) )
     self.node = as_a( node, instance_of=Node, name="node" )
     self.addr = _ShellCommandHandler.get_address( host, port )
     self.cmd = as_str( cmd, name='cmd' )
     self.sock_timeout = 1
     self.line_timeout = 1
     self.cmd_proc = None
示例#3
0
文件: ring.py 项目: netx-ulx/varanus
 def _new_node(self, node_builder, name, **params):
     node_builder = as_callable(node_builder, name='node_builder')
     num = self._next_node_num()
     name = as_str(
         name, name='name') if is_some(name) else self._next_node_name(num)
     return as_a(node_builder(self.ringnum, num, name, **params),
                 instance_of=NodeConfig,
                 name='created node')
示例#4
0
    def __init__(self, port1, port2, **params):
        port1 = as_a(port1, instance_of=PortConfig)
        if port1.has_peer():
            raise ValueError('port1 is already linked')
        port2 = as_a(port2, instance_of=PortConfig)
        if port2.has_peer():
            raise ValueError('port2 is already linked')

        port1.set_peer(port2)
        port2.set_peer(port1)

        self.node1 = port1.node
        self.port1 = port1
        self.node2 = port2.node
        self.port2 = port2
        self.params = params

        self.netlink = None
示例#5
0
文件: ring.py 项目: netx-ulx/varanus
 def create_port(self, node):
     node = as_a(node, instance_of=NodeConfig, name='node')
     if is_some(self.name):
         portname = self.name
     else:
         portname = node.name + '-e' + str(self.portnum)
     return node.add_port(self.portnum,
                          name=portname,
                          is_virtual=self.is_virtual,
                          **self.params)
示例#6
0
文件: ring.py 项目: netx-ulx/varanus
    def __init__(self,
                 ringnum,
                 prefix='n',
                 port1_cfg=None,
                 port2_cfg=None,
                 link_builder=None):
        self.ringnum = as_int(ringnum, minim=0, name='ringnum')
        self.prefix = as_str(prefix, allow_empty=True, name='prefix')
        self.port1_cfg = as_a(port1_cfg,
                              instance_of=PortConfig,
                              name='port1_cfg') if is_some(port1_cfg) else None
        self.port2_cfg = as_a(port2_cfg,
                              instance_of=PortConfig,
                              name='port2_cfg') if is_some(port2_cfg) else None
        self.link_builder = as_callable(
            link_builder,
            name='link_builder') if is_some(link_builder) else None

        self.nodes = []
        self.links = []
示例#7
0
 def __init__( self, num, node, name=None, cls=VirIntf, mac=None, ip=None, \
               **params ):
     """ Constructs a new PortConfig object.
         - num : the port number
         - node: the node that owns this port
         - name: the port name (optional)
         - cls : the interface class (default is VirIntf)
         - mac : the MAC address for the interface
         - ip  : the IP address for the interface
     """
     self.num = as_int(num)
     self.node = some(node)
     self.name = as_str(fallback(name, '{0}-e{1}'.format(node.name, num)))
     self.cls = as_a(some(cls), subclass_of=Intf)
     self.mac = mac
     self.ip = ip
     params['ip'] = ip
     self.params = params
     self._peer = None  # linked PortConfig
示例#8
0
文件: topo.py 项目: netx-ulx/varanus
    def __init__(self, mr, topo_args, local_varanus_home=None):
        parser = VaranusTopo.__build_arg_parser()
        args, _ = parser.parse_known_args(topo_args)
        self.mr = as_a(mr, instance_of=MininetRunner, name='mr')

        self.autocfg = args.autocfg
        self.gencfg_file = args.gencfg
        self.gencfg = is_some(self.gencfg_file)
        self.cleanlocal = args.cleanlocal
        self.use_netcontroller = args.netcontroller

        self.local_varanus_home = local_varanus_home

        self.controller = None  # ControllerConfig
        self.rings = {}  # Ring mapped by ringnum
        self.switches = {}  # NodeConfig mapped by name
        self.hosts = {}  # NodeConfig mapped by name
        self.collectors = {}  # NodeConfig mapped by name

        self.host_connections = OrderedDict(
        )  # list of host names orderly mapped by host name
示例#9
0
 def set_peer(self, peer):
     if is_some(self._peer):
         raise RuntimeError('a peer already exists')
     else:
         self._peer = as_a(peer, instance_of=PortConfig, name='peer')
示例#10
0
文件: topo.py 项目: netx-ulx/varanus
 def add_existing_ovs_switch_ring(self, ring):
     ring = as_a(ring, instance_of=Ring, name='ring')
     self.rings[ring.get_num()] = ring
     self.switches.update(((s.name, s) for s in ring.get_nodes()))
示例#11
0
 def intfOpts(self, intf):
     return as_a(intf, instance_of=OVSIntfMixin).ovs_intfopts()
示例#12
0
 def remove( self, intf ):
     intf = as_a( intf, instance_of=Intf, name='intf' )
     return self.cache_map.pop( intf.name, None )
示例#13
0
 def put( self, intf, qos ):
     intf = as_a( intf, instance_of=Intf, name='intf' )
     qos = some( qos, name='qos' )
     self.cache_map[intf.name] = qos
示例#14
0
 def get( self, intf ):
     intf = as_a( intf, instance_of=Intf, name='intf' )
     return self.cache_map.get( intf.name )