in agentendpoint/patch_linux.go [32:95]
func (r *patchTask) runUpdates(ctx context.Context) error {
var errs []string
const retryPeriod = 3 * time.Minute
// Check for both apt-get and dpkg-query to give us a clean signal.
if packages.AptExists && packages.DpkgQueryExists {
excludes, err := convertInputToExcludes(r.Task.GetPatchConfig().GetApt().GetExcludes())
if err != nil {
return err
}
opts := []ospatch.AptGetUpgradeOption{
ospatch.AptGetDryRun(r.Task.GetDryRun()),
ospatch.AptGetExcludes(excludes),
ospatch.AptGetExclusivePackages(r.Task.GetPatchConfig().GetApt().GetExclusivePackages()),
}
switch r.Task.GetPatchConfig().GetApt().GetType() {
case agentendpointpb.AptSettings_DIST:
opts = append(opts, ospatch.AptGetUpgradeType(packages.AptGetDistUpgrade))
}
clog.Debugf(ctx, "Installing APT package updates.")
if err := retryutil.RetryFunc(ctx, retryPeriod, "installing APT package updates", func() error { return ospatch.RunAptGetUpgrade(ctx, opts...) }); err != nil {
errs = append(errs, err.Error())
}
}
if packages.YumExists && packages.RPMQueryExists {
excludes, err := convertInputToExcludes(r.Task.GetPatchConfig().GetYum().GetExcludes())
if err != nil {
return err
}
opts := []ospatch.YumUpdateOption{
ospatch.YumUpdateSecurity(r.Task.GetPatchConfig().GetYum().GetSecurity()),
ospatch.YumUpdateMinimal(r.Task.GetPatchConfig().GetYum().GetMinimal()),
ospatch.YumUpdateExcludes(excludes),
ospatch.YumExclusivePackages(r.Task.GetPatchConfig().GetYum().GetExclusivePackages()),
ospatch.YumDryRun(r.Task.GetDryRun()),
}
clog.Debugf(ctx, "Installing YUM package updates.")
if err := retryutil.RetryFunc(ctx, retryPeriod, "installing YUM package updates", func() error { return ospatch.RunYumUpdate(ctx, opts...) }); err != nil {
errs = append(errs, err.Error())
}
}
if packages.ZypperExists && packages.RPMQueryExists {
excludes, err := convertInputToExcludes(r.Task.GetPatchConfig().GetZypper().GetExcludes())
if err != nil {
return err
}
opts := []ospatch.ZypperPatchOption{
ospatch.ZypperPatchCategories(r.Task.GetPatchConfig().GetZypper().GetCategories()),
ospatch.ZypperPatchSeverities(r.Task.GetPatchConfig().GetZypper().GetSeverities()),
ospatch.ZypperUpdateWithUpdate(r.Task.GetPatchConfig().GetZypper().GetWithUpdate()),
ospatch.ZypperUpdateWithOptional(r.Task.GetPatchConfig().GetZypper().GetWithOptional()),
ospatch.ZypperUpdateWithExcludes(excludes),
ospatch.ZypperUpdateWithExclusivePatches(r.Task.GetPatchConfig().GetZypper().GetExclusivePatches()),
ospatch.ZypperUpdateDryrun(r.Task.GetDryRun()),
}
clog.Debugf(ctx, "Installing Zypper updates.")
if err := retryutil.RetryFunc(ctx, retryPeriod, "installing Zypper updates", func() error { return ospatch.RunZypperPatch(ctx, opts...) }); err != nil {
errs = append(errs, err.Error())
}
}
if errs == nil {
return nil
}
return errors.New(strings.Join(errs, ",\n"))
}