Lukasz Zajaczkowski [Fri, 5 Aug 2016 08:45:58 +0000 (10:45 +0200)]
libcni: add util function InjectConf
Lukasz Zajaczkowski [Mon, 1 Aug 2016 10:53:46 +0000 (12:53 +0200)]
documentation: add description for forceAddress parameter
Lukasz Zajaczkowski [Fri, 29 Jul 2016 11:02:32 +0000 (13:02 +0200)]
plugins: reconfigure bridge IP address
Add possibility to reconfigure bridge IP address when there is a new value.
New boolean flag added to net configuration to force IP change if it is need.
Otherwise code behaves as previously and throws error
Tom Denham [Mon, 25 Jul 2016 23:35:58 +0000 (16:35 -0700)]
Merge pull request #272 from rosenhouse/types-of-users
README: distinguish between runtimes and plugins
Gabe Rosenhouse [Fri, 22 Jul 2016 20:36:20 +0000 (13:36 -0700)]
Merge pull request #270 from rosenhouse/integration-tests
Add integration tests of libcni
Gabe Rosenhouse [Fri, 22 Jul 2016 20:30:55 +0000 (13:30 -0700)]
plugins: cleanup tests of no-op plugin
Gabe Rosenhouse [Fri, 22 Jul 2016 20:14:00 +0000 (13:14 -0700)]
README: distinguish between runtimes and plugins
Adds a link to the 3rd party SR-IOV plugin.
Gabe Rosenhouse [Fri, 15 Jul 2016 00:33:16 +0000 (17:33 -0700)]
libcni: add integration test coverage
Gabe Rosenhouse [Thu, 14 Jul 2016 20:59:10 +0000 (13:59 -0700)]
plugins: adds new no-op plugin that may be used as a test-double
Plugin can be configured to record all inputs and to respond with
arbitrary stdout or error message. Will support upcoming integration
testing.
Gabe Rosenhouse [Fri, 15 Jul 2016 19:45:18 +0000 (12:45 -0700)]
Merge pull request #269 from rosenhouse/skel-dependency-injection
Refactor skel with dependency injection
Gabe Rosenhouse [Thu, 14 Jul 2016 23:09:27 +0000 (16:09 -0700)]
misc: fix up copyright dates
Tom Denham [Thu, 14 Jul 2016 20:32:05 +0000 (14:32 -0600)]
Merge pull request #263 from feiskyer/ptp-test
plugins/main/ptp: add functional tests
Gabe Rosenhouse [Thu, 14 Jul 2016 02:54:22 +0000 (22:54 -0400)]
pkg/skel: improve error message for missing CNI_COMMAND env var
This makes the error message for missing CNI_COMMAND consistent with
that of other required environment variables.
Gabe Rosenhouse [Thu, 14 Jul 2016 02:24:34 +0000 (22:24 -0400)]
pkg/skel: missing env var log lines appear in stderr
Previously, the log lines appeared in stdout before the JSON encoding of
the error message. That would break JSON parsing of stdout. Instead, we use
stderr for these unstructured logs, consistent with the CNI spec.
Gabe Rosenhouse [Thu, 14 Jul 2016 02:12:06 +0000 (22:12 -0400)]
pkg/skel: refactor to use dependency injection
Extract dependencies on os to enable more complete unit test coverage
Pengfei Ni [Wed, 6 Jul 2016 02:24:16 +0000 (10:24 +0800)]
plugins/main/ptp: add functional tests
Gabe Rosenhouse [Wed, 6 Jul 2016 18:33:32 +0000 (11:33 -0700)]
Merge pull request #264 from rosenhouse/test-with-vagrant
Add Vagrantfile, document how to run test suite in a vagrant VM
Gabe Rosenhouse [Wed, 6 Jul 2016 06:07:55 +0000 (23:07 -0700)]
Add Vagrantfile, document how to run test suite in a vagrant VM
Tom Denham [Tue, 14 Jun 2016 22:31:23 +0000 (15:31 -0700)]
Merge pull request #247 from tomdee/spec-args-field
SPEC: introduce "args" field and new error code
Tom Denham [Mon, 13 Jun 2016 20:50:33 +0000 (13:50 -0700)]
SPEC: introduce "args" field and new error code
Based on previous discussions on the CNI maintainers calls, the spec is
unclear on 1) when CNI_ARGS should be used and 2) the fact the dynamic
config can be passed in through the network JSON.
This PR makes it clear that per-container config can be passed in
through the network JSON, adding a top level `args` field into
which orchestrators can add additional metadata without worrying that
plugins might reject the additional data. It also allows for plugins to
reject unknown fields passed in at the top level.
Using JSON is preferable to CNI_ARGS since it allows namespaced and
structured data. CNI_ARGS is a flat list of KV pairs which has reserved
characters with no escaping rules defined.
CNI_ARGS may still be used by orchestrators that want the simplicity of
passing the network config JSON as specified by the user, unchanged
through to the CNI plugin. But for any kind of structured data, it's
recommended that the `args` field in the JSON is used instead.
Lee Calcote [Tue, 14 Jun 2016 16:54:15 +0000 (11:54 -0500)]
README: grammatical corrections
Pengfei Ni [Tue, 14 Jun 2016 16:52:58 +0000 (00:52 +0800)]
pkg/ns: fix misspelling in comment
Stefan Junker [Tue, 14 Jun 2016 01:30:24 +0000 (18:30 -0700)]
Merge pull request #240 from steveeJ/unmarshall-string
pkg/types: unmarshal string tests
Stefan Junker [Mon, 6 Jun 2016 17:50:42 +0000 (19:50 +0200)]
pkg/types: cover string for unmarshal tests
Stefan Junker [Tue, 14 Jun 2016 01:17:48 +0000 (18:17 -0700)]
Merge pull request #238 from tomdee/string-unmarshaller
pkg/types: Add UnmarshallableString type
Stefan Junker [Thu, 9 Jun 2016 23:41:42 +0000 (01:41 +0200)]
Merge pull request #243 from containernetworking/maintainers-update-email
MAINTAINERS: Update @tomdee email address
Tom Denham [Thu, 9 Jun 2016 23:32:26 +0000 (16:32 -0700)]
MAINTAINERS: Update @tomdee email address
Tom Denham [Wed, 1 Jun 2016 00:12:40 +0000 (17:12 -0700)]
pkg/types: Add UnmarshallableString type
Allow strings to be unmarshalled for CNI_ARGS
CNI_ARGS uses types.LoadArgs to populate a struct.
The fields in the struct must meet the TextUnmarshaler interface.
This code adds a UnmarshallableString type to assist with this.
Stefan Junker [Thu, 2 Jun 2016 18:43:11 +0000 (20:43 +0200)]
Merge pull request #229 from steveeJ/cleanup-travis
travis: cleanup and bump go versions
Minhan Xia [Thu, 2 Jun 2016 18:37:05 +0000 (11:37 -0700)]
plugins/ipam: round robin ip allocation for host-local ipam
This changes the ip allocation logic to round robin. Before this, host-local IPAM searched for available IPs from start of subnet. Hence it tends to allocate IPs that had been used recently. This is not ideal since it may cause collisions.
Tom Denham [Thu, 2 Jun 2016 16:00:07 +0000 (09:00 -0700)]
Merge pull request #239 from steveeJ/master
MAINTAINERS: remove @zachgersh, add @dcbw
Michael Bridgen [Thu, 2 Jun 2016 15:51:57 +0000 (16:51 +0100)]
Merge pull request #218 from steveeJ/roadmap
Add ROADMAP document
Stefan Junker [Fri, 20 May 2016 11:07:35 +0000 (13:07 +0200)]
ROADMAP: initial version
Stefan Junker [Wed, 1 Jun 2016 23:15:24 +0000 (01:15 +0200)]
MAINTAINERS: remove @zachgersh, add @dcbw
Thank you Zach for all the great work done on CNI, farewell!
At the same time we are happy to welcome Dan amongst us who has already
contributed lots of valuable work!
Stefan Junker [Wed, 1 Jun 2016 14:03:17 +0000 (16:03 +0200)]
Merge pull request #219 from squaremo/more-contrib
docs: details on PR acceptance policy
Michael Bridgen [Fri, 20 May 2016 15:51:04 +0000 (16:51 +0100)]
docs: details on PR acceptance policy
Michael Bridgen [Mon, 30 May 2016 10:13:34 +0000 (11:13 +0100)]
Merge pull request #228 from jieyu/add_mesos
Added Mesos to CNI users.
Stefan Junker [Fri, 27 May 2016 13:57:40 +0000 (15:57 +0200)]
Merge pull request #231 from steveeJ/ns-verifiy-errors
pkg/ns: introduce error types to indicate NS verification
Stefan Junker [Fri, 27 May 2016 09:52:44 +0000 (11:52 +0200)]
pkg/ns: introduce error types indicate NS verification
Stefan Junker [Fri, 27 May 2016 11:49:05 +0000 (13:49 +0200)]
Merge pull request #230 from steveeJ/netns-optional-on-del
plugins: don't require CNI_NETNS for DEL command
Stefan Junker [Fri, 27 May 2016 10:26:42 +0000 (12:26 +0200)]
skel/test: add case for empty NETNS
Stefan Junker [Fri, 27 May 2016 08:57:39 +0000 (10:57 +0200)]
plugins: don't require CNI_NETNS for DEL command
This will allow to free up the IPAM allocations when the caller doesn't
have access to the network namespace anymore, e.g. due to a reboot.
Stefan Junker [Fri, 27 May 2016 08:56:24 +0000 (10:56 +0200)]
pkg/skel: allow arg requriements specified by CMD
Jie Yu [Wed, 25 May 2016 22:32:52 +0000 (15:32 -0700)]
README: add Mesos as CNI users
Stefan Junker [Thu, 26 May 2016 13:33:58 +0000 (15:33 +0200)]
travis: use go1.5.4
Stefan Junker [Thu, 26 May 2016 12:43:18 +0000 (14:43 +0200)]
travis: cleanup and bump go versions
* cleanup structure
* explicitly use go-{1.5.3,1.6.2}
Stefan Junker [Thu, 26 May 2016 11:22:29 +0000 (13:22 +0200)]
Merge pull request #227 from steveeJ/ns-verify
pkg/ns: consider PROCFS during NS verification
Stefan Junker [Wed, 25 May 2016 21:49:25 +0000 (23:49 +0200)]
pkg/ns: consider PROCFS during NS verification
This is an attempt to bring compatibility with Kernel <3.19, where NSFS
where PROCFS was used for network namespaces.
Stefan Junker [Wed, 25 May 2016 06:54:10 +0000 (08:54 +0200)]
Merge pull request #222 from steveeJ/ns-check-path
pkg/ns: verify netns when initialized with GetNS
Stefan Junker [Tue, 24 May 2016 20:30:01 +0000 (22:30 +0200)]
pkg/ns: test IsNSFS()
Stefan Junker [Tue, 24 May 2016 20:21:57 +0000 (22:21 +0200)]
pkg/ns: test case for rejecting a non-ns nspath
Stefan Junker [Tue, 24 May 2016 16:16:34 +0000 (18:16 +0200)]
pkg/ns: verify netns when initialized with GetNS
Stefan Junker [Tue, 24 May 2016 20:16:09 +0000 (22:16 +0200)]
Merge pull request #223 from steveeJ/ns-respect-close
pkg/ns: don't allow operations after Close()
Stefan Junker [Tue, 24 May 2016 18:48:12 +0000 (20:48 +0200)]
pkg/ns: add tests cases for Close()'d NS
Stefan Junker [Tue, 24 May 2016 18:27:18 +0000 (20:27 +0200)]
pkg/ns: don't allow operations after Close()
Stefan Junker [Fri, 20 May 2016 23:55:57 +0000 (01:55 +0200)]
Merge pull request #217 from steveeJ/fix-go-tip
build: don't be verbose / test: fix bash variable escaping in sudo command
Stefan Junker [Fri, 20 May 2016 10:38:19 +0000 (12:38 +0200)]
build: remove -x bash flag
Stefan Junker [Fri, 20 May 2016 09:33:23 +0000 (11:33 +0200)]
test: fix bash variable escaping in sudo command
Stefan Junker [Fri, 20 May 2016 23:34:21 +0000 (01:34 +0200)]
Merge pull request #50 from steveeJ/gwfix
bridge: add isDefaultGateway field
Stefan Junker [Fri, 20 May 2016 23:05:21 +0000 (01:05 +0200)]
tests/bridge: ensure isDefaultGateway works
Stefan Junker [Fri, 4 Sep 2015 20:23:43 +0000 (22:23 +0200)]
bridge: add isDefaultGateway field
When isDefaultGateway is true it automatically sets isGateway to true.
The default route will be added via the (bridge's) gateway IP.
If a default gateway has been configured via IPAM in the same
configuration file, the plugin will error out.
Stefan Junker [Fri, 20 May 2016 22:17:45 +0000 (00:17 +0200)]
Merge pull request #211 from dcbw/e2e-testing
Fix namespace switch issues and add ipvlan, macvlan, and bridge e2e testing
Dan Williams [Wed, 30 Mar 2016 14:35:34 +0000 (09:35 -0500)]
bridge: add e2e testing
Dan Williams [Wed, 30 Mar 2016 14:27:08 +0000 (09:27 -0500)]
macvlan: add e2e testing
Dan Williams [Tue, 29 Mar 2016 22:49:58 +0000 (17:49 -0500)]
ipvlan: add e2e testing
Dan Williams [Tue, 29 Mar 2016 22:45:46 +0000 (17:45 -0500)]
testutils: add e2e testing helper code
Dan Williams [Tue, 5 Apr 2016 16:10:31 +0000 (11:10 -0500)]
ns: add interface, use it, and fix thread-related namespace switch issues
Add a namespace object interface for somewhat cleaner code when
creating and switching between network namespaces. All created
namespaces are now mounted in /var/run/netns to ensure they
have persistent inodes and paths that can be passed around
between plugin components without relying on the current namespace
being correct.
Also remove the thread-locking arguments from the ns package
per https://github.com/appc/cni/issues/183 by doing all the namespace
changes in a separate goroutine that locks/unlocks itself, instead of
the caller having to track OS thread locking.
Stefan Junker [Thu, 19 May 2016 21:05:08 +0000 (23:05 +0200)]
Merge pull request #199 from dcbw/fix-bridge-tx-queue-length
bridge: leave TX queue length as kernel default, not 0
Stefan Junker [Thu, 19 May 2016 16:38:57 +0000 (18:38 +0200)]
Merge pull request #212 from squaremo/more-contrib
docs: Mention license headers and doc contributions
Stefan Junker [Thu, 19 May 2016 13:45:07 +0000 (15:45 +0200)]
Merge pull request #214 from steveeJ/merge-v0.2
Merge v0.2
Stefan Junker [Fri, 6 May 2016 15:50:01 +0000 (17:50 +0200)]
release script: don't run the tests
For two reasons:
1. They're not functional within rkt
2. They rebuild the binaries dynamically
Stefan Junker [Thu, 28 Apr 2016 20:40:59 +0000 (22:40 +0200)]
build/release: link all release binaries statically
Stefan Junker [Fri, 22 Apr 2016 22:12:50 +0000 (00:12 +0200)]
scripts: build static releases and create an ACI
* use SHA1 instead of MD5
Stefan Junker [Fri, 22 Apr 2016 16:05:19 +0000 (18:05 +0200)]
scripts: add "release with rkt"
This script uses rkt and a fedora image to build release tarballs.
Michael Bridgen [Thu, 19 May 2016 12:40:37 +0000 (13:40 +0100)]
docs: Mention license headers and doc contributions
Closes #174.
Michael Bridgen [Thu, 19 May 2016 12:21:40 +0000 (13:21 +0100)]
Merge pull request #200 from squaremo/simplify-readme
Simplify README preamble
Michael Bridgen [Thu, 5 May 2016 15:18:45 +0000 (16:18 +0100)]
README: Simplify preamble
Stefan Junker [Thu, 19 May 2016 10:07:30 +0000 (12:07 +0200)]
Merge pull request #175.
Minhan Xia [Tue, 5 Apr 2016 17:50:28 +0000 (10:50 -0700)]
plugins/bridge: add support to set hairpin mode
Dan Williams [Thu, 28 Apr 2016 16:26:47 +0000 (11:26 -0500)]
macvlan: sysctl must be set in macvlan interface's namespace
The macvlan is initially created in a separate network namespace
and the sysctl must be set in that namespace too.
Angus Lees [Fri, 13 May 2016 07:32:40 +0000 (17:32 +1000)]
pkg/ns: evaluate syscall number at compile-time
Previously this code used a run-time map lookup keyed by
runtime.GOOS/GOARCH. This version uses conditional compilation to make
this choice at compile time, giving immediate feedback for unsupported
platforms.
Angus Lees [Fri, 13 May 2016 07:18:39 +0000 (17:18 +1000)]
pkg/ns: use correct syscall number on arm
Jonathan Boulle [Tue, 10 May 2016 10:12:05 +0000 (12:12 +0200)]
MAINTAINERS: add Tom Denham and Gabe Rosenhouse
Stefan Junker [Wed, 11 May 2016 16:50:25 +0000 (18:50 +0200)]
plugins/{ptp,bridge}: teardown first
This will allow the IPAM allocations to be cleared in case the
interfaces and iptables rules are non-existent.
Stefan Junker [Wed, 4 May 2016 14:06:05 +0000 (16:06 +0200)]
*: appc/cni -> containernetworking/cni
The project has been moved so internally we simply rename everything.
Consumers are recommended to update their vendored version of cni.
Brandon Philips [Fri, 6 May 2016 15:39:55 +0000 (08:39 -0700)]
README: fix badge links
Brandon Philips [Fri, 6 May 2016 15:39:21 +0000 (08:39 -0700)]
README: fix badges
Vipin Jain [Thu, 5 May 2016 03:29:13 +0000 (20:29 -0700)]
README: add contiv to cni supported networking
Iago López Galeiras [Tue, 3 May 2016 10:21:58 +0000 (12:21 +0200)]
plugins/bridge: clean masquerading rules
In the Add command we set up masquerading rules that didn't have a
corresponding clean-up code in Del.
Add the clean-up code.
Tom Denham [Fri, 22 Apr 2016 19:52:28 +0000 (12:52 -0700)]
Remove reference to policy on accepting PRs
There is to policy
Piotr Skamruk [Mon, 7 Mar 2016 15:41:04 +0000 (16:41 +0100)]
macvlan: set proxy_arp in time of creating interface
Resolves CNI part of https://github.com/coreos/rkt/issues/1765
Second part would be adding similar lines into kvm flavored macvlan
support (in time of creating macvtap device).
Piotr Skamruk [Mon, 7 Mar 2016 15:40:27 +0000 (16:40 +0100)]
pkg/utils: add functions to work with sysctl
Stefan Junker [Wed, 20 Apr 2016 15:54:12 +0000 (17:54 +0200)]
README: clarify what CNI is
The word "standard" does not represent what CNI is actually trying to
be.
Gabe Rosenhouse [Mon, 18 Apr 2016 03:27:02 +0000 (20:27 -0700)]
Document use of goroutine and lockosthread in test helpers
Dan Williams [Wed, 6 Apr 2016 16:03:31 +0000 (11:03 -0500)]
ns: fix reading net namespace in multi-threaded processes
/proc/self/ns/net gives the main thread's namespace, not necessarily
the namespace of the thread that's running the testcases. This causes
sporadic failures of the tests.
For example, with a testcase reading inodes after switching netns:
/proc/27686/task/27689/ns/net
4026532565
/proc/self/ns/net
4026531969
/proc/27686/task/27689/ns/net
4026532565
See also:
https://github.com/vishvananda/netns/commit/
008d17ae001344769b031375bdb38a86219154c6
Running Suite: pkg/ns Suite
===========================
Random Seed:
1459953577
Will run 6 of 6 specs
• Failure [0.028 seconds]
Linux namespace operations
/cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:167
WithNetNS
/cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:166
executes the callback within the target network namespace [It]
/cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:97
Expected
<uint64>:
4026531969
to equal
<uint64>:
4026532565
/cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:96
------------------------------
•••••
Summarizing 1 Failure:
[Fail] Linux namespace operations WithNetNS [It] executes the callback within the target network namespace
/cni/gopath/src/github.com/appc/cni/pkg/ns/ns_test.go:96
Ran 6 of 6 Specs in 0.564 seconds
FAIL! -- 5 Passed | 1 Failed | 0 Pending | 0 Skipped --- FAIL: TestNs (0.56s)
FAIL
Gabe Rosenhouse [Mon, 18 Apr 2016 02:44:00 +0000 (19:44 -0700)]
Fix issues with MakeNetworkNS test helper
Gabe Rosenhouse [Mon, 18 Apr 2016 01:48:50 +0000 (18:48 -0700)]
Add basic unit tests of testhelpers
Gabe Rosenhouse [Mon, 18 Apr 2016 01:35:49 +0000 (18:35 -0700)]
Extract inode inspection functions into testhelpers
Gabe Rosenhouse [Mon, 18 Apr 2016 01:28:10 +0000 (18:28 -0700)]
Extract testhelpers from loopback test suite
Brandon Philips [Mon, 11 Apr 2016 01:23:06 +0000 (18:23 -0700)]
README: add some material on what CNI isn't
We get some questions about this stuff from time to time and I want to
acknowledge we have thought about them but aren't currently tackling
them.