Added "host" driver and test code.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
This commit is contained in:
Jana Radhakrishnan
2015-05-03 20:37:22 +00:00
parent eeb243ca54
commit c8062e4ad4
3 changed files with 99 additions and 1 deletions

View File

@@ -3,6 +3,7 @@ package libnetwork
import (
"github.com/docker/libnetwork/driverapi"
"github.com/docker/libnetwork/drivers/bridge"
"github.com/docker/libnetwork/drivers/host"
"github.com/docker/libnetwork/drivers/null"
)
@@ -11,7 +12,11 @@ type driverTable map[string]driverapi.Driver
func enumerateDrivers() driverTable {
drivers := make(driverTable)
for _, fn := range [](func() (string, driverapi.Driver)){bridge.New, null.New} {
for _, fn := range [](func() (string, driverapi.Driver)){
bridge.New,
host.New,
null.New,
} {
name, driver := fn()
drivers[name] = driver
}

60
drivers/host/host.go Normal file
View File

@@ -0,0 +1,60 @@
package host
import (
"github.com/docker/libnetwork/driverapi"
"github.com/docker/libnetwork/sandbox"
"github.com/docker/libnetwork/types"
)
const networkType = "host"
type driver struct{}
// New provides a new instance of host driver
func New() (string, driverapi.Driver) {
return networkType, &driver{}
}
func (d *driver) Config(option map[string]interface{}) error {
return nil
}
func (d *driver) CreateNetwork(id types.UUID, option map[string]interface{}) error {
return nil
}
func (d *driver) DeleteNetwork(nid types.UUID) error {
return nil
}
func (d *driver) CreateEndpoint(nid, eid types.UUID, epOptions map[string]interface{}) (*sandbox.Info, error) {
return nil, nil
}
func (d *driver) DeleteEndpoint(nid, eid types.UUID) error {
return nil
}
func (d *driver) EndpointInfo(nid, eid types.UUID) (map[string]interface{}, error) {
return make(map[string]interface{}, 0), nil
}
// Join method is invoked when a Sandbox is attached to an endpoint.
func (d *driver) Join(nid, eid types.UUID, sboxKey string, options map[string]interface{}) (*driverapi.JoinInfo, error) {
jInfo := &driverapi.JoinInfo{
SandboxKey: sandbox.GenerateKey("host"),
NoSandboxCreate: true,
HostsPath: "/etc/hosts",
}
return jInfo, nil
}
// Leave method is invoked when a Sandbox detaches from an endpoint.
func (d *driver) Leave(nid, eid types.UUID, options map[string]interface{}) error {
return nil
}
func (d *driver) Type() string {
return networkType
}

View File

@@ -89,6 +89,39 @@ func TestNull(t *testing.T) {
}
}
func TestHost(t *testing.T) {
network, err := createTestNetwork("host", "testnetwork", options.Generic{})
if err != nil {
t.Fatal(err)
}
ep, err := network.CreateEndpoint("testep")
if err != nil {
t.Fatal(err)
}
_, err = ep.Join("host_container",
libnetwork.JoinOptionHostname("test"),
libnetwork.JoinOptionDomainname("docker.io"),
libnetwork.JoinOptionExtraHost("web", "192.168.0.1"))
if err != nil {
t.Fatal(err)
}
err = ep.Leave("host_container")
if err != nil {
t.Fatal(err)
}
if err := ep.Delete(); err != nil {
t.Fatal(err)
}
if err := network.Delete(); err != nil {
t.Fatal(err)
}
}
func TestBridge(t *testing.T) {
defer netutils.SetupTestNetNS(t)()
ip, subnet, err := net.ParseCIDR("192.168.100.1/24")