// RefreshDependentsSecurity refreshes the security policies of dependent snaps func (s *SnapPart) RefreshDependentsSecurity(oldPart *SnapPart, inter interacter) (err error) { oldBaseDir := "" if oldPart != nil { oldBaseDir = oldPart.basedir } upPol, upTpl := policy.AppArmorDelta(oldBaseDir, s.basedir, s.Name()+"_") deps, err := s.Dependents() if err != nil { return err } for _, dep := range deps { err := dep.RequestAppArmorUpdate(upPol, upTpl) if err != nil { return err } } cmd := exec.Command(aaClickHookCmd) if output, err := cmd.CombinedOutput(); err != nil { if exitCode, err := helpers.ExitCode(err); err == nil { return &ErrApparmorGenerate{ ExitCode: exitCode, Output: output, } } return err } return nil }
// RefreshDependentsSecurity refreshes the security policies of dependent snaps func (s *SnapPart) RefreshDependentsSecurity(oldPart *SnapPart, inter interacter) (err error) { oldBaseDir := "" if oldPart != nil { oldBaseDir = oldPart.basedir } upPol, upTpl := policy.AppArmorDelta(oldBaseDir, s.basedir, s.Name()+"_") deps, err := s.Dependents() if err != nil { return err } for _, dep := range deps { err := dep.RequestSecurityPolicyUpdate(upPol, upTpl) if err != nil { return err } } return nil }