1649 Commits

Author SHA1 Message Date
Eugene Yakubovich
d053cd7184 Merge pull request #35 from eyakubovich/ip_forward
enable net.ipv4.ip_forward in plugins that need it
2015-07-21 17:12:04 -07:00
Eugene Yakubovich
b5e7847649 Merge pull request #29 from eyakubovich/spec-fmt-fixes
spec: fix fmt issues and example JSON
2015-07-16 20:18:33 -07:00
Eugene Yakubovich
77fc4ad0d6 Merge pull request #32 from eyakubovich/ipvlan-fix
ipvlan: wrong name was used during link creation
2015-07-15 10:25:07 -07:00
Eugene Yakubovich
4f74b78041 enable net.ipv4.ip_forward in plugins that need it 2015-07-13 15:41:02 -07:00
Eugene Yakubovich
91454b6ebb enable net.ipv4.ip_forward in plugins that need it 2015-07-13 15:41:02 -07:00
Eugene Yakubovich
cc393ddba7 ipvlan: wrong name was used during link creation
Instead of temp (random) name, the final name (e.g. eth0)
was used during link creation. This would collide on hosts
that already had the an interface with such a name.
2015-07-10 14:02:35 -07:00
Jonathan Boulle
420d52ce4b Merge pull request #30 from zenlinTechnofreak/master
Fix environment bug,version of golang should be 1.4+, add reminding i…
2015-07-08 12:18:54 -07:00
zenlin
1ca1c875c2 Fix environment bug,version of golang should be 1.4+, add reminding in Readme.md 2015-07-08 18:21:58 +08:00
Eugene Yakubovich
edf08b56d2 spec: fix fmt issues and example JSON 2015-07-06 18:05:10 -07:00
Eugene Yakubovich
f56f1d90fd Merge pull request #22 from eyakubovich/netns-err
dhcp: don't swallow err from netns switch
2015-06-15 16:08:01 -07:00
Eugene Yakubovich
8b6b04773e dhcp: don't swallow err from netns switch 2015-06-15 14:32:16 -07:00
Eugene Yakubovich
50c14e6223 Merge pull request #24 from eyakubovich/dhcp-abs-path
dhcp: make netns path absolute prior to RPC
2015-06-15 12:46:40 -07:00
Eugene Yakubovich
fc42b801fa Merge pull request #25 from eyakubovich/dhcp-timeout
dhcp: decrease read timeout and clamp backoff
2015-06-15 12:45:09 -07:00
Eugene Yakubovich
30316e3fa9 dhcp: make netns path absolute prior to RPC
The dhcp daemon may be running with a different cwd
and so the netns paths need to be absolute. This patch
also refactors the code to pull out the common, RPC
parts, out into a separate function.
2015-06-15 12:44:43 -07:00
Eugene Yakubovich
295e02e4e9 dhcp: decrease read timeout and clamp backoff 2015-06-15 12:40:34 -07:00
Eugene Yakubovich
d4d3f914e7 Merge pull request #21 from eyakubovich/no-path-rewrite
No more path rewriting
2015-06-12 16:29:58 -07:00
Eugene Yakubovich
6caffd48b3 No more path rewriting
Path rewriting causes too many problems when vendoring
vendored code. When CNI code is vendored into rkt,
godep has problems code already vendored by CNI.
2015-06-12 16:29:18 -07:00
Eugene Yakubovich
16680be42d No more path rewriting
Path rewriting causes too many problems when vendoring
vendored code. When CNI code is vendored into rkt,
godep has problems code already vendored by CNI.
2015-06-12 16:29:18 -07:00
Eugene Yakubovich
02981925c9 Merge pull request #20 from eyakubovich/flannel
add flannel plugin
2015-06-11 15:39:53 -07:00
Eugene Yakubovich
58f6bc9c8b add flannel plugin
This introduces a notion of a "meta" plugin. A meta plugin
is one that delegates the actual work of setting up the interface
to the main plugin. The meta plugin is used to select and dynamically
configure the main plugin. The sequence of events, is as follows:

Given netconf like:

    {
	"name": "mynet",
	"type": "flannel",
	"delegate": {
	    "type": "bridge"
	}
    }

flannel fills in values like "mtu", "ipam.subnet" and delegates to
"bridge" main plugin. "bridge" plugin will operate as usual, calling
into ipam module for IP assignment.

Delegate dictionary should not contain "name" field as it will be
filled in by the flannel plugin.
2015-06-11 15:37:58 -07:00
Eugene Yakubovich
78daffc479 add flannel plugin
This introduces a notion of a "meta" plugin. A meta plugin
is one that delegates the actual work of setting up the interface
to the main plugin. The meta plugin is used to select and dynamically
configure the main plugin. The sequence of events, is as follows:

Given netconf like:

    {
	"name": "mynet",
	"type": "flannel",
	"delegate": {
	    "type": "bridge"
	}
    }

flannel fills in values like "mtu", "ipam.subnet" and delegates to
"bridge" main plugin. "bridge" plugin will operate as usual, calling
into ipam module for IP assignment.

