# Changelog ## [1.0.0] - 2020-12-07 ### New features - Manage state for route rules. (16c8fa9) - Support MAC VTAP. (4ffffa0) ### Bug fixes - Allow VRF port to hold IP information. (1455181) - Fix removing IPv6 route rules. (b14532c) - Use default mac address when an interface does not have one. (0738427) - Do not fail when reporting OVS interfaces using libnm through dbus. (8168645) - Do not remove unmanaged orphan interfaces. (3f88096) ### Breaking changes - Deprecate the `ports` for team interfaces, please use `port` instead. (dbb712e) - Nispor 1.0.0 or greater is now required. (6dec9a5) ## [0.4.1] - 2020-10-06 ### New features - Support MAC VLAN. (963a04d) - Support IP over InfiniBand. (3ef8546) - Support Virtual Routing and Forwarding. (29fda8c) - Support of multiple gateways. (551df30) - Support ignoring specific interface via `state:ignore`. (dc13851) ### Bug fixes - Plugin with `NmstatePlugin.is_supplemental_only == True` will not add new interface to `libnmstate.show()` results. (fe2a0f9) - Allowing multiple dual stack DNS name servers. (0c3a64b) - Fix crash when OVS interface is using the same name of OVS bridge. (de3de71) - Change NetworkManager plugin as optional. (fc3b311) - Keep child interface when bond mode change. (4a7c174) - Don't reset bridge options for empty bridge options. (83fd948) - Sort routes base on metric and next_hop_address also. (da12b9b) - Do clean up even checkpoint rollback/destroy failed. (cda87df) - The vlan and vxlan interface cannot have ip when subordinated. (ff3b731) - Fix None con_profile race condition on SR-IOV interface. (7584d46) - Fix profile deletion on virtual interface. (b2ac0f4) - Fix timeout on profile deactivation. (0d8940d) - Ignore invalid bond optoin ad_actor_system=00:00:00:00:00:00. (1423258) ### Breaking changes - Make python3-varlink as hard requirement. (4637b60) - Deprecate the `Bond.SLAVES`, please use `Bond.PORT` instead. (b9d01752e) - Deprecate the `OVSBridge.Port.LinkAggregation.SLAVES_SUBTREE`, please use `OVSBridge.Port.LinkAggregation.PORT_SUBTREE` instead. (b9d01752e) - Deprecate the `OVSBridge.Port.LinkAggregation.Slave`, please use `OVSBridge.Port.LinkAggregation.Port` instead. (b9d01752e) - Do not raise `NmstateVerificationError` for bond option mismatch. (5b6f31f) ## [0.4.0] - 2020-08-28 ### New features - Providing varlink interface via nmstatectl. - Support managing interfaces created by iproute tools. - The nmstatectl show could filter route table learn from DHCP/Autoconf. - Support modifying the route table ID for DHCP/Autoconf. ### Bug fixes - Could add route rule targeting route table learn from DHCP/Autoconf. - Fix verification failure on unknown interface. - Fix the logging of checkpoint creation. - Sort the OVS internal interfaces and OVS bond interfaces. - Improve performance by skipping reapply call on deactivated interface. - Default to `InterfaceState.UP` if not defined. ### Breaking changes - New dependency introduced `python3-nispor` for querying kernel runtime network state. ## [0.3.5] - 2020-08-28 ### Bug fixes - Allowing remove all interfaces from OVS bridge. - Fix converting memory-only profile to persistent. - Fix adding OVS bond to existing OVS bridge. - Remove inactive profile for desired interface. - Do not report MTU if it is 0. ## [0.3.4] - 2020-07-24 ### Bug fixes - Fix removing the DNS config. - Fix Linux Bridge integer option round up/down on 250HZ kernel. - Fix removing child interface. - Linux Bridge: Fix support replacing unmanaged ports. - SR-IOV: Raise an exception if the driver does not support a parameter. - Fix moving subordination from removed interface to new main interface. - Fix the failure when switching bond mode from 4(802.3ad) to 5(balance-tlb). ### Breaking changes - NetworkManager 1.26.0 or greater is now required. ## [0.3.3] - 2020-07-02 ### Bug fixes - VLAN: Raise an error when VLAN MTU is greater than the base interface MTU. - Support IP network address with host bits(e.g. 192.0.2.251/24). - Show the OVS bond name first in nmstatectl show. - Fix random rollback timeout. - Fix error due to activation of unknown interface. - Fix the support of multiple state files when using nmstatectl. - Fix remove DNS config. - Improve the performance by eliminating the repeat check of ovs daemon status. ## [0.3.2] - 2020-06-15 ### New features - Support third party plugin written in Python. - Support LLDP. - New OVS DB plugin for modifying OVS interface `external_ids`. - Expanded the support of linux bridge options. - Support applying desire state which only valid till next reboot. - Support OVS patch port (requires NeworkManager 1.22.16+ or 1.24.4+). ## [0.3.1] - 2020-06-08 ### Bug fixes - Wait until the rollback is completed. - Fix base interfaces removal, VLAN/VXLAN interfaces will be removed automatically. - Fix all slaves removal of a master interface. - Interfaces state is not required when editting DNS/route/routerules. - Fix routes lose when editting DNS. - Interface is default to `state:up` when is not defined in desired state. - Differentiate DOWN and ABSENT state. DOWN is not removing the profile anymore. ## [0.3.0] - 2020-05-07 ### New features - Linux Bridge: Support VLAN filtering. - Add --version and version command in nmstatectl. - Support 3+ single stack DNS nameservers: https://bugzilla.redhat.com/1816043 - Allow route rule filtering by interface when showing. ### Bug Fixes - Bond: Fix switch between miimon and arp_interval: https://bugzilla.redhat.com/1806549 - Bond: Fix switch bond mode from 1 (active-backup) to 5 (balance-tlb). - Bond: Allow miimon=100 when ethernet setting not included: https://bugzilla.redhat.com/1806549 - Bond: Allow missing arp_ip_target when ARP monitoring is disabled. - SR-IOV: Properly return when the device not exists. - SR-IOV: Fix verification due to MAC address upper or lower cases: https://bugzilla.redhat.com/1818750 - SR-IOV: Raise an exception when a SR-IOV parameter is not supported by driver: https://bugzilla.redhat.com/1819588 - Fix verification errors due to outdated values. - Report DNS nameservers and domains only once: https://bugzilla.redhat.com/1806969 - OVS: Raise an exception if the necessary services are not running. - Linux Bridge: Show unmanaged ports: https://bugzilla.redhat.com/1806452 - Team: Fix verification error due to unsorted ports. - Raise an exception when IP configuration is enabled in slaves or ports. - Raise warning if interfaces exceeds 1000 in a single desired state. - Support route rule host without prefix length. ### Breaking Changes - Enforce keyword args for APIs functions. - Drop LinuxBridge_* constants support. ## [0.2.6] - 2020-02-24 ### New Features - Linux Bonding: Support numeric values for options. ### Bug Fixes - Linux Bonding: Fix "fail_over_mac" support with active backup bond mode. - Linux Bonding: Fix "arp_ip_target" bond option support. - OVS Bridge VLAN: Use "unknown" value for unsupported modes. - Fix partial editting for DNS configuration. - Report only non-default bonding option values. - Fix switching from static IP to DHCP/Autoconf. ### Known Issues with NetworkManager Version 1.22.8 - All changes to bridges might disrupt their connectivity. - Cannot detach a system port from an OVS bridge. - Sometimes, NetworkManager may throw a "Failed to find a compatible device for this connection" error. - Cannot set bond option with updelay=0,miimon=0. - Cannot set bond option with miimon=100,arp_interval=0. ## [0.2.5] - 2020-02-19 ### Breaking changes - Deprecate specifying keyword arguments as positional arguments in the public methods. This will become a hard failure in Nmstate-0.3.0 and later and it affects the following functions: - "libnmstate.apply()" - "libnmstate.commit()" - "libnmstate.rollback()" - "libmstate.show()" - NetworkManager 1.22.8 or later is now required. ### New Features - Report missing NetworkManager plugin during validation. - Support OVS Link Aggregation (Bonding). ### Bug Fixes - Fix "AtributeError" when editing an existing OVS interface. - Do not remove slaves implicitly when removing the master interface. - Fix team interface port support. - Prevent virtual interface removal after DHCP or IPV6-RA timeout. - Get Linux Bonding options from kernel instead of reading the NetworkManager configuration. ### Known issues when using NetworkManager 1.22.8 - All changes to bridges might disrupt their connectivity. - Cannot set Linux Bond option to "fail_over_mac=1". - Cannot detach a system port from an OVS bridge. - Sometimes, NetworkManager may throw a "Failed to find a compatible device for this connection" error. ## [0.2.4] - 2020-02-12 ### Bug Fixes - Reduce minimal required MAC address length to 4 octets - Warn early when the same interface name is mentioned multiple times ### New Features - Raise NmstateTimeoutError on mainloop timeout ## [0.2.3] - 2020-02-05 ### Bug Fixes - Reduce the delay before the verification step to 0.5 second. - Fix dynamic IP configuration with no server response. - Fix OVS port name limit. ## [0.2.2] - 2020-02-04 ### Breaking changes - NetworkManager 1.22 is required now. ### New Features - Team interface support. ### Bug Fixes - Fix file descriptor leak. - Get SR-IOV VFs configuration from kernel instead of reading the NetworkManager configuration. - Fix DHCPv4 with static IPv6. - Wait a short time before verification to allow the network state to stabilize. - Properly delete ovs-port profiles. - Use dhcp-iaid='mac' on dynamic IPv6 configuration. ## [0.2.1] - 2020-01-13 ### Breaking Changes - Deprecations in `libnmstate.schema`: - 'LinuxBridge.GROUP_FORWARD_MASK' -> 'LinuxBridge.Options.GROUP_FORWARD_MASK' - 'LinuxBridge.MAC_AGEING_TIME' -> 'LinuxBridge.Options.MAC_AGEING_TIME' - 'LinuxBridge.MULTICAST_SNOOPING' -> 'LinuxBridge.Options.MULTICAST_SNOOPING' ### New Features - Support SR-IOV VFs configuration. - Introduce libnmstate.__version__. ### Bug Fixes - Fix verification of route rules with 2+ route tables. - Support reapply on IPv6 changes. - Fix disable IP stack after enabled DHCP. - Fix MAC address pattern to support infiniband MAC addresses. - Report missing OVS NM plugin on profile activation. - Ignore existing unmanaged and unknown type bridge ports. - Fix bridge type interface state parsing. - Fix success check after interface deletion. - Read mac-address from sysfs when missing from NM (ovs-interface). - Get the SR-IOV total-vfs from sysfs instead from NM configuration. ## [0.2.0] - 2019-12-02 ### Bug Fixes - Skip editing on unknown type interface ## [0.1.1] - 2019-12-01 ### Breaking Changes - Removed the support of Python2. Require Python 3.6 or later version. - Increased minimum supported NetworkManager version to 1.20. - Deprecation in `libnmstate.schema`: - 'LinuxBridge.PORT_NAME' -> 'LinuxBridge.Port.NAME' - 'LinuxBridge.PORT_STP_HAIRPIN_MODE' -> 'LinuxBridge.Port.STP_HAIRPIN_MODE' - 'LinuxBridge.PORT_STP_PATH_COST' -> 'LinuxBridge.Port.STP_PATH_COST' - 'LinuxBridge.PORT_STP_PRIORITY' -> 'LinuxBridge.Port.STP_PRIORITY' - 'LinuxBridge.STP_ENABLED' -> 'LinuxBridge.STP.ENABLED' - 'LinuxBridge.STP_FORWARD_DELAY' -> 'LinuxBridge.STP.FORWARD_DELAY' - 'LinuxBridge.STP_HELLO_TIME' -> 'LinuxBridge.STP.HELLO_TIME' - 'LinuxBridge.STP_MAX_AGE' -> 'LinuxBridge.STP.MAX_AGE' - 'LinuxBridge.STP_PRIORITY' -> 'LinuxBridge.STP.PRIORITY' - 'OVSBridge.PORT_NAME' -> 'OVSBridge.Port.NAME' - 'OVSBridge.FAIL_MODE' -> 'OVSBridge.Options.FAIL_MODE' - 'OVSBridge.MCAST_SNOOPING_ENABLED' -> 'OVSBridge.Options.MCAST_SNOOPING_ENABLED' - 'OVSBridge.RSTP' -> 'OVSBridge.Options.RSTP' - 'OVSBridge.STP' -> 'OVSBridge.Options.STP' ### New Features - Support disabling IPv6 persistently. - Support compressed IPv6 address. - Support reapply on MTU changes. - Support activation interface without blocking on DHCP results. - Support SR-IOV. - Support source routing via route rule. - Support of VxLAN interface in schema without implementation. - Support of Team interface in schema without implementation. - Support of VLAN filtering in schema without implementation. - Support of OVS Bonding in schema without implementation. - Support of OVS VLAN in schema without implementation. ### Bug Fixes - Prioritize base iface activation before the vlan. - Ignore not active failure when deactivating. - Increase main loop timeout to support the linux bridge STP. - Detach slaves without deleting them. - Fix race problem on slave been deactivated by master. - Prioritize master interfaces activaction. - Don't disable IPv6 on down interface. - Raise exception when the NM service is not running. - Introduce nmstatectl man page. - Allow empty interface description. - Change DHCP and IPv6-RA address selction based on MAC address only. - Fix race problem when IPv6 is disabled. - Handle race problem when OVS bridge is deleting. - Handle bond get_info() while deleting. - Drop type attribute of OVS port. - Treat disabled IPv6 as OK to reapply. - Mark device as managed before activate. - Fix ActiveConnection.is_activating. - Fix the incorrect interface state when device in IP_CHECK state. - Discard IP stack when disabled for verification. - Explicitly remove any virtual device. - Delete inactive profiles when editting an interface. - Explicitly delete device even in DEACTIVATING state. ## [0.0.8] - 2019-07-25 ### New Features - Support reapply configuration without link down when possible. - Relicensed to LGPL 2.1+. - Allow editing existing interface without specifying the type property in the desired state. ### Bug Fixes - Allow adding a port to the Linux bridge by specifying only its name. - Support IPv6 stack disable. - Allow enabling IPv6 with empty address. - Recover from an abnormal failure when libnmstate is re-used in a process. - DNS: Preserve DNS config with empty state. - Fix random failure on showing interface as done when creating bond/linux bridge - Do refresh in libnm on each call of show(). - Allow removing slaves from parents while keeping their interfaces up. - Do not remove slaves that are mentioned with state UP. - Support slaves swap between masters. - API: Expose IP constants through libnmstate.schema. - PY3: Fix deprecation of array.tostring(). - Fix IPv4 enabled criteria: When DHCP is enabled, it implies IPv4 is enabled. ## [0.0.7] - 2019-06-13 ### New Features - Support editing DNS client configuration. - Support editing IP routes. - API: Promote the public API to libnmstate level: * libnmstate.show() * libnmstate.apply() * libnmstate.commit() * libnmstate.rollback() * libnmstate.error * libnmstate.schema ### Bug Fixes - Optimize new and existing interface processing when applying state. ## [0.0.6] - 2019-04-24 ### New Features - Support manual transaction control. - Support querying DNS client configuration. - Support querying IP routes. - Support changing MAC address. ### Bug Fixes - nmstatectl: Handle state editing conflict. - apply: Handle commit/rollback errors. - nm.checkpoint: Handle DBusExceptions. - Fix build on old setuptools. - nm: Exit with a human readable error when missing libnm introspection. - state: Rebuild the ifaces state on each call to the state getter. - metadata: New created iface entry should include a name. - state: Relocate the remove func of absent/down ifaces into State. - apply: Pass the State object to the metadata generator. ## [0.0.5] - 2019-03-12 ### New Features - Support Open vSwitch internal interface. - Support ignoring DNS/routes/gateways from DHCP/Autoconf. ### Bug Fixes - nm device: Include safety checks when deleting a device. - nm: Delete explicitly OVS type interfaces. - show: Do not include the mtu entry for ovs-bridge. - show: Do not include ipv4/6 entries for ovs-bridge. - Unify the Nmstate exceptions to error.py. - verify: Sort bridge ports by name. - nm device: Delete connection profiles with no device. - nm ovs: Fix slave interface detection. - nmclient: Explicitly create a new client object only in show. - apply: Remove unuseful leftover code. - Add option for ignoring auto DNS and routes. - nmstatectl: Allow to set multiple states. ## [0.0.4] - 2019-01-23 ### New Features - Support Linux Bridge. ### Bug Fixes - nm, device: Retry if activation fails in specific cases. - nm, nmclient: Allow mainloop to run the last action again. - apply: Fix OVS proxy port handling in the edit step. - nm, connection: Enable autoconnect by default. - nm, device: Skip activation of an already activating device. - nm, device: Fix ActiveConnection.is_activating. - nm, device: Activate based on the device or connection object. - nmstatectl: Output yaml by default. - nmstatectl: Remove extra newline from yaml output. - show: Sort interface state. - nm.bridge: Set only specified port options. - nm: Do not raise explcitly within the checkpoint context. - nm: Reduce noise when logging actions execution. ## [0.0.3] - 2018-12-20 ### New Features - Support IPv4/IPv6 DHCP. ### Bug Fixes - NM/device: Handle activation failures for connections. - apply: Ignore `down` state (for virt iface) in verification step. - device: use per-action cancellable for activate_connection_async(). - mainloop: support multiple cancellables. - Don't copy existing config when disabling IPv4/v6. ## [0.0.2] - 2018-11-29 ### New Features - Support bond interface. - Support VLAN interface. - Support dummy interface. - Support ethernet interface. - Support Open vSwitch bridge. ### Bug Fixes - Initial release.