# 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 <interface_name> 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.