-
Notifications
You must be signed in to change notification settings - Fork 53
/
certmanager.go
39 lines (35 loc) · 1.09 KB
/
certmanager.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package test
import (
"io"
"net/http"
"strings"
"github.com/rancher/opni/pkg/util"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
)
var downloadAddr = "https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.crds.yaml"
func DownloadCertManagerCRDs(scheme *runtime.Scheme) []*apiextensionsv1.CustomResourceDefinition {
resp, err := http.Get(downloadAddr)
if err != nil {
panic(err)
}
defer resp.Body.Close()
yamlData := util.Must(io.ReadAll(resp.Body))
documents := strings.Split(string(yamlData), "\n---\n")
var crds []*apiextensionsv1.CustomResourceDefinition
uds := serializer.NewCodecFactory(scheme).UniversalDeserializer()
for _, document := range documents {
crd := &apiextensionsv1.CustomResourceDefinition{}
_, _, err := uds.Decode([]byte(document), nil, crd)
if err != nil {
panic(err)
}
if crd.TypeMeta == (metav1.TypeMeta{}) {
continue
}
crds = append(crds, crd)
}
return crds
}