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:
parent
ba111871ea
commit
b9bd3a7dd0
6 changed files with 35 additions and 27 deletions
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue