def create_NETCONF_EE (self, name, type=TYPE_EE_LOCAL, **params): """ Create and add a new EE to Mininet network. The type of EE can be {local|remote} NETCONF-based. :param name: name of the EE: switch: name, agent: agt_+'name' :type name: str :param type: type of EE {local|remote} :type type: str :param opts: additional options for the switch in EE :type opts: str :param dpid: remote switch DPID (remote only) :param username: NETCONF username (remote only) :param passwd: NETCONF password (remote only) :param ip: control Interface for the agent (optional) :param agentPort: port to listen on for NETCONF connections, (else set \ automatically) :param minPort: first VNF control port which can be used (else set \ automatically) :param cPort: number of VNF control ports (and VNFs) which can be used ( \ default: 10) :return: tuple of newly created :class:`mininet.node.Agent` and \ :class:`mininet.node.Switch` object :rtype: tuple """ type = type.upper() cfg = CONFIG.get_EE_params() cfg.update(params) cfg['dpid'] = self.__get_new_dpid() if type == self.TYPE_EE_LOCAL: # create local NETCONF-based log.debug("Create local NETCONF EE with name: %s" % name) sw = self.mn.addSwitch(name, **cfg) elif type == self.TYPE_EE_REMOTE: # create remote NETCONF-based log.debug("Create remote NETCONF EE with name: %s" % name) cfg["inNamespace"] = False sw = self.mn.addRemoteSwitch(name, cls=None, **cfg) else: raise TopologyBuilderException( "Unsupported NETCONF-based EE type: %s!" % type) agt = self.mn.addAgent('agt_' + name, cls=None, **cfg) agt.setSwitch(sw) return agt, sw
def create_static_EE (self, name, cls=None, **params): """ Create and add a new EE to Mininet in the static way. This function is for only backward compatibility. .. warning:: Not tested yet! :param name: name of the Execution Environment :type name: str :param cls: custom EE class/constructor (optional) :type cls: :class:`mininet.node.EE` :param cores: Specify (real) cores that our cgroup can run on (optional) :type cores: list :param frac: Set overall CPU fraction for this EE (optional) :type frac: list :param vlanif: set vlan interfaces (optional) :type vlanif: list :return: newly created EE object :rtype: :class:`mininet.node.EE` """ # create static EE cfg = CONFIG.get_EE_params() cfg.update(params) cfg['dpid'] = self.__get_new_dpid() log.debug("Create static EE with name: %s" % name) ee = self.mn.addEE(name=name, cls=cls, **cfg) if 'cores' in cfg: ee.setCPUs(**cfg['cores']) if 'frac' in cfg: ee.setCPUFrac(**cfg['frac']) if 'vlanif' in cfg: for vif in cfg['vlaninf']: ee.cmdPrint('vconfig add ' + name + '-eth0 ' + vif[1]) ee.cmdPrint('ifconfig ' + name + '-eth0.' + vif[1] + ' ' + vif[0]) return ee