2019-03-06 13:01:17 +02:00
|
|
|
package webhooks
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
2019-04-30 18:54:08 -07:00
|
|
|
"strings"
|
2019-03-06 13:01:17 +02:00
|
|
|
|
|
|
|
"k8s.io/apimachinery/pkg/labels"
|
|
|
|
)
|
|
|
|
|
|
|
|
func parseMetadataFromObject(bytes []byte) map[string]interface{} {
|
|
|
|
var objectJSON map[string]interface{}
|
|
|
|
json.Unmarshal(bytes, &objectJSON)
|
|
|
|
|
|
|
|
return objectJSON["metadata"].(map[string]interface{})
|
|
|
|
}
|
|
|
|
|
2019-05-01 14:48:50 -07:00
|
|
|
func parseKindFromObject(bytes []byte) string {
|
|
|
|
var objectJSON map[string]interface{}
|
|
|
|
json.Unmarshal(bytes, &objectJSON)
|
|
|
|
|
|
|
|
return objectJSON["kind"].(string)
|
|
|
|
}
|
|
|
|
|
2019-03-06 13:01:17 +02:00
|
|
|
func parseLabelsFromMetadata(meta map[string]interface{}) labels.Set {
|
|
|
|
if interfaceMap, ok := meta["labels"].(map[string]interface{}); ok {
|
|
|
|
labelMap := make(labels.Set, len(interfaceMap))
|
|
|
|
|
|
|
|
for key, value := range interfaceMap {
|
|
|
|
labelMap[key] = value.(string)
|
|
|
|
}
|
|
|
|
return labelMap
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func parseNameFromMetadata(meta map[string]interface{}) string {
|
|
|
|
if name, ok := meta["name"].(string); ok {
|
|
|
|
return name
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
2019-03-21 18:09:58 +02:00
|
|
|
|
|
|
|
func parseNamespaceFromMetadata(meta map[string]interface{}) string {
|
|
|
|
if namespace, ok := meta["namespace"].(string); ok {
|
|
|
|
return namespace
|
|
|
|
}
|
|
|
|
return ""
|
|
|
|
}
|
2019-04-30 17:26:50 -07:00
|
|
|
|
2019-04-30 18:54:08 -07:00
|
|
|
// returns true if policyResourceName is a regexp
|
|
|
|
func parseRegexPolicyResourceName(policyResourceName string) (string, bool) {
|
|
|
|
regex := strings.Split(policyResourceName, "regex:")
|
|
|
|
if len(regex) == 1 {
|
|
|
|
return regex[0], false
|
|
|
|
}
|
|
|
|
return strings.Trim(regex[1], " "), true
|
2019-04-30 17:26:50 -07:00
|
|
|
}
|