Skip to content

Releases: containernetworking/cni

CNI spec v1.1 / libcni v1.2.0

16 Apr 08:14
df52e94
Compare
Choose a tag to compare

This is libcni v1.2.0, which releases the new CNI spec version v1.1.0.

Major changes:

GC verb

The GC verb allows runtimes to specify the set of known-good attachments, allowing plugins to clean up stale and leaked resources such as IPAM reservations. Libcni will also synthesize a CNI DEL for any stale cached attachments, so all users will have a form of GC, even if their plugins do not support CNI v1.1

STATUS verb

The STATUS verb allows a plugin to report its readiness to accept ADD requests. Runtimes such as containerd and cri-o will no longer have to rely merely on the presence of a CNI configuration file to determine network readiness.

Version negotiation

CNI configurations may now contain multiple versions, so that an administrator can opportunistically update the protocol version without breaking older runtimes:

{
  "cniVersion": "1.0.0",
  "cniVersions": ["1.0.0", "1.1.0"]
}

New fields

A number of new fields have been added to the result type:

  • (#1060). Add MTU to CNI result
  • (#1068). Add Scope property for routes Fixes: #598
  • (#1069). Add SocketPath/PciID to Interface struct This is to resolve: #1050
  • (#1062). Add table ID property for routes Fixes #1061
  • (#1041). Add route attributes - MTU, AdvMSS, Priority

Other improvements

  • (#911). libcni: add specific type for CHECK not supported
  • (#1072). tolerate invalid cni caches for deletion
  • (#1054). Add Version() to CNI interface

CNI v1.1.2

27 Jul 15:48
3363d14
Compare
Choose a tag to compare

This is a minor update to the CNI libraries and tooling. This does not bump the protocol / spec version, which remains at v1.0.0.

What's Changed

New Contributors

Full Changelog: v1.1.1...v1.1.2

CNI v1.1.1

01 Jun 16:00
3ec1919
Compare
Choose a tag to compare

This is a minor update to the CNI libraries and tooling. This does not bump the protocol / spec version, which remains at v1.0.0.

Changes include:

  • cnitool: address golint error by @fujitatomoya in #894
  • invoke: if Result CNIVersion is empty use netconf CNIVersion by @dcbw in #896

New Contributors:

Full Changelog: v1.1.0...v1.1.1

CNI v1.1.0

27 Apr 20:28
08f8596
Compare
Choose a tag to compare

This is a minor update to the CNI libraries and tooling. This does not bump the protocol / spec version, which remains at v1.0.0.

Changes include:

  • libcni: handle empty version when parsing version (#893). Without this, Delete failed for empty-version configs, which was a regression from v0.8.0.
  • Fix incorrect pointer inputs to json.Unmarshal (#880).
  • [exec-plugins]: support plugin lists (#865).
  • skel: remove superfluous err nil check in (*dispatcher).pluginMain (#864).
  • skel: print out CNI versions supported in help text (#860).

🎉 CNI v1.0.1 🎉

08 Sep 08:48
1694fd7
Compare
Choose a tag to compare

Hot off the presses, it's CNI v1.0!

CNI v1.0 doesn't change much about how CNI works, but it declares API stability.

This release includes

  • a rewritten spec (for clarity)
  • libcni improvements
  • way more tests.

You can see the full spec changelog here: https://github.com/containernetworking/cni/blob/v1.0.1/Documentation/spec-upgrades.md

CNI v0.8.1

19 May 18:44
9fc34ae
Compare
Choose a tag to compare

libcni v0.8.1

This is a security release that fixes a single bug:

  • tighten up plugin-finding logic (#811).

Users of libcni are strongly encouraged to update.

v0.8.0

01 Jul 15:39
11db36c
Compare
Choose a tag to compare

This release includes a number of small improvements and bug fixes.

There are no material changes to the specification or interfaces, but we increased the version from 0.7 to 0.8 in recognition of a breaking change (if you used the method): Result.String() has been removed.

We do not release binaries here: this repo holds the Specification and Go Library for CNI; the plugins have moved to https://github.com/containernetworking/plugins.

Specification and Conventions changes

  • #691 docs: add ips and mac to well-known capabilities
  • #712 add interface name validation
  • #742 Add GUID to well known Capabilities
  • #761 Add DeviceID attribute to RuntimeConfig
  • #764 Typo fixes for infiniband GUID
  • #768 Fix linting issues in docs, add headers to json example, update errors into table

Documentation changes

  • #711 Update cnitool docs
  • #755 Remove extra ',' chars which makes conflist examples invalid.

libcni changes

  • #583 Remove Result.String method
  • #678 libcni: add config caching [v2]
  • #681 clean up : fix staticcheck warnings
  • #682 libcni: add InitCNIConfigWithCacheDir() and deprecate RuntimeConfig.CacheDir
  • #686 skel: clean up errors in skel and add some well-known error codes
  • #692 libcni: find plugin in exec
  • #698 validate containerID and networkName
  • #699 skel: remove needless functions and types
  • #704 libcni: also cache IfName
  • #705 libcni: fix cache file 'result' key name
  • #713 Bump Go version to 1.13
  • #721 When CNI version isn't supplied in config, use default.
  • #735 intercept netplugin std error
  • #760 invoke: capture and return stderr if plugin exits unexpectedly
  • #763 Retry exec commands on text file busy

v0.7.1

11 Jun 19:17
4cfb7b5
Compare
Choose a tag to compare

The 0.7.1 CNI release includes minor bug fixes to v0.7.0.

We do not release binaries here: this repo holds the Specification and Go Library for CNI, and the plugins moved to https://github.com/containernetworking/plugins.

libcni changes

Library changes:
#662 invoke : ensure custom envs of CNIArgs are prepended to process envs
#669 add GetNetworkListCachedResult to CNI interface
#663 delegate : allow delegation funcs override CNI_COMMAND env automatically in heritance

Documentation & Convention changes:
#659 Update cnitool documentation for spec v0.4.0
#666 Add cni-route-override to CNI plugin list

Build and test changes:
#672 Release: bump go to v1.12

Full list of changes here. Many thanks to the 7 contributors who helped make this release possible.

v0.7.0

26 Apr 16:04
7d76556
Compare
Choose a tag to compare

The 0.7.0 CNI release includes spec version 0.4.0, plus some minor bugfixes and improvements to the Go implementation.

CNI Spec v0.4.0

The big change in the spec is a new method CHECK, which runtimes can call to find out whether one network interface is still set up as they expect (#579).

libcni changes

The libcni API has changed with the addition of a Context to enable timeouts and cancellation (#568)

Spec changes:
#500 Use more RFC2119 style language in specification (must, should...)
#505 add notes about ADD/DEL ordering
#510 Make the container ID required and unique.
#543 remove the version parameter from ADD and DEL commands.
#557 Network interface name matters
#565 be explicit about optional and required structure members
#579 add CHECK method
#591 Add a well-known error for "try again"
#641 SPEC.md: clarify meaning of 'routes'

Library changes:
#96 pkg/types: Makes IPAM concrete type
#494 libcni: return error if Type is empty
#502 skel: VERSION shouldn't block on stdin
#521 non-pointer instances of types.Route now correctly marshal to JSON
#524 libcni: add ValidateNetwork and ValidateNetworkList functions
#536 pkg/skel: return error if JSON config has no network name
#554 skel: add support for plugin version string
#558 libcni: make exec handling an interface for better downstream testing
#568 libcni: api now takes a Context to allow operations to be timed out or cancelled
#570 types/version: add helper to parse PrevResult
#572 skel: only print about message, not errors
#584 skel,invoke,libcni: implementation of CHECK method
#587 cnitool: Honor interface name supplied via CNI_IFNAME environment variable.
#600 cnitool: validate correct number of args
#617 Don't copy gw from IP4.Gateway to Route.GW When converting from 0.2.0
#636 add PrintTo method to Result interface
#655 Return a better error when the plugin returns none

Documentation & Convention changes:
#492 roadmap: add 1.0 items and clean things up
#493 docs: add Governance procedure documentation
#495 Spec lists git tags pointing to old spec versions
#497 add the "ips" arg
#504 governance: add notes about public voting
#525 add new ipRanges capability.
#556 Conventions: add bandwidth limits
#639 Update conventions.md to include dns capability
#597 CONVENTIONS: add support for IP prefixes

Build and test changes:
#489 Release: clean the builddir when building.
#499,#538,#592 Golang versions: add 1.10, 1.11, drop 1.7 and 1.8
#501 Test all non-vendored packages
#508 cnitool: generate container id from the netns path
#514 Remove vendor directory
#515 Add CI for Windows
#535 tests: remove netns handling

Plus many more changes to fix typos, add 3rd-party plugins, etc. Full list of changes here.
Many thanks to the 50 contributors who helped make this release possible.

Release 0.7.0 Release Candidate 2

17 Apr 15:20
fbb95ff
Compare
Choose a tag to compare
Pre-release

This is a Release Candidate for the 0.7.0 CNI release, which includes spec version 0.4.0, plus some minor bugfixes and improvements to the Go implementation.

CNI Spec v0.4.0

The big change in the spec is a new method CHECK, which runtimes can call to find out whether one network interface is still set up as they expect (#579).

libcni changes

The libcni API has changed with the addition of a Context to enable timeouts and cancellation (#568)

Spec changes:
#500 Use more RFC2119 style language in specification (must, should...)
#505 add notes about ADD/DEL ordering
#510 Make the container ID required and unique.
#543 remove the version parameter from ADD and DEL commands.
#557 Network interface name matters
#565 be explicit about optional and required structure members
#579 add CHECK method
#591 Add a well-known error for "try again"
#641 SPEC.md: clarify meaning of 'routes'

Library changes:
#96 pkg/types: Makes IPAM concrete type
#494 libcni: return error if Type is empty
#502 skel: VERSION shouldn't block on stdin
#521 non-pointer instances of types.Route now correctly marshal to JSON
#524 libcni: add ValidateNetwork and ValidateNetworkList functions
#536 pkg/skel: return error if JSON config has no network name
#554 skel: add support for plugin version string
#558 libcni: make exec handling an interface for better downstream testing
#568 libcni: api now takes a Context to allow operations to be timed out or cancelled
#570 types/version: add helper to parse PrevResult
#572 skel: only print about message, not errors
#584 skel,invoke,libcni: implementation of CHECK method
#587 cnitool: Honor interface name supplied via CNI_IFNAME environment variable.
#600 cnitool: validate correct number of args
#617 Don't copy gw from IP4.Gateway to Route.GW When converting from 0.2.0
#636 add PrintTo method to Result interface

Documentation & Convention changes:
#492 roadmap: add 1.0 items and clean things up
#493 docs: add Governance procedure documentation
#495 Spec lists git tags pointing to old spec versions
#497 add the "ips" arg
#504 governance: add notes about public voting
#525 add new ipRanges capability.
#556 Conventions: add bandwidth limits
#639 Update conventions.md to include dns capability
#597 CONVENTIONS: add support for IP prefixes

Build and test changes:
#489 Release: clean the builddir when building.
#499,#538,#592 Golang versions: add 1.10, 1.11, drop 1.7 and 1.8
#501 Test all non-vendored packages
#508 cnitool: generate container id from the netns path
#514 Remove vendor directory
#515 Add CI for Windows
#535 tests: remove netns handling

Plus many more changes to fix typos, add 3rd-party plugins, etc. Full list of changes here.
Many thanks to the 50 contributors who helped make this release possible.