summaryrefslogtreecommitdiff
path: root/pkg/hooks/1.0.0/when.go
diff options
context:
space:
mode:
authorAditya R <arajan@redhat.com>2022-07-12 18:34:44 +0530
committerMatthew Heon <matthew.heon@pm.me>2022-07-26 13:48:10 -0400
commit73ecc5a4bdd620124650dbdb621df667beb8438f (patch)
tree9ca86f30eee328e5c7a5a9fe3163cfdb9b8c3053 /pkg/hooks/1.0.0/when.go
parentd151edeeaf4ce35586952ceef48a0c7c054c583b (diff)
downloadpodman-73ecc5a4bdd620124650dbdb621df667beb8438f.tar.gz
podman-73ecc5a4bdd620124650dbdb621df667beb8438f.tar.bz2
podman-73ecc5a4bdd620124650dbdb621df667beb8438f.zip
pkg,libpod: remove pkg/hooks and use hooks from c/common
PR https://github.com/containers/common/pull/1071 moved `pkg/hooks` to `c/common` hence remove that from podman and use `pkg/hooks` from `c/common` [NO NEW TESTS NEEDED] [NO TESTS NEEDED] Signed-off-by: Aditya R <arajan@redhat.com>
Diffstat (limited to 'pkg/hooks/1.0.0/when.go')
-rw-r--r--pkg/hooks/1.0.0/when.go96
1 files changed, 0 insertions, 96 deletions
diff --git a/pkg/hooks/1.0.0/when.go b/pkg/hooks/1.0.0/when.go
deleted file mode 100644
index a1351890f..000000000
--- a/pkg/hooks/1.0.0/when.go
+++ /dev/null
@@ -1,96 +0,0 @@
-package hook
-
-import (
- "errors"
- "fmt"
- "regexp"
-
- rspec "github.com/opencontainers/runtime-spec/specs-go"
-)
-
-// When holds hook-injection conditions.
-type When struct {
- Always *bool `json:"always,omitempty"`
- Annotations map[string]string `json:"annotations,omitempty"`
- Commands []string `json:"commands,omitempty"`
- HasBindMounts *bool `json:"hasBindMounts,omitempty"`
-
- // Or enables any-of matching.
- //
- // Deprecated: this property is for is backwards-compatibility with
- // 0.1.0 hooks. It will be removed when we drop support for them.
- Or bool `json:"-"`
-}
-
-// Match returns true if the given conditions match the configuration.
-func (when *When) Match(config *rspec.Spec, annotations map[string]string, hasBindMounts bool) (match bool, err error) {
- matches := 0
-
- if when.Always != nil {
- if *when.Always {
- if when.Or {
- return true, nil
- }
- matches++
- } else if !when.Or {
- return false, nil
- }
- }
-
- if when.HasBindMounts != nil {
- if *when.HasBindMounts && hasBindMounts {
- if when.Or {
- return true, nil
- }
- matches++
- } else if !when.Or {
- return false, nil
- }
- }
-
- for keyPattern, valuePattern := range when.Annotations {
- match := false
- for key, value := range annotations {
- match, err = regexp.MatchString(keyPattern, key)
- if err != nil {
- return false, fmt.Errorf("annotation key: %w", err)
- }
- if match {
- match, err = regexp.MatchString(valuePattern, value)
- if err != nil {
- return false, fmt.Errorf("annotation value: %w", err)
- }
- if match {
- break
- }
- }
- }
- if match {
- if when.Or {
- return true, nil
- }
- matches++
- } else if !when.Or {
- return false, nil
- }
- }
-
- if config.Process != nil && len(when.Commands) > 0 {
- if len(config.Process.Args) == 0 {
- return false, errors.New("process.args must have at least one entry")
- }
- command := config.Process.Args[0]
- for _, cmdPattern := range when.Commands {
- match, err := regexp.MatchString(cmdPattern, command)
- if err != nil {
- return false, fmt.Errorf("command: %w", err)
- }
- if match {
- return true, nil
- }
- }
- return false, nil
- }
-
- return matches > 0, nil
-}