Skip to content

Commit 648ea02

Browse files
committed
Auto create cni default network
This commit contains changes related to dynamically create networks depending on the CNI config and the current network state in libnetwork instance Signed-off-by: Abhinandan Prativadi <abhi@docker.com> CNI libnetwork files Signed-off-by: Abhinandan Prativadi <abhi@docker.com>
1 parent ec4b2a7 commit 648ea02

14 files changed

Lines changed: 131 additions & 12 deletions

File tree

client/network.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func (cli *NetworkCli) CmdNetworkCreate(chain string, args ...string) error {
8585
}
8686

8787
// Construct network create request body
88-
nc := networkCreate{Name: cmd.Arg(0), NetworkType: *flDriver, ID: *flID, IPv4Conf: icList, DriverOpts: driverOpts, NetworkOpts: networkOpts}
88+
nc := NetworkCreate{Name: cmd.Arg(0), NetworkType: *flDriver, ID: *flID, IPv4Conf: icList, DriverOpts: driverOpts, NetworkOpts: networkOpts}
8989
obj, _, err := readBody(cli.call("POST", "/networks", nc, nil))
9090
if err != nil {
9191
return err
@@ -137,7 +137,7 @@ func (cli *NetworkCli) CmdNetworkLs(chain string, args ...string) error {
137137
*last = 1
138138
}
139139

140-
var networkResources []networkResource
140+
var networkResources []NetworkResource
141141
err = json.Unmarshal(obj, &networkResources)
142142
if err != nil {
143143
return err
@@ -189,7 +189,7 @@ func (cli *NetworkCli) CmdNetworkInfo(chain string, args ...string) error {
189189
if err != nil {
190190
return err
191191
}
192-
networkResource := &networkResource{}
192+
networkResource := &NetworkResource{}
193193
if err := json.NewDecoder(bytes.NewReader(obj)).Decode(networkResource); err != nil {
194194
return err
195195
}
@@ -222,7 +222,7 @@ func lookupNetworkID(cli *NetworkCli, nameID string) (string, error) {
222222
return "", fmt.Errorf("name query failed for %s due to : statuscode(%d) %v", nameID, statusCode, string(obj))
223223
}
224224

225-
var list []*networkResource
225+
var list []*NetworkResource
226226
err = json.Unmarshal(obj, &list)
227227
if err != nil {
228228
return "", err

client/service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func lookupServiceID(cli *NetworkCli, nwName, svNameID string) (string, error) {
3333
if err != nil {
3434
return "", err
3535
}
36-
var nwList []networkResource
36+
var nwList []NetworkResource
3737
if err = json.Unmarshal(obj, &nwList); err != nil {
3838
return "", err
3939
}
@@ -46,7 +46,7 @@ func lookupServiceID(cli *NetworkCli, nwName, svNameID string) (string, error) {
4646
if err != nil {
4747
return "", err
4848
}
49-
networkResource := &networkResource{}
49+
networkResource := &NetworkResource{}
5050
if err := json.NewDecoder(bytes.NewReader(obj)).Decode(networkResource); err != nil {
5151
return "", err
5252
}

client/types.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import (
1010
Resources
1111
************/
1212

13-
// networkResource is the body of the "get network" http response message
14-
type networkResource struct {
13+
// NetworkResource is the body of the "get network" http response message
14+
type NetworkResource struct {
1515
Name string `json:"name"`
1616
ID string `json:"id"`
1717
Type string `json:"type"`
@@ -42,8 +42,8 @@ type ipamConf struct {
4242
AuxAddresses map[string]string
4343
}
4444

45-
// networkCreate is the expected body of the "create network" http request message
46-
type networkCreate struct {
45+
// NetworkCreate is the expected body of the "create network" http request message
46+
type NetworkCreate struct {
4747
Name string `json:"name"`
4848
ID string `json:"id"`
4949
NetworkType string `json:"network_type"`

config/config.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ func ParseConfig(tomlCfgFile string) (*Config, error) {
7777
if cfg.Cluster.Discovery == "" {
7878
cfg.Cluster.Discovery = os.Getenv("DNET_DISCOVERY")
7979
}
80+
//TODO (ABHI): Handle this better. default to etcd for now
81+
if !(strings.Contains(cfg.Cluster.Discovery, "etcd") || strings.Contains(cfg.Cluster.Discovery, "consul")) {
82+
cfg.Cluster.Discovery = "etcd://" + cfg.Cluster.Discovery
83+
}
8084
fmt.Printf("cluster address=%s, discovery=%s \n", cfg.Cluster.Address, cfg.Cluster.Discovery)
8185

8286
if _, ok := cfg.Scopes[datastore.GlobalScope]; !ok {

install/Dockerfile.cniserver

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM ubuntu:16.04
2+
3+
RUN apt-get update \
4+
&& apt-get install -y\
5+
net-tools \
6+
iptables \
7+
&& rm -rf /var/lib/apt/lists/*
8+
9+
COPY bin/cniserver /var/libnetwork/bin/
10+
COPY cniserver.sh /var/libnetwork/
11+
COPY bin/cnictl /var/libnetwork/bin/
12+
COPY net.conf /var/libnetwork/config/
13+
14+
ENTRYPOINT ["/var/libnetwork/cniserver.sh"]

install/Dockerfile.dnet

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ubuntu:16.04
2+
3+
RUN apt-get update \
4+
&& apt-get install -y\
5+
net-tools \
6+
iptables \
7+
&& rm -rf /var/lib/apt/lists/*
8+
9+
COPY bin/dnet /var/libnetwork/bin/
10+
COPY dnet.sh /var/libnetwork/
11+
COPY config.toml /var/libnetwork/config/
12+
13+
ENTRYPOINT ["/var/libnetwork/dnet.sh"]

install/cniserver

18.8 MB
Binary file not shown.

install/cniserver.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/bash
2+
set -euo pipefail
3+
cp /var/libnetwork/bin/cnictl /opt/cni/bin/libnetwork-cni
4+
cp /var/libnetwork/config/net.conf /etc/cni/net.d/00-libnetwork-cni.conf
5+
6+
/var/libnetwork/bin/cniserver &> /home/libnetwork/cniserver.log

install/config.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
title = "LibNetwork Configuration file"
2+
3+
[daemon]
4+
debug = true
5+
labels = ["com.docker.network.driver.overlay.hostmode=true"]
6+
[cluster]
7+
discovery = ""
8+
[datastore]
9+
embedded = false

install/config_working.toml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title = "LibNetwork Configuration file"
2+
3+
[daemon]
4+
debug = true
5+
labels = ["com.docker.network.driver.overlay.hostmode=true"]
6+
[cluster]
7+
discovery = "etcd://localhost:2379"
8+
[datastore]
9+
embedded = false
10+
[datastore.client]
11+
provider = "etcd"
12+
Address = "localhost:2379"
13+
[scopes]
14+
[scopes.global]
15+
[scopes.global.client]
16+
provider = "etcd"
17+
address = "localhost:2379"

0 commit comments

Comments
 (0)