Delegate dictionary should not contain "name" field as it will be
filled in by the flannel plugin.
2015-06-11 15:37:58 -07:00
Jonathan Boulle
ab83df2ebf Merge pull request #19 from eyakubovich/err-handling
Propagate json error object to the caller
2015-06-11 10:37:37 -07:00
Eugene Yakubovich
31c0dbf110 Propagate json error object to the caller
When plugin errors out, it prints out a JSON object to stdout
describing the failure. This object needs to be propagated out
through the plugins and to the container runtime. This change
also adds Print method to both the result and error structs
for easy serialization to stdout.
2015-06-09 10:46:28 -07:00
Eugene Yakubovich
33a575f49d Propagate json error object to the caller
When plugin errors out, it prints out a JSON object to stdout
describing the failure. This object needs to be propagated out
through the plugins and to the container runtime. This change
also adds Print method to both the result and error structs
for easy serialization to stdout.
2015-06-09 10:46:28 -07:00
Eugene Yakubovich
54dfc9ef5d Merge pull request #13 from eyakubovich/dhcp
DHCP plugin
2015-05-21 18:18:58 -07:00
Eugene Yakubovich
a6a822268c add DHCP IPAM plugin
The plugin binary actually functions in two modes. The first mode
is a regular CNI plugin. The second mode (when stared with "daemon" arg)
runs a DHCP client daemon. When executed as a CNI plugin, it issues
an RPC request to the daemon for actual processing. The daemon is
required since a DHCP lease needs to be maintained by periodically
renewing it. One instance of the daemon can server arbitrary number
of containers/leases.
2015-05-21 13:36:51 -07:00
Eugene Yakubovich
c70320b5ed add DHCP IPAM plugin
The plugin binary actually functions in two modes. The first mode
is a regular CNI plugin. The second mode (when stared with "daemon" arg)
runs a DHCP client daemon. When executed as a CNI plugin, it issues
an RPC request to the daemon for actual processing. The daemon is
required since a DHCP lease needs to be maintained by periodically
renewing it. One instance of the daemon can server arbitrary number
of containers/leases.
2015-05-21 13:36:51 -07:00
Eugene Yakubovich
7a8ee49891 macvlan and ipvlan: rename tmp iface name prior to calling IPAM 2015-05-19 17:43:44 -07:00
Eugene Yakubovich
0c3baa8ff0 fix bridge to call IPAM after link creation 2015-05-19 17:43:44 -07:00
Eugene Yakubovich
01298363ad vendoring sys/unix, go-systemd, dhcp libraries 2015-05-19 17:43:44 -07:00
Eugene Yakubovich
49a018fa85 Merge pull request #12 from eyakubovich/git-ignore
adding .gitignore
2015-05-11 12:18:08 -07:00
Eugene Yakubovich
5e643a02a0 adding .gitignore 2015-05-11 11:12:24 -07:00
Eugene Yakubovich
e59e2fd890 Merge pull request #9 from eyakubovich/errors
report errors via JSON
2015-05-08 15:08:03 -07:00
Eugene Yakubovich
601f991ee5 Merge pull request #9 from eyakubovich/errors
report errors via JSON
2015-05-08 15:08:03 -07:00
Eugene Yakubovich
c7a1442830 report errors via JSON
This reflects the latest SPEC draft.
2015-05-08 15:07:09 -07:00
Eugene Yakubovich
a4896a9401 report errors via JSON
This reflects the latest SPEC draft.
2015-05-08 15:07:09 -07:00
Eugene Yakubovich
dfd99811c8 Merge pull request #11 from eyakubovich/nspath
Do not use netns as ID or for entropy
2015-05-08 15:02:56 -07:00
Eugene Yakubovich
93be8e63f1 Do not use netns as ID or for entropy
ContainerID is now required so use that
or generate random bytes.

Fixes #5
2015-05-08 15:02:23 -07:00
Eugene Yakubovich
b2d9801b25 Do not use netns as ID or for entropy
ContainerID is now required so use that
or generate random bytes.

Fixes #5
2015-05-08 15:02:23 -07:00
Eugene Yakubovich
22376748d5 Merge pull request #2 from jonboulle/master
*: first cut at SPEC and README
2015-05-05 14:41:38 -07:00
Eugene Yakubovich
ed97604e74 Merge pull request #8 from steveeJ/ipvlan
plugins: add ipvlan main plugin
2015-05-05 13:35:11 -07:00
Stefan Junker
1a71eb0caf plugins: add ipvlan main plugin
Add the ipvlan main plugin which is heavily based on the macvlan plugin.
Availabile modes for this plugin are l2 and l3, wheres l2 has the higher
compatibility due to support for multicast and broadcasts. L2 has therefore been
chosen as the default mode.
See the official docs at
https://www.kernel.org/doc/Documentation/networking/ipvlan.txt
for more information.

Fixes #6.
2015-05-02 23:18:03 -07:00
Eugene Yakubovich
50799d826b spec: incorporate feedback 2015-04-28 20:51:29 -07:00
Jonathan Boulle
622f8b6e16 SPEC: wording tweak 2015-04-28 20:51:29 -07:00
Eugene Yakubovich
6321656e96 wording fixes 2015-04-28 20:51:29 -07:00
Jonathan Boulle
0f8ca5aa60 *: first cut at SPEC and README 2015-04-28 20:51:29 -07:00
Eugene Yakubovich
88377fa346 Add plugin code
This adds basic plugins.
"main" types: veth, bridge, macvlan
"ipam" type: host-local

The code has been ported over from github.com/coreos/rkt project
and adapted to fit the CNI spec.
2015-04-27 14:14:29 -07:00
Eugene Yakubovich
c24708ff62 Add plugin code
This adds basic plugins.
"main" types: veth, bridge, macvlan
"ipam" type: host-local

The code has been ported over from github.com/coreos/rkt project
and adapted to fit the CNI spec.
2015-04-27 14:14:29 -07:00
Jonathan Boulle
502be19aed Initial commit 2015-04-04 20:35:49 -07:00