in cache-config/t3c-apply/torequest/torequest.go [826:917]
func (r *TrafficOpsReq) ProcessConfigFiles(metaData *t3cutil.ApplyMetaData) (UpdateStatus, error) {
var updateStatus UpdateStatus = UpdateTropsNotNeeded
var auditErrors []string
log.Infoln(" ======== Start processing config files ========")
filesAdding := []string{} // list of file names being added, needed for verification.
for fileName := range r.configFiles {
filesAdding = append(filesAdding, fileName)
}
for _, cfg := range r.configFiles {
// add service metadata
if strings.Contains(cfg.Path, "/opt/trafficserver/") || strings.Contains(cfg.Dir, "udev") {
cfg.Service = "trafficserver"
if !r.Cfg.InstallPackages && !r.IsPackageInstalled("trafficserver") {
log.Errorln("Not installing packages, but trafficserver isn't installed. Continuing.")
}
} else if strings.Contains(cfg.Path, "/opt/ort") && strings.Contains(cfg.Name, "12M_facts") {
cfg.Service = "puppet"
} else if strings.Contains(cfg.Path, "cron") || strings.Contains(cfg.Name, "sysctl.conf") || strings.Contains(cfg.Name, "50-ats.rules") || strings.Contains(cfg.Name, "cron") {
cfg.Service = "system"
} else if strings.Contains(cfg.Path, "ntp.conf") {
cfg.Service = "ntpd"
} else {
cfg.Service = "unknown"
}
log.Debugf("About to process config file: %s, service: %s\n", cfg.Path, cfg.Service)
err := r.checkConfigFile(cfg, filesAdding)
if err != nil {
log.Errorln(err)
r.configFiles[cfg.Name].AuditError = err.Error()
}
}
changesRequired := 0
shouldRestartReload := ShouldReloadRestart{[]FileRestartData{}}
for _, cfg := range r.configFiles {
metaData.OwnedFilePaths = append(metaData.OwnedFilePaths, cfg.Path) // all config files are added to OwnedFiles, even if they aren't changed on disk.
if cfg.ChangeNeeded &&
!cfg.ChangeApplied &&
cfg.AuditComplete &&
!cfg.PreReqFailed &&
!cfg.AuditFailed {
changesRequired++
if cfg.Name == "plugin.config" && r.configFiles["remap.config"].PreReqFailed {
updateStatus = UpdateTropsFailed
log.Errorln("plugin.config changed however, prereqs failed for remap.config so I am skipping updates for plugin.config")
continue
} else if cfg.Name == "remap.config" && r.configFiles["plugin.config"].PreReqFailed {
updateStatus = UpdateTropsFailed
log.Errorln("remap.config changed however, prereqs failed for plugin.config so I am skipping updates for remap.config")
continue
} else if cfg.Name == "ip_allow.config" && !r.Cfg.UpdateIPAllow {
log.Warnln("ip_allow.config changed, not updating! Run with --mode=badass or --syncds-updates-ipallow=true to update!")
continue
} else {
log.Debugf("All Prereqs passed for replacing %s on disk with that in Traffic Ops.\n", cfg.Name)
reData, err := r.replaceCfgFile(cfg)
if err != nil {
log.Errorf("failed to replace the config file, '%s', on disk with data in Traffic Ops.\n", cfg.Name)
}
shouldRestartReload.ReloadRestart = append(shouldRestartReload.ReloadRestart, *reData)
}
} else if cfg.AuditFailed {
auditErrors = append(auditErrors, cfg.AuditError)
log.Warnf("audit failed for config file: %v Error: %s", cfg.Name, cfg.AuditError)
updateStatus = UpdateTropsFailed
}
}
if updateStatus == UpdateTropsFailed {
return UpdateTropsFailed, errors.New(strings.Join(auditErrors, "\n"))
}
r.RestartData = r.CheckReloadRestart(shouldRestartReload.ReloadRestart)
if 0 < len(r.changedFiles) {
log.Infof("Final state: remap.config: %t reload: %t restart: %t ntpd: %t sysctl: %t", r.RemapConfigReload, r.TrafficCtlReload, r.TrafficServerRestart, r.NtpdRestart, r.SysCtlReload)
}
if updateStatus != UpdateTropsFailed && changesRequired > 0 {
return UpdateTropsNeeded, nil
}
return updateStatus, nil
}