mirror of
https://github.com/yannh/kubeconform.git
synced 2026-02-12 14:39:21 +00:00
43 lines
1 KiB
Go
43 lines
1 KiB
Go
package registry
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
)
|
|
|
|
type LocalRegistry struct {
|
|
pathTemplate string
|
|
strict bool
|
|
}
|
|
|
|
// NewLocalSchemas creates a new "registry", that will serve schemas from files, given a list of schema filenames
|
|
func newLocalRegistry(pathTemplate string, strict bool) (*LocalRegistry, error) {
|
|
return &LocalRegistry{
|
|
pathTemplate,
|
|
strict,
|
|
}, nil
|
|
}
|
|
|
|
// DownloadSchema retrieves the schema from a file for the resource
|
|
func (r LocalRegistry) DownloadSchema(resourceKind, resourceAPIVersion, k8sVersion string) ([]byte, error) {
|
|
schemaFile, err := schemaPath(r.pathTemplate, resourceKind, resourceAPIVersion, k8sVersion, r.strict)
|
|
if err != nil {
|
|
return []byte{}, nil
|
|
}
|
|
f, err := os.Open(schemaFile)
|
|
if err != nil {
|
|
if os.IsNotExist(err) {
|
|
return nil, newNotFoundError(fmt.Errorf("no schema found"))
|
|
}
|
|
return nil, fmt.Errorf("failed to open schema %s", schemaFile)
|
|
}
|
|
|
|
defer f.Close()
|
|
content, err := ioutil.ReadAll(f)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return content, nil
|
|
}
|