Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Configure Renovate #82

Open
wants to merge 30 commits into
base: stable/ussuri-m3
Choose a base branch
from
Open

Configure Renovate #82

wants to merge 30 commits into from

Commits on Jan 31, 2023

  1. Configuration menu
    Copy the full SHA
    4baeb6c View commit details
    Browse the repository at this point in the history
  2. Make stateless NAT mandatory in IOS XE 17.6 and above

    The migration for stateless NAT is complicated as it cannot be done
    during operations. Hence the game plan is to reboot the passive device
    on 17.6, let it be synced with NAT stateless, then failover and do the
    dance again.
    
    For this procedure it comes in handy for us to completely ignore any
    stateless NAT config and just make it mandatory when 17.6 is running.
    swagner-de authored and sven-rosenzweig committed Jan 31, 2023
    Configuration menu
    Copy the full SHA
    5172e6a View commit details
    Browse the repository at this point in the history
  3. Always use no-alias NAT on firmware 17.6 and above

    Static NAT creates an implicit arp alias if the NAT IP resides in the ip
    nat outside interface's subnet. We also create an explicit arp alias for
    every static NAT statement, regardless of subnet affinity. Cisco stated
    that on cleanup there might be a condition under which the deletion of
    the explicity arp alias and the deletion of the implicit arp alias
    (triggered by the deletion of the static arp statement) challange each
    other and lead to the arp alias still residing in hardware. This in turn
    means the device still replies to arp for that IP.
    
    As a workaround we add each static NAT statement without the implicit
    arp alias. We handle the explicit arp alias already, hence now there is
    only a single arp alias in the house and the deletion should work as
    expected.
    swagner-de authored and sven-rosenzweig committed Jan 31, 2023
    Configuration menu
    Copy the full SHA
    b68eb20 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    056f456 View commit details
    Browse the repository at this point in the history
  5. netconf-yang: match-in-vrf - YANG_TYPE.EMPTY, remove yang-key argument

    match-in-vrf is a YANG_TYPE.EMPTY, if the tag is present it is true, if
    it is absent, it is false. Found this after writing a parsing test for
    this class. Also the yang-key argument is redundant as NyBase will
    replace all underscores in the key by dashes.
    swagner-de authored and sven-rosenzweig committed Jan 31, 2023
    Configuration menu
    Copy the full SHA
    3eb4fe5 View commit details
    Browse the repository at this point in the history

Commits on Feb 2, 2023

  1. Configuration menu
    Copy the full SHA
    2dbf1d3 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    d04905e View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    0a6dad1 View commit details
    Browse the repository at this point in the history

Commits on Feb 3, 2023

  1. Merge pull request #86 from sapcc/py38_workflow_tox

    Python 3.8: github workflow and tox
    sven-rosenzweig authored Feb 3, 2023
    Configuration menu
    Copy the full SHA
    adc557e View commit details
    Browse the repository at this point in the history
  2. Merge pull request #87 from sapcc/fix/az_check

    [yoga] neutron callback system passing dbevent payload instead of context, router_id, network_id
    sven-rosenzweig authored Feb 3, 2023
    Configuration menu
    Copy the full SHA
    001bbfe View commit details
    Browse the repository at this point in the history

Commits on Feb 21, 2023

  1. enforce tox<4.0

    sven-rosenzweig committed Feb 21, 2023
    Configuration menu
    Copy the full SHA
    47acf7b View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    eab1573 View commit details
    Browse the repository at this point in the history

Commits on Mar 9, 2023

  1. Advertise extraroute-atomic extension

    We support extraroute-atomic, but don't advertise it properly, which
    means it does not appear in the available OpenStack network extensions.
    This advertising is needed for clients which want to decide if they can
    use that API or not.
    
    Reviewing the whole way we manage supported_extension_aliases shows that
    we should probably rework this code and orient ourselves a bit at what
    happened in the reference implementation in neutron, but today is not
    that day.
    sebageek committed Mar 9, 2023
    Configuration menu
    Copy the full SHA
    346a941 View commit details
    Browse the repository at this point in the history

Commits on Mar 10, 2023

  1. Use payloads / publish for router callbacks

    Neutron dropped registry.notify() and migrated to using payloads and
    publish(), so we're doing the same. This change is very much oriented on
    what can be found in neutron in neutron/agent/l3/agent.py.
    sebageek committed Mar 10, 2023
    Configuration menu
    Copy the full SHA
    54b9267 View commit details
    Browse the repository at this point in the history

Commits on Apr 24, 2023

  1. Add option only to disable scheduling on an agent

    admin-shutting an agent leads to the agent being completely vacated.
    However we have cases in which we want an agent to stay online, but
    prevent any new workloads to be scheduled on it. This can be a capacity
    consideration or because it is meant to be decomissioned.
    swagner-de committed Apr 24, 2023
    Configuration menu
    Copy the full SHA
    425cc81 View commit details
    Browse the repository at this point in the history

