Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/install/installer/pkg/components/ws-manager-mk2/crd.go
2501 views
1
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2
// Licensed under the MIT License. See License-MIT.txt in the project root for license information.
3
4
package wsmanagermk2
5
6
import (
7
_ "embed"
8
"strings"
9
10
"github.com/gitpod-io/gitpod/installer/pkg/common"
11
"golang.org/x/xerrors"
12
apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
13
"k8s.io/apimachinery/pkg/runtime"
14
"k8s.io/apimachinery/pkg/runtime/serializer"
15
)
16
17
// todo(sje): establish how to pass in config with cw
18
func crd(ctx *common.RenderContext) ([]runtime.Object, error) {
19
scheme := runtime.NewScheme()
20
if err := apiextensions.AddToScheme(scheme); err != nil {
21
return nil, err
22
}
23
decode := serializer.NewCodecFactory(scheme).UniversalDeserializer().Decode
24
25
segs := strings.Split(crdYAML, "---\n")
26
res := make([]runtime.Object, 0, len(segs))
27
28
for _, doc := range segs {
29
obj, _, err := decode([]byte(doc), nil, nil)
30
if err != nil && strings.Contains(err.Error(), "Object 'Kind' is missing") {
31
continue
32
}
33
if err != nil {
34
return nil, xerrors.Errorf("cannot load workspace CRD: %w", err)
35
}
36
37
res = append(res, obj)
38
}
39
40
return res, nil
41
}
42
43
//go:embed crd.yaml
44
var crdYAML string
45
46