2023-03-28 22:48:58 +00:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
|
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
|
2017-09-14 19:31:01 +00:00
|
|
|
package sentinel
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/hashicorp/consul/api"
|
|
|
|
)
|
|
|
|
|
|
|
|
// ScopeFn is a callback that provides a sentinel scope. This is a callback
|
|
|
|
// so that if we don't run sentinel for some reason (not enabled or a basic
|
|
|
|
// policy check means we don't have to) then we don't spend the effort to make
|
|
|
|
// the map.
|
|
|
|
type ScopeFn func() map[string]interface{}
|
|
|
|
|
|
|
|
// ScopeKVUpsert returns the standard sentinel scope for a KV create or update.
|
|
|
|
func ScopeKVUpsert(key string, value []byte, flags uint64) map[string]interface{} {
|
|
|
|
return map[string]interface{}{
|
|
|
|
"key": key,
|
|
|
|
"value": string(value),
|
|
|
|
"flags": flags,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ScopeCatalogUpsert returns the standard sentinel scope for a catalog create
|
|
|
|
// or update. Service is allowed to be nil.
|
|
|
|
func ScopeCatalogUpsert(node *api.Node, service *api.AgentService) map[string]interface{} {
|
|
|
|
return map[string]interface{}{
|
|
|
|
"node": node,
|
|
|
|
"service": service,
|
|
|
|
}
|
|
|
|
}
|