Commits on Aug 21, 2023

  1. Delay route configuration after interface configuration

    When a router/VRF is part of a BGPVPN, the BGPVPN portion is configured
    first. If a BGPVPN happens to have a peer on the local agent (hardware
    router) this peer VRF's routes are leaked into the to be configured VRF.
    Due to the order of operation, this leaking happens before any
    VRF-attached l3 interfaces are configured.
    
    Now say, a customer also configured an extra route. That extra route
    also happens to be contained in a leaked route and that extra routes's
    next hop also happens to be another BD-VIF in a BGPVPN-peered-VRF that
    is local on that hardware router.
    
    Even though the to be configured VRF has no l3 interface yet, it already
    has a BGP RIB path pointing to that next hop address of the extra route.
    It also believes it's a local interface, which it is, but it also is
    not, because that BD-VIF lives in another VRF.
    
    The hardware router not caring about such technicalities, will refuse to
    configure the extra route with `%Invalid next hop address (it's this
    router)` and all subsequent configuration fails.
    
    The fact that the next hop lives on the same route can however be
    obscured if the next hop is directly connected. It becomes directly
    connected when the BD-VIFs are configure prior. So let's do that.
    
    OpenStack also prevents you from creating extra routes where the next
    hop is not local to the virtual router, so I think all cases should be
    covered. Even on interface removal, OpenStack checks if a route still
    utilizes that interface.
    
    See https://github.com/sapcc/neutron/blob/5fb5653ffe700a8f9fb0949d16ecbf0978b61fb6/neutron/db/extraroute_db.py#L74-L86
    https://github.com/sapcc/neutron/blob/5fb5653ffe700a8f9fb0949d16ecbf0978b61fb6/neutron/db/extraroute_db.py#L154-L164
    swagner-de committed Aug 21, 2023
    Configuration menu
    Copy the full SHA
    0d0194c View commit details
    Browse the repository at this point in the history

Commits on Aug 24, 2023

  1. Configurable ARP timeout for router interfaces

    We can now specify an ARP timeout that gets configured on all router
    interfaces, configured separately for external and internal interfaces.
    This can be used facilitate faster ARP cleanup of old IP-mac
    combinations. The main target of this feature is to get faster FIP reuse
    working, where routers are in the same external network. Therefore the
    current defaults are 30 minutes (1800s) for external interfaces and
    unset for internal interfaces. I'm not currently aware of any problems
    inside internal networks, but when the time comes it might be nice to
    already have this option waiting.
    sebageek committed Aug 24, 2023
    Configuration menu
    Copy the full SHA
    ddb8bf9 View commit details
    Browse the repository at this point in the history
  2. Add floating ip ARP cleaning sync loop to agent

    The asr1ks in our infrastructure have a relatively high ARP timeout
    (default is set to 4 hours). If in this time a fip moves from one router
    to another, it changes mac address. This means that routers where this
    FIP is not configured on might have a stale entry and will send out IP
    packets to the wrong mac in the Ethernet frame. Normally this would be
    solved by sending out a gratuitous ARP packet from the router, but the
    router does not do this for NAT statements (a long open feature
    request). Sending out "fake" ARP requests have either resulted in the
    ASR not learning the new mac (IP packet from behind the ASR via network
    agent as broadcast) or caused the ACI to either discard the ARP packet
    (as it "knows better" what we want) or to relearn the endpoint onto
    another device, where we would not want it. Therefore we now try to find
    these stale entries on other routers and clean them.
    
    The agent now as an ARP cleaning syncloop. By default every two minutes
    (though it is configurable). The agent fetches all fip --> router mac
    associations. We expect each fip - if we see it - to be on the mac
    address of the gateway interface of our router. Then, for each device on
    the agent, we fetch the ARP cache and look for IPs that we know about
    and are on the wrong mac. Everything wrong will then be cleared.
    
    Fetching all ARP entries from a device takes about 1.2-4.0s in my
    tests, depending on the ARP table size on the device. Selecting only a
    subset of fields makes the query go something like 20-40% faster.
    sebageek committed Aug 24, 2023
    Configuration menu
    Copy the full SHA
    2bde4f5 View commit details
    Browse the repository at this point in the history

