mirror of https://github.com/k3s-io/k3s
69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
|
/*
|
||
|
Copyright 2018 The Kubernetes Authors.
|
||
|
|
||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
you may not use this file except in compliance with the License.
|
||
|
You may obtain a copy of the License at
|
||
|
|
||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
Unless required by applicable law or agreed to in writing, software
|
||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
See the License for the specific language governing permissions and
|
||
|
limitations under the License.
|
||
|
*/
|
||
|
|
||
|
package policy
|
||
|
|
||
|
import (
|
||
|
"k8s.io/apimachinery/pkg/util/sets"
|
||
|
"k8s.io/apiserver/pkg/apis/audit"
|
||
|
)
|
||
|
|
||
|
// AllStages returns all possible stages
|
||
|
func AllStages() sets.String {
|
||
|
return sets.NewString(
|
||
|
audit.StageRequestReceived,
|
||
|
audit.StageResponseStarted,
|
||
|
audit.StageResponseComplete,
|
||
|
audit.StagePanic,
|
||
|
)
|
||
|
}
|
||
|
|
||
|
// AllLevels returns all possible levels
|
||
|
func AllLevels() sets.String {
|
||
|
return sets.NewString(
|
||
|
string(audit.LevelNone),
|
||
|
string(audit.LevelMetadata),
|
||
|
string(audit.LevelRequest),
|
||
|
string(audit.LevelRequestResponse),
|
||
|
)
|
||
|
}
|
||
|
|
||
|
// InvertStages subtracts the given array of stages from all stages
|
||
|
func InvertStages(stages []audit.Stage) []audit.Stage {
|
||
|
s := ConvertStagesToStrings(stages)
|
||
|
a := AllStages()
|
||
|
a.Delete(s...)
|
||
|
return ConvertStringSetToStages(a)
|
||
|
}
|
||
|
|
||
|
// ConvertStagesToStrings converts an array of stages to a string array
|
||
|
func ConvertStagesToStrings(stages []audit.Stage) []string {
|
||
|
s := make([]string, len(stages))
|
||
|
for i, stage := range stages {
|
||
|
s[i] = string(stage)
|
||
|
}
|
||
|
return s
|
||
|
}
|
||
|
|
||
|
// ConvertStringSetToStages converts a string set to an array of stages
|
||
|
func ConvertStringSetToStages(set sets.String) []audit.Stage {
|
||
|
stages := make([]audit.Stage, len(set))
|
||
|
for i, stage := range set.List() {
|
||
|
stages[i] = audit.Stage(stage)
|
||
|
}
|
||
|
return stages
|
||
|
}
|