in config/package_resource.go [422:477]
func (p *packageResouce) checkState(ctx context.Context) (inDesiredState bool, err error) {
if err := populateInstalledCache(ctx, p.managedPackage); err != nil {
return false, err
}
var desiredState agentendpointpb.OSPolicy_Resource_PackageResource_DesiredState
var pkgIns bool
switch {
case p.managedPackage.Apt != nil:
desiredState = p.managedPackage.Apt.DesiredState
_, pkgIns = aptInstalled.cache[p.managedPackage.Apt.PackageResource.GetName()]
case p.managedPackage.Deb != nil:
desiredState = agentendpointpb.OSPolicy_Resource_PackageResource_INSTALLED
_, pkgIns = debInstalled.cache[p.managedPackage.Deb.name]
case p.managedPackage.GooGet != nil:
desiredState = p.managedPackage.GooGet.DesiredState
_, pkgIns = gooInstalled.cache[p.managedPackage.GooGet.PackageResource.GetName()]
case p.managedPackage.MSI != nil:
desiredState = agentendpointpb.OSPolicy_Resource_PackageResource_INSTALLED
pkgIns, err = packages.MSIInstalled(p.managedPackage.MSI.productCode)
if err != nil {
return false, err
}
case p.managedPackage.Yum != nil:
desiredState = p.managedPackage.Yum.DesiredState
_, pkgIns = yumInstalled.cache[p.managedPackage.Yum.PackageResource.GetName()]
case p.managedPackage.Zypper != nil:
desiredState = p.managedPackage.Zypper.DesiredState
_, pkgIns = zypperInstalled.cache[p.managedPackage.Zypper.PackageResource.GetName()]
case p.managedPackage.RPM != nil:
desiredState = agentendpointpb.OSPolicy_Resource_PackageResource_INSTALLED
_, pkgIns = rpmInstalled.cache[p.managedPackage.RPM.name]
}
switch desiredState {
case agentendpointpb.OSPolicy_Resource_PackageResource_INSTALLED:
if pkgIns {
return true, nil
}
case agentendpointpb.OSPolicy_Resource_PackageResource_REMOVED:
if !pkgIns {
return true, nil
}
default:
return false, fmt.Errorf("DesiredState field not set or references state: %q", desiredState)
}
return false, nil
}