cb6ec507e2
* add new ingressClass * add doc * lint * adjust behavior to look for a class with a specific controller * remove looking strange test ingressclass * return nil rather than en empty object * change documentation * apply @kevinpollet suggestion * change order of processIngress to be correct and adjust tests * review: clean. * review: clean. * Fix for review Co-authored-by: Manuel Zapf <manuel@containo.us> Co-authored-by: Fernandez Ludovic <ludovic@containo.us> Co-authored-by: Michael <michael.matur@gmail.com>
37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
package k8s
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
"strings"
|
|
|
|
"github.com/containous/traefik/v2/pkg/log"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"k8s.io/client-go/kubernetes/scheme"
|
|
)
|
|
|
|
// MustParseYaml parses a YAML to objects.
|
|
func MustParseYaml(content []byte) []runtime.Object {
|
|
acceptedK8sTypes := regexp.MustCompile(`^(Deployment|Endpoints|Service|Ingress|IngressRoute|IngressRouteTCP|IngressRouteUDP|Middleware|Secret|TLSOption|TLSStore|TraefikService|IngressClass)$`)
|
|
|
|
files := strings.Split(string(content), "---")
|
|
retVal := make([]runtime.Object, 0, len(files))
|
|
for _, file := range files {
|
|
if file == "\n" || file == "" {
|
|
continue
|
|
}
|
|
|
|
decode := scheme.Codecs.UniversalDeserializer().Decode
|
|
obj, groupVersionKind, err := decode([]byte(file), nil, nil)
|
|
if err != nil {
|
|
panic(fmt.Sprintf("Error while decoding YAML object. Err was: %s", err))
|
|
}
|
|
|
|
if !acceptedK8sTypes.MatchString(groupVersionKind.Kind) {
|
|
log.WithoutContext().Debugf("The custom-roles configMap contained K8s object types which are not supported! Skipping object with type: %s", groupVersionKind.Kind)
|
|
} else {
|
|
retVal = append(retVal, obj)
|
|
}
|
|
}
|
|
return retVal
|
|
}
|