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')
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
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')
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
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)
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 = []
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
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
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')
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()))
def intfOpts(self, intf): return as_a(intf, instance_of=OVSIntfMixin).ovs_intfopts()
def remove( self, intf ): intf = as_a( intf, instance_of=Intf, name='intf' ) return self.cache_map.pop( intf.name, None )
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
def get( self, intf ): intf = as_a( intf, instance_of=Intf, name='intf' ) return self.cache_map.get( intf.name )