mirror of
https://github.com/rancher/os.git
synced 2025-06-26 23:06:51 +00:00
Merge pull request #2231 from niusmallnan/wait-for-netconf
Add more logs for networking conf
This commit is contained in:
commit
3cfd6a63a0
@ -6,11 +6,12 @@ import (
|
||||
"github.com/rancher/os/docker"
|
||||
"github.com/rancher/os/log"
|
||||
|
||||
"io/ioutil"
|
||||
|
||||
"github.com/docker/libnetwork/resolvconf"
|
||||
"github.com/rancher/os/config"
|
||||
"github.com/rancher/os/hostname"
|
||||
"github.com/rancher/os/netconf"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
func Main() {
|
||||
@ -37,13 +38,13 @@ func ApplyNetworkConfig(cfg *config.CloudConfig) {
|
||||
userSetDNS := len(cfg.Rancher.Network.DNS.Nameservers) > 0 || len(cfg.Rancher.Network.DNS.Search) > 0
|
||||
|
||||
if err := hostname.SetHostnameFromCloudConfig(cfg); err != nil {
|
||||
log.Error(err)
|
||||
log.Errorf("Failed to set hostname from cloud config: %v", err)
|
||||
}
|
||||
|
||||
userSetHostname := cfg.Hostname != ""
|
||||
dhcpSetDNS, err := netconf.ApplyNetworkConfigs(&cfg.Rancher.Network, userSetHostname, userSetDNS)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
log.Errorf("Failed to apply network configs(by netconf): %v", err)
|
||||
}
|
||||
|
||||
if dhcpSetDNS {
|
||||
@ -57,12 +58,12 @@ func ApplyNetworkConfig(cfg *config.CloudConfig) {
|
||||
cfg.Rancher.Defaults.Network.DNS.Nameservers,
|
||||
cfg.Rancher.Defaults.Network.DNS.Search,
|
||||
nil); err != nil {
|
||||
log.Error(err)
|
||||
log.Errorf("Failed to write resolv.conf (!userSetDNS and !dhcpSetDNS): %v", err)
|
||||
}
|
||||
}
|
||||
if userSetDNS {
|
||||
if _, err := resolvconf.Build("/etc/resolv.conf", cfg.Rancher.Network.DNS.Nameservers, cfg.Rancher.Network.DNS.Search, nil); err != nil {
|
||||
log.Error(err)
|
||||
log.Errorf("Failed to write resolv.conf (userSetDNS): %v", err)
|
||||
} else {
|
||||
log.Infof("writing to /etc/resolv.conf: nameservers: %v, search: %v", cfg.Rancher.Network.DNS.Nameservers, cfg.Rancher.Network.DNS.Search)
|
||||
}
|
||||
@ -73,6 +74,6 @@ func ApplyNetworkConfig(cfg *config.CloudConfig) {
|
||||
|
||||
log.Infof("Apply Network Config SyncHostname")
|
||||
if err := hostname.SyncHostname(); err != nil {
|
||||
log.Error(err)
|
||||
log.Errorf("Failed to sync hostname: %v", err)
|
||||
}
|
||||
}
|
||||
|
@ -177,7 +177,10 @@ func ApplyNetworkConfigs(netCfg *NetworkConfig, userSetHostname, userSetDNS bool
|
||||
|
||||
//apply network config
|
||||
for _, link := range links {
|
||||
applyOuter(link, netCfg, &wg, userSetHostname, userSetDNS)
|
||||
linkName := link.Attrs().Name
|
||||
if linkName != "lo" {
|
||||
applyOuter(link, netCfg, &wg, userSetHostname, userSetDNS)
|
||||
}
|
||||
}
|
||||
wg.Wait()
|
||||
|
||||
@ -186,26 +189,27 @@ func ApplyNetworkConfigs(netCfg *NetworkConfig, userSetHostname, userSetDNS bool
|
||||
dnsSet := false
|
||||
for _, link := range links {
|
||||
linkName := link.Attrs().Name
|
||||
log.Infof("dns testing %s", linkName)
|
||||
lease := getDhcpLease(linkName)
|
||||
if _, ok := lease["domain_name_servers"]; ok {
|
||||
log.Infof("dns was dhcp set for %s", linkName)
|
||||
dnsSet = true
|
||||
if linkName != "lo" {
|
||||
log.Infof("dns testing %s", linkName)
|
||||
lease := getDhcpLease(linkName)
|
||||
if _, ok := lease["domain_name_servers"]; ok {
|
||||
log.Infof("dns was dhcp set for %s", linkName)
|
||||
dnsSet = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dnsSet, err
|
||||
return dnsSet, nil
|
||||
}
|
||||
|
||||
func applyOuter(link netlink.Link, netCfg *NetworkConfig, wg *sync.WaitGroup, userSetHostname, userSetDNS bool) {
|
||||
log.Debugf("applyOuter(%V, %v)", userSetHostname, userSetDNS)
|
||||
linkName := link.Attrs().Name
|
||||
log.Debugf("applyOuter(%v, %v), link: %s", userSetHostname, userSetDNS, linkName)
|
||||
match, ok := findMatch(link, netCfg)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
linkName := link.Attrs().Name
|
||||
|
||||
log.Debugf("Config(%s): %#v", linkName, match)
|
||||
runCmds(match.PreUp, linkName)
|
||||
defer runCmds(match.PostUp, linkName)
|
||||
@ -215,9 +219,7 @@ func applyOuter(link netlink.Link, netCfg *NetworkConfig, wg *sync.WaitGroup, us
|
||||
log.Errorf("Failed to apply settings to %s : %v", linkName, err)
|
||||
}
|
||||
}
|
||||
if linkName == "lo" {
|
||||
return
|
||||
}
|
||||
|
||||
if !match.DHCP && !hasDhcp(linkName) {
|
||||
log.Debugf("Skipping(%s): DHCP=false && no DHCP lease yet", linkName)
|
||||
return
|
||||
@ -254,18 +256,21 @@ func getDhcpLease(iface string) (lease map[string]string) {
|
||||
}
|
||||
|
||||
func getDhcpLeaseString(iface string) []byte {
|
||||
cmd := exec.Command("dhcpcd", "-U", iface)
|
||||
args := defaultDhcpArgs
|
||||
args = append(args, "-U", iface)
|
||||
cmd := exec.Command(args[0], args[1:]...)
|
||||
//cmd.Stderr = os.Stderr
|
||||
out, err := cmd.Output()
|
||||
log.Debugf("Running cmd: %s, output: %s", args, string(out))
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
// dhcpcd works fine, but gets an error: exit status 1
|
||||
log.Warnf("Failed to run cmd: %s, error: %v", args, err)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func hasDhcp(iface string) bool {
|
||||
out := getDhcpLeaseString(iface)
|
||||
log.Debugf("dhcpcd -U %s: %s", iface, out)
|
||||
return len(out) > 0
|
||||
}
|
||||
|
||||
@ -300,7 +305,7 @@ func runDhcp(netCfg *NetworkConfig, iface string, argstr string, setHostname, se
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
log.Error(err)
|
||||
log.Errorf("Failed to run dhcpcd for %s: %v", iface, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user