(self, _do_not_create=False, **kwargs)
| 40 | class Module(object): |
| 41 | |
| 42 | def __init__(self, _do_not_create=False, **kwargs): |
| 43 | self.name = '<uninitialized>' |
| 44 | self.mclass = self.__class__.__name__ |
| 45 | |
| 46 | assert self.__class__.__name__ != 'Module', \ |
| 47 | "Should not instantiate 'Module' directly" |
| 48 | |
| 49 | if 'name' in kwargs: |
| 50 | name = kwargs['name'] |
| 51 | del kwargs['name'] |
| 52 | else: |
| 53 | name = None |
| 54 | |
| 55 | if not _do_not_create: |
| 56 | # create an object |
| 57 | ret = self.bess.create_module(self.__class__.__name__, name, |
| 58 | self.choose_arg(None, kwargs)) |
| 59 | self.name = ret.name |
| 60 | else: |
| 61 | # bind to a pre-existing object, check if it's real |
| 62 | assert name is not None, "Module should not be None" |
| 63 | info = self.bess.get_module_info(name) |
| 64 | assert self.mclass == info.mclass, "Module %s is not of % type" % ( |
| 65 | name, self.mclass) |
| 66 | self.name = name |
| 67 | |
| 68 | # add mclass-specific methods |
| 69 | cls = self.bess.get_mclass_info(self.__class__.__name__) |
| 70 | assert len(cls.cmds) == len(cls.cmd_args) |
| 71 | for i, cmd in enumerate(cls.cmds): |
| 72 | func = _callback_factory(self, cmd, cls.cmd_args[i]) |
| 73 | setattr(self, cmd, types.MethodType(func, self)) |
| 74 | |
| 75 | self.ogate = None |
| 76 | self.igate = None |
| 77 | |
| 78 | def __str__(self): |
| 79 | return '%s::%s' % (self.name, str(self.__class__.__name__)) |
nothing calls this directly
no test coverage detected