func()

in cmd/node-cache/app/configmap.go [160:204]


func (c *CacheApp) initDNSConfigSync() {
	var syncList []*syncInfo
	var kubeDNSChan, NodeLocalDNSChan <-chan *config.Config
	initialKubeDNSConfig := &config.Config{}

	if c.params.KubednsCMPath == "" {
		if _, err := os.Stat(DefaultKubednsCMPath); !os.IsNotExist(err) {
			c.params.KubednsCMPath = DefaultKubednsCMPath
		}
	}

	if c.params.KubednsCMPath != "" {
		c.kubednsConfig.ConfigDir = c.params.KubednsCMPath
		syncList = append(syncList, &syncInfo{configName: "kube-dns",
			filePath:   c.kubednsConfig.ConfigDir,
			period:     c.kubednsConfig.ConfigPeriod,
			updateFunc: c.updateCorefile,
			chanAddr:   &kubeDNSChan,
		})
	} else {
		clog.Infof("Skipping kube-dns configmap sync as no directory was specified")
	}
	syncList = append(syncList, &syncInfo{configName: "node-local-dns",
		filePath: path.Dir(c.params.BaseCoreFile),
		period:   DefaultConfigSyncPeriod,
		chanAddr: &NodeLocalDNSChan,
	})

	for _, info := range syncList {
		configSync := config.NewFileSync(info.filePath, info.period)
		initialConfig, err := configSync.Once()
		if err != nil {
			clog.Errorf("Failed to sync %s config directory %s, err: %v", info.configName, info.filePath, err)
			continue
		}
		if info.updateFunc != nil {
			info.updateFunc(initialConfig)
		}
		if info.configName == "kube-dns" {
			initialKubeDNSConfig = initialConfig
		}
		*(info.chanAddr) = configSync.Periodic()
	}
	go c.syncDNSConfig(kubeDNSChan, NodeLocalDNSChan, initialKubeDNSConfig)
}