Commits on Sep 4, 2023

  1. Ignore non-existant device ARP cache

    If the device doesn't give us an ARP cache (e.g. if netconf-yang is
    overloaded or disabled) we now don't throw an Attribute error anymore,
    but instead log a warning that we couldn't fetch the ARP cache. I opted
    for a warning instead of an error as I think YANG problems either are or
    should be handled elsewhere, this new could should not be the place to
    alert or throw out Sentry errors, as they are (or should be) duplicates.
    sebageek committed Sep 4, 2023
    Configuration menu
    Copy the full SHA
    bd8d1fb View commit details
    Browse the repository at this point in the history
  2. Fix PrometheusMonitor wrong labels method name

    The method is called labels(), not label(). Using the latter results in
    a ValueError "Incorrect label names" by the prometheus_client library.
    sebageek committed Sep 4, 2023
    Configuration menu
    Copy the full SHA
    2c5d553 View commit details
    Browse the repository at this point in the history
  3. Silence error on ext gw without address scope

    The external gateway of a router normally has an address scope set and
    if that address scope cannot be found in our driver config we log an
    error message. This is the behavior we want for everything that has an
    address scope. For setups where the external gateway it not an external
    network and therefore also has no address scope is set we actually don't
    want this to be logged, as everything should be okay.
    
    We'll silence the error for everything that has no address scope. This
    also means that we won't log the error for external networks that have
    been configured without any subnet with an address scope, but as this is
    more of an admin error and I don't want to fetch the external gateway
    only for deciding if we want to log this error I'll leave it this way
    for now.
    sebageek committed Sep 4, 2023
    Configuration menu
    Copy the full SHA
    4557505 View commit details
    Browse the repository at this point in the history

Commits on Sep 5, 2023

  1. Use remove instead of delete for unsetting ARP timeout

    The delete action will error out if the attribute that we wanted to
    delete does not exist. Remove will just silently ignore it, which is
    exactly what we want.
    sebageek authored and swagner-de committed Sep 5, 2023
    Configuration menu
    Copy the full SHA
    a1d936a View commit details
    Browse the repository at this point in the history

Commits on Sep 6, 2023

  1. Use remove instead of delete for bridge members

    In some cases we want to delete a bridge member, maybe even as a "side
    operation", i.e. triggered by another operation. If the interface has
    already been removed (by the cleaning loop, another thread or whatever)
    we don't want to fail, but silently ignore this. Therefore "remove"
    seems to be the operation which is more fitting.
    
    One could argue that this is the operation we want to use in most cases
    in this driver... well, we're getting there.
    sebageek committed Sep 6, 2023
    Configuration menu
    Copy the full SHA
    b996884 View commit details
    Browse the repository at this point in the history

Commits on Sep 26, 2023

  1. Don't get subnet CIDR if not present

    When instantiating the Router model with router data from Neutron where
    the gateway port is unbound we might not have a primary subnet. We
    already handle the case that the subnet has no CIDR, but if the subnet
    is None, we don't have the .get() method available, resulting in an
    AttributeError in _build_pbr_acl(). To fix this we simply check if the
    given subnet is None beforehand.
    sebageek committed Sep 26, 2023
    Configuration menu
    Copy the full SHA
    d89db00 View commit details
    Browse the repository at this point in the history

Commits on Oct 4, 2023

  1. More protection against missing subnet

    When a port has no primary subnet we don't want to lookup the cidr of
    None, resulting in a TypeError. See last commit
    d89db00 for details.
    sebageek committed Oct 4, 2023
    Configuration menu
    Copy the full SHA
    5709eb8 View commit details
    Browse the repository at this point in the history

Commits on Oct 30, 2023

  1. Fix CapabilityNotFoundException argument name

    The argument for the failing entity is called entity, not entity_name.
    sebageek committed Oct 30, 2023
    Configuration menu
    Copy the full SHA
    17d0b70 View commit details
    Browse the repository at this point in the history

Commits on Nov 16, 2023

  1. Replace version check with firmware version

    We used to check for special features and versions by looking at the
    revision date of the YANG models, specifically the Cisco-IOS-XE-native
    model. Newer versions (e.g. 17.3) apparently don't advertise the
    revision dates of these models without extra queries, so this won't
    work. As most feature switches we require can be set by looking at the
    major/minor version of the current firmware. Therefore we now query for
    each connection what the version is via "native/version". As we might
    require more fine grained feature switches in the future I'll leave in
    the machinery to do capability checks based on YANG model versions.
    sebageek committed Nov 16, 2023
    Configuration menu
    Copy the full SHA
    b7199f9 View commit details
    Browse the repository at this point in the history

Commits on Nov 27, 2023

  1. Fix missing space and bracket in error message

    The "missing address scope for router" message was missing a space and a
    closing bracket at the end.
    sebageek committed Nov 27, 2023
    Configuration menu
    Copy the full SHA
    173d994 View commit details
    Browse the repository at this point in the history
  2. Set GARP flag for FIPs on 17.13

    Firmware 17.13 starts to support the garp-interface option for static
    NAT configuration. This means that on configuration a gratuitous ARP
    will be send out on configuration of the statement. To use this, we need
    to be at least on 17.13. The target interface will always be the gateway
    interface. Without a gateway interface, the flag will be removed.
    sebageek committed Nov 27, 2023
    Configuration menu
    Copy the full SHA
    9fb2be5 View commit details
    Browse the repository at this point in the history

Commits on Dec 15, 2023

  1. Add renovate.json

    renovate[bot] authored Dec 15, 2023
    Configuration menu
    Copy the full SHA
    496f680 View commit details
    Browse the repository at this point in the history