in policies/yum.go [68:115]
func yumChanges(ctx context.Context, yumInstalled, yumRemoved, yumUpdated []*agentendpointpb.Package) error {
var err error
var errs []string
var installed []*packages.PkgInfo
if len(yumInstalled) > 0 || len(yumUpdated) > 0 || len(yumRemoved) > 0 {
installed, err = packages.InstalledRPMPackages(ctx)
if err != nil {
return err
}
}
var updates []*packages.PkgInfo
if len(yumUpdated) > 0 {
updates, err = packages.YumUpdates(ctx)
if err != nil {
return err
}
}
changes := getNecessaryChanges(installed, updates, yumInstalled, yumRemoved, yumUpdated)
if changes.packagesToInstall != nil {
clog.Infof(ctx, "Installing packages %s", changes.packagesToInstall)
if err := packages.InstallYumPackages(ctx, changes.packagesToInstall); err != nil {
errs = append(errs, fmt.Sprintf("error installing yum packages: %v", err))
}
}
if changes.packagesToUpgrade != nil {
clog.Infof(ctx, "Upgrading packages %s", changes.packagesToUpgrade)
if err := packages.InstallYumPackages(ctx, changes.packagesToUpgrade); err != nil {
errs = append(errs, fmt.Sprintf("error upgrading yum packages: %v", err))
}
}
if changes.packagesToRemove != nil {
clog.Infof(ctx, "Removing packages %s", changes.packagesToRemove)
if err := packages.RemoveYumPackages(ctx, changes.packagesToRemove); err != nil {
errs = append(errs, fmt.Sprintf("error removing yum packages: %v", err))
}
}
if errs == nil {
return nil
}
return errors.New(strings.Join(errs, ",\n"))
}