mirror of
https://github.com/edgelesssys/constellation.git
synced 2024-12-15 19:04:23 -05:00
72 lines
2.3 KiB
Go
72 lines
2.3 KiB
Go
|
/*
|
||
|
Copyright (c) Edgeless Systems GmbH
|
||
|
|
||
|
SPDX-License-Identifier: AGPL-3.0-only
|
||
|
*/
|
||
|
package fields
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// THIS FILE IS A DUPLICATE OF debugd/internal/debugd/logcollector/fields.go
|
||
|
|
||
|
var (
|
||
|
// DebugdLogcollectPrefix is the prefix for all OpenSearch fields specified by the user when starting through debugd.
|
||
|
DebugdLogcollectPrefix = "logcollect."
|
||
|
// AllowedFields are the fields that are allowed to be used in the logcollection.
|
||
|
AllowedFields = map[string]struct{}{
|
||
|
"admin": {}, // name of the person running the cdbg command
|
||
|
"is_debug_cluster": {}, // whether the cluster is a debug cluster
|
||
|
// GitHub workflow information, see https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables
|
||
|
"github.actor": {},
|
||
|
"github.workflow": {},
|
||
|
"github.run-id": {},
|
||
|
"github.run-attempt": {},
|
||
|
"github.ref-name": {},
|
||
|
"github.sha": {},
|
||
|
"github.runner-os": {},
|
||
|
"github.e2e-test-payload": {},
|
||
|
"github.is-debug-cluster": {},
|
||
|
// cloud provider used in e2e test. If deployed with debugd, this is a duplicate as its also
|
||
|
// available in the metadata. If deployed through K8s in e2e tests with a stable image, this
|
||
|
// is where the cloud provider is saved in.
|
||
|
"github.e2e-test-provider": {},
|
||
|
"deployment-type": {}, // deployment type, e.g. "debugd", "k8s"
|
||
|
}
|
||
|
)
|
||
|
|
||
|
// FromMap returns new Fields from the given map.
|
||
|
func FromMap(m map[string]string) Fields {
|
||
|
return Fields(m)
|
||
|
}
|
||
|
|
||
|
// Fields are the OpenSearch fields that are associated with a log message.
|
||
|
type Fields map[string]string
|
||
|
|
||
|
// Extend adds the fields from other to f and returns the result.
|
||
|
func (f Fields) Extend(other Fields) Fields {
|
||
|
for k, v := range other {
|
||
|
f[k] = v
|
||
|
}
|
||
|
return f
|
||
|
}
|
||
|
|
||
|
// Check checks whether all the fields in f are allowed. For fields that are prefixed with the debugd logcollect prefix are
|
||
|
// only the subkeys are checked.
|
||
|
func (f Fields) Check() error {
|
||
|
for k := range f {
|
||
|
if !strings.HasPrefix(k, DebugdLogcollectPrefix) {
|
||
|
continue
|
||
|
}
|
||
|
subkey := strings.TrimPrefix(k, DebugdLogcollectPrefix)
|
||
|
|
||
|
if _, ok := AllowedFields[subkey]; !ok {
|
||
|
return fmt.Errorf("invalid subkey %q for info key %q", subkey, fmt.Sprintf("%s%s", DebugdLogcollectPrefix, k))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|