Skip to content

Impossible to use BBP RouteMapEntry call_action and exit_policy #122

@Mathieu-COSYNS-Student

Description

@Mathieu-COSYNS-Student

As mentioned in #107 and #99. I don't think that in interface to configure BGP route maps is good.

I was looking for a way to configure exit_policy. I was not able to find a method in bgp.py to do that so I build a work around.

  def route_map_add_exit_policy(
                                router: RouterDescription,
                                route_map_name: str,
                                route_map_order: str,
                                exit_policy: Optional[str] = None):
      """
      ipmininet does not have a interface to add exit policies on route maps!
      This is a hacky why to do it.
      """
      route_maps = router.get_config(BGP).topo.getNodeInfo(
          router, 'bgp_route_maps', list)

      for route_map in route_maps:
          if route_map_name == route_map.name:
              for order, route_map_entry in route_map.entries.items():
                  if route_map_order == order:
                      route_map_entry.exit_policy = exit_policy

When I configure a router with this function and I start, an error occurs.

Couldnt render a config file( bgpd.mako )

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/ipmininet/router/config/base.py", line 334, in render
    cfg_content[filename] = template.render(**kwargs)
  File "/usr/local/lib/python3.8/dist-packages/mako/template.py", line 473, in render
    return runtime._render(self, self.callable_, args, data)
  File "/usr/local/lib/python3.8/dist-packages/mako/runtime.py", line 878, in _render
    _render_context(
  File "/usr/local/lib/python3.8/dist-packages/mako/runtime.py", line 920, in _render_context
    _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
  File "/usr/local/lib/python3.8/dist-packages/mako/runtime.py", line 947, in _exec_template
    callable_(context, *args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/ipmininet/router/config/templates/bgpd.mako", line 104, in render_body
    on-match ${rm.exit_policy}
AttributeError: 'RouteMap' object has no attribute 'exit_policy'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions