mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
support for libnetwork daemon labels
Signed-off-by: Madhu Venugopal <madhu@docker.com>
This commit is contained in:
parent
4329f8d185
commit
613e60bcec
3 changed files with 46 additions and 5 deletions
|
@ -4,6 +4,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/BurntSushi/toml"
|
"github.com/BurntSushi/toml"
|
||||||
|
"github.com/docker/libnetwork/netlabel"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Config encapsulates configurations of various Libnetwork components
|
// Config encapsulates configurations of various Libnetwork components
|
||||||
|
@ -18,6 +19,7 @@ type DaemonCfg struct {
|
||||||
Debug bool
|
Debug bool
|
||||||
DefaultNetwork string
|
DefaultNetwork string
|
||||||
DefaultDriver string
|
DefaultDriver string
|
||||||
|
Labels []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// ClusterCfg represents cluster configuration
|
// ClusterCfg represents cluster configuration
|
||||||
|
@ -66,6 +68,17 @@ func OptionDefaultDriver(dd string) Option {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OptionLabels function returns an option setter for labels
|
||||||
|
func OptionLabels(labels []string) Option {
|
||||||
|
return func(c *Config) {
|
||||||
|
for _, label := range labels {
|
||||||
|
if strings.HasPrefix(label, netlabel.Prefix) {
|
||||||
|
c.Daemon.Labels = append(c.Daemon.Labels, label)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// OptionKVProvider function returns an option setter for kvstore provider
|
// OptionKVProvider function returns an option setter for kvstore provider
|
||||||
func OptionKVProvider(provider string) Option {
|
func OptionKVProvider(provider string) Option {
|
||||||
return func(c *Config) {
|
return func(c *Config) {
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/libnetwork/netlabel"
|
||||||
_ "github.com/docker/libnetwork/netutils"
|
_ "github.com/docker/libnetwork/netutils"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -19,3 +21,23 @@ func TestConfig(t *testing.T) {
|
||||||
t.Fatal("Error parsing a valid configuration file :", err)
|
t.Fatal("Error parsing a valid configuration file :", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestOptionsLabels(t *testing.T) {
|
||||||
|
c := &Config{}
|
||||||
|
l := []string{
|
||||||
|
"com.docker.network.key1=value1",
|
||||||
|
"com.docker.storage.key1=value1",
|
||||||
|
"com.docker.network.driver.key1=value1",
|
||||||
|
"com.docker.network.driver.key2=value2",
|
||||||
|
}
|
||||||
|
f := OptionLabels(l)
|
||||||
|
f(c)
|
||||||
|
if len(c.Daemon.Labels) != 3 {
|
||||||
|
t.Fatalf("Expecting 3 labels, seen %d", len(c.Daemon.Labels))
|
||||||
|
}
|
||||||
|
for _, l := range c.Daemon.Labels {
|
||||||
|
if !strings.HasPrefix(l, netlabel.Prefix) {
|
||||||
|
t.Fatalf("config must accept only libnetwork labels. Not : %s", l)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,18 +1,24 @@
|
||||||
package netlabel
|
package netlabel
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// Prefix constant marks the reserved label space for libnetwork
|
||||||
|
Prefix = "com.docker.network"
|
||||||
|
|
||||||
|
// DriverPrefix constant marks the reserved label space for libnetwork drivers
|
||||||
|
DriverPrefix = Prefix + ".driver"
|
||||||
|
|
||||||
// GenericData constant that helps to identify an option as a Generic constant
|
// GenericData constant that helps to identify an option as a Generic constant
|
||||||
GenericData = "io.docker.network.generic"
|
GenericData = Prefix + ".generic"
|
||||||
|
|
||||||
// PortMap constant represents Port Mapping
|
// PortMap constant represents Port Mapping
|
||||||
PortMap = "io.docker.network.endpoint.portmap"
|
PortMap = Prefix + ".portmap"
|
||||||
|
|
||||||
// MacAddress constant represents Mac Address config of a Container
|
// MacAddress constant represents Mac Address config of a Container
|
||||||
MacAddress = "io.docker.network.endpoint.macaddress"
|
MacAddress = Prefix + ".endpoint.macaddress"
|
||||||
|
|
||||||
// ExposedPorts constant represents exposedports of a Container
|
// ExposedPorts constant represents exposedports of a Container
|
||||||
ExposedPorts = "io.docker.network.endpoint.exposedports"
|
ExposedPorts = Prefix + ".endpoint.exposedports"
|
||||||
|
|
||||||
//EnableIPv6 constant represents enabling IPV6 at network level
|
//EnableIPv6 constant represents enabling IPV6 at network level
|
||||||
EnableIPv6 = "io.docker.network.enable_ipv6"
|
EnableIPv6 = Prefix + ".enable_ipv6"
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue