Exemplo n.º 1
0
    def addRouters(self, *routers: Union[str, Tuple[str, Dict[str, Any]]],
                   **common_opts) -> List['RouterDescription']:
        """Add several routers in one go.

        :param routers: router names or tuples (each containing the router name
            and options only applying to this router)
        :param common_opts: common router options (optional)"""
        new_routers = []
        for router_info in routers:
            # Accept either router names or tuple containing both a router name
            # and the specific options of the router
            n, opt = router_info if is_container(router_info) \
                else (router_info, {})
            # Merge router options by giving precedence to specific ones
            router_opts = {
                k: v
                for k, v in itertools.chain(common_opts.items(), opt.items())
            }
            try:
                new_routers.append(self.addRouter(n, **router_opts))
            except Exception as e:
                lg.error("Cannot create router '{}' with options '{}'".format(
                    n, router_opts))
                raise e

        return new_routers
Exemplo n.º 2
0
 def __init__(self, code, val):
     super().__init__(code, val)
     if self.val is None:
         pass
     elif not is_container(self.val):
         self.val = str(self.val)
     else:
         self.val = ','.join(self.val)
     self.prefix = "-m multiport "
     self.code = "%ss" % self.code
Exemplo n.º 3
0
 def __init__(self, prefix=(), valid_lifetime=RA_DEFAULT_VALID,
              preferred_lifetime=RA_DEFAULT_PREF):
     """:param prefix: the list of IPv6 prefixes to advertise
        :param valid_lifetime: corresponds to the AdvValidLifetime
                               in radvd.conf(5) for this prefix
        :param preferred_lifetime: corresponds to the AdvPreferredLifetime
                                   in radvd.conf(5) for this prefix"""
     super(AdvPrefix, self).__init__()
     self["prefixes"] = list(prefix) if is_container(prefix) else [prefix]
     self["valid_lifetime"] = valid_lifetime
     self["preferred_lifetime"] = preferred_lifetime
Exemplo n.º 4
0
 def build(self):
     if self.val is None:
         yield None
     else:
         if not is_container(self.val):
             self.val = (str(self.val), )
         for v in self.val:
             for val in self.render(v):
                 yield "{prefix}{neg}-{code} {val}".format(
                     prefix=self.prefix,
                     neg='' if not self.negate else '! ',
                     code=self.code
                     if len(self.code.split()[0]) == 1 else "-" + self.code,
                     val=val)