1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Add network name

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
This commit is contained in:
Arnaud Porterie 2015-03-02 10:17:12 -08:00
parent ba111871ea
commit b9bd3a7dd0
6 changed files with 35 additions and 27 deletions

View file

@ -14,7 +14,7 @@ func main() {
net.IP = ip
options := libnetwork.DriverParams{"AddressIPv4": net}
netw, err := libnetwork.NewNetwork("simplebridge", options)
netw, err := libnetwork.NewNetwork("simplebridge", "dummy", options)
if err != nil {
log.Fatal(err)
}

View file

@ -23,7 +23,7 @@ var drivers = map[string]struct {
//
// For example:
//
// func CreateTestNetwork(config *TestNetworkConfig()) (Network, error) {
// func CreateTestNetwork(name string, config *TestNetworkConfig()) (Network, error) {
// }
//
// func init() {
@ -32,7 +32,7 @@ var drivers = map[string]struct {
//
func RegisterNetworkType(name string, creatorFn interface{}, creatorArg interface{}) error {
// Validate the creator function signature.
ctorArg := []reflect.Type{reflect.TypeOf(creatorArg)}
ctorArg := []reflect.Type{reflect.TypeOf((*string)(nil)), reflect.TypeOf(creatorArg)}
ctorRet := []reflect.Type{reflect.TypeOf((*Network)(nil)).Elem(), reflect.TypeOf((*error)(nil)).Elem()}
if err := validateFunctionSignature(creatorFn, ctorArg, ctorRet); err != nil {
sig := fmt.Sprintf("func (%s) (Network, error)", ctorArg[0].Name)
@ -50,10 +50,10 @@ func RegisterNetworkType(name string, creatorFn interface{}, creatorArg interfac
return nil
}
func createNetwork(name string, generic DriverParams) (Network, error) {
d, ok := drivers[name]
func createNetwork(networkType, name string, generic DriverParams) (Network, error) {
d, ok := drivers[networkType]
if !ok {
return nil, fmt.Errorf("unknown driver %q", name)
return nil, fmt.Errorf("unknown driver %q", networkType)
}
config, err := options.GenerateFromModel(options.Generic(generic), d.creatorArg)
@ -61,7 +61,7 @@ func createNetwork(name string, generic DriverParams) (Network, error) {
return nil, fmt.Errorf("failed to generate driver config: %v", err)
}
arg := []reflect.Value{reflect.ValueOf(config)}
arg := []reflect.Value{reflect.ValueOf(name), reflect.ValueOf(config)}
res := reflect.ValueOf(d.creatorFn).Call(arg)
return makeCreateResult(res)
}

View file

@ -25,7 +25,7 @@ func init() {
libnetwork.RegisterNetworkType(NetworkType, Create, &Configuration{})
}
func Create(config *Configuration) (libnetwork.Network, error) {
func Create(name string, config *Configuration) (libnetwork.Network, error) {
bridgeIntfc := NewInterface(config)
bridgeSetup := NewBridgeSetup(bridgeIntfc)
@ -77,5 +77,5 @@ func Create(config *Configuration) (libnetwork.Network, error) {
return nil, err
}
return &bridgeNetwork{*config}, nil
return &bridgeNetwork{NetworkName: name, Config: *config}, nil
}

View file

@ -11,7 +11,7 @@ func TestCreate(t *testing.T) {
defer libnetwork.SetupTestNetNS(t)()
config := &Configuration{BridgeName: DefaultBridgeName}
netw, err := Create(config)
netw, err := Create("dummy", config)
if err != nil {
t.Fatalf("Failed to create bridge: %v", err)
}
@ -25,7 +25,7 @@ func TestCreateFail(t *testing.T) {
defer libnetwork.SetupTestNetNS(t)()
config := &Configuration{BridgeName: "dummy0"}
if _, err := Create(config); err == nil {
if _, err := Create("dummy", config); err == nil {
t.Fatal("Bridge creation was expected to fail")
}
}
@ -42,7 +42,7 @@ func TestCreateFullOptions(t *testing.T) {
}
_, config.FixedCIDRv6, _ = net.ParseCIDR("2001:db8::/48")
netw, err := Create(config)
netw, err := Create("dummy", config)
if err != nil {
t.Fatalf("Failed to create bridge: %v", err)
}

View file

@ -3,7 +3,12 @@ package bridge
import "github.com/docker/libnetwork"
type bridgeNetwork struct {
Config Configuration
Config Configuration
NetworkName string
}
func (b *bridgeNetwork) Name() string {
return b.NetworkName
}
func (b *bridgeNetwork) Type() string {

View file

@ -31,18 +31,6 @@
//
package libnetwork
// A Network represents a logical connectivity zone that containers may
// ulteriorly join using the Link method. A Network is managed by a specific
// driver.
type Network interface {
// The type of network, which corresponds to its managing driver.
Type() string
// Create a new link to this network symbolically identified by the
// specified unique name.
Link(name string) ([]*Interface, error)
}
// Interface represents the settings and identity of a network device. It is
// used as a return type for Network.Link, and it is common practice for the
// caller to use this information when moving interface SrcName from host
@ -75,6 +63,21 @@ type Interface struct {
MTU int
}
// A Network represents a logical connectivity zone that containers may
// ulteriorly join using the Link method. A Network is managed by a specific
// driver.
type Network interface {
// A user chosen name for this network.
Name() string
// The type of network, which corresponds to its managing driver.
Type() string
// Create a new link to this network symbolically identified by the
// specified unique name.
Link(name string) ([]*Interface, error)
}
// Namespace represents a network namespace, mounted on a specific Path. It
// holds a list of Interface, and more can be added dynamically.
type Namespace interface {
@ -95,8 +98,8 @@ type Namespace interface {
// Create a new network of the specified networkType. The options are driver
// specific and modeled in a generic way.
func NewNetwork(networkType string, options DriverParams) (Network, error) {
return createNetwork(networkType, options)
func NewNetwork(networkType, name string, options DriverParams) (Network, error) {
return createNetwork(networkType, name, options)
}
// Create a new network namespace mounted on the specified path.