diff --git a/Dockerfile.dapper b/Dockerfile.dapper index 68d23afa..5bc02b4f 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -32,7 +32,7 @@ RUN apt-get update && \ ########## Dapper Configuration ##################### -ENV DAPPER_ENV VERSION DEV_BUILD RUNTEST +ENV DAPPER_ENV VERSION DEV_BUILD RUNTEST DEBUG ENV DAPPER_DOCKER_SOCKET true ENV DAPPER_SOURCE /go/src/github.com/rancher/os ENV DAPPER_OUTPUT ./bin ./dist ./build/initrd ./build/kernel diff --git a/netconf/netconf_linux.go b/netconf/netconf_linux.go index 8ab9f980..c800c899 100755 --- a/netconf/netconf_linux.go +++ b/netconf/netconf_linux.go @@ -210,9 +210,13 @@ func RunDhcp(netCfg *NetworkConfig, setHostname, setDNS bool) error { wg.Add(1) go func(iface string, match InterfaceConfig) { if match.DHCP { + // retrigger, perhaps we're running this to get the new address runDhcp(netCfg, iface, match.DHCPArgs, setHostname, setDNS) } else { - runDhcp(netCfg, iface, dhcpReleaseCmd, false, true) + if hasDhcp(iface) { + log.Infof("dhcp release %s", iface) + runDhcp(netCfg, iface, dhcpReleaseCmd, false, true) + } } wg.Done() }(name, match) @@ -222,6 +226,17 @@ func RunDhcp(netCfg *NetworkConfig, setHostname, setDNS bool) error { return nil } +func hasDhcp(iface string) bool { + cmd := exec.Command("dhcpcd", "-U", iface) + //cmd.Stderr = os.Stderr + out, err := cmd.Output() + if err != nil { + log.Error(err) + } + log.Debugf("dhcpcd -u %s: %s", iface, out) + return len(out) > 0 +} + func runDhcp(netCfg *NetworkConfig, iface string, argstr string, setHostname, setDNS bool) { args := []string{} if argstr != "" { diff --git a/tests/common_test.go b/tests/common_test.go index b1b53cea..5f8cf422 100755 --- a/tests/common_test.go +++ b/tests/common_test.go @@ -84,8 +84,10 @@ func (s *QemuSuite) RunQemuInstalled(c *C, additionalArgs ...string) error { func (s *QemuSuite) runQemu(c *C, args ...string) error { c.Assert(s.qemuCmd, IsNil) // can't run 2 qemu's at once (yet) s.qemuCmd = exec.Command(s.runCommand, args...) - //s.qemuCmd.Stdout = os.Stdout - s.qemuCmd.Stderr = os.Stderr + if os.Getenv("DEBUG") != "" { + s.qemuCmd.Stdout = os.Stdout + s.qemuCmd.Stderr = os.Stderr + } if err := s.qemuCmd.Start(); err != nil { return err } diff --git a/tests/network_test.go b/tests/network_test.go index b1e295d6..11e4ad63 100755 --- a/tests/network_test.go +++ b/tests/network_test.go @@ -57,8 +57,6 @@ func (s *QemuSuite) TestNetworkBootCfg(c *C) { "3: eth1: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+ " inet 10.1.0.41/24 scope global eth1\n"+ " valid_lft forever preferred_lft forever\n"+ - " inet6 fe80::5054:ff:fe12:3457/64 scope link \n"+ - " valid_lft forever preferred_lft forever\n"+ "4: eth2: mtu 1500 qdisc noop state DOWN group default qlen 1000\n"+ "5: eth3: mtu 1500 qdisc noop state DOWN group default qlen 1000\n"+ "6: docker-sys: mtu 1500 qdisc noqueue state DOWN group default qlen 1000\n"+ @@ -108,13 +106,9 @@ func (s *QemuSuite) TestNetworkBootAndCloudCfg(c *C) { // Need a test for that (presumably once we have libmachine based tests) " inet 10.1.0.52/24 scope global eth1\n"+ " valid_lft forever preferred_lft forever\n"+ - " inet6 fe80::5054:ff:fe12:3457/64 scope link \n"+ - " valid_lft forever preferred_lft forever\n"+ "4: eth2: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+ " inet 10.31.168.85/24 scope global eth2\n"+ " valid_lft forever preferred_lft forever\n"+ - " inet6 fe80::5054:ff:fe12:3458/64 scope link \n"+ - " valid_lft forever preferred_lft forever\n"+ // TODO: I think it would be better if this was dhcp: false, but it could go either way "5: eth3: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+ " inet XX.XX.XX.XX/24 brd 10.0.2.255 scope global eth3\n"+ @@ -168,13 +162,9 @@ func (s *QemuSuite) TestNetworkCfg(c *C) { "3: eth1: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+ " inet 10.1.0.41/24 scope global eth1\n"+ " valid_lft forever preferred_lft forever\n"+ - " inet6 fe80::5054:ff:fe12:3457/64 scope link \n"+ - " valid_lft forever preferred_lft forever\n"+ "4: eth2: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+ " inet 10.31.168.85/24 scope global eth2\n"+ " valid_lft forever preferred_lft forever\n"+ - " inet6 fe80::5054:ff:fe12:3458/64 scope link \n"+ - " valid_lft forever preferred_lft forever\n"+ // TODO: I think it would be better if this was dhcp: false, but it could go either way "5: eth3: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+ " inet XX.XX.XX.XX/24 brd 10.0.2.255 scope global eth3\n"+