kuma

Форк
0
/
dataplane.go 
59 строк · 1.3 Кб
1
package cmd
2

3
import (
4
	"fmt"
5
	"io"
6
	"os"
7

8
	"github.com/pkg/errors"
9
	"github.com/spf13/cobra"
10

11
	kuma_dp "github.com/kumahq/kuma/pkg/config/app/kuma-dp"
12
	core_mesh "github.com/kumahq/kuma/pkg/core/resources/apis/mesh"
13
	"github.com/kumahq/kuma/pkg/core/resources/model"
14
	"github.com/kumahq/kuma/pkg/core/resources/model/rest"
15
	"github.com/kumahq/kuma/pkg/util/template"
16
)
17

18
func readResource(cmd *cobra.Command, r *kuma_dp.DataplaneRuntime) (model.Resource, error) {
19
	var b []byte
20
	var err error
21

22
	// Load from file first.
23
	switch r.ResourcePath {
24
	case "":
25
		if r.Resource != "" {
26
			b = []byte(r.Resource)
27
		}
28
	case "-":
29
		if b, err = io.ReadAll(cmd.InOrStdin()); err != nil {
30
			return nil, err
31
		}
32
	default:
33
		if b, err = os.ReadFile(r.ResourcePath); err != nil {
34
			return nil, errors.Wrap(err, "error while reading provided file")
35
		}
36
	}
37

38
	if len(b) == 0 {
39
		return nil, nil
40
	}
41

42
	b = template.Render(string(b), r.ResourceVars)
43
	runLog.Info("rendered resource", "resource", string(b))
44

45
	res, err := rest.YAML.UnmarshalCore(b)
46
	if err != nil {
47
		return nil, err
48
	}
49

50
	if err, msg := core_mesh.ValidateMetaBackwardsCompatible(res.GetMeta(), res.Descriptor().Scope); err.HasViolations() {
51
		return nil, &err
52
	} else if msg != "" {
53
		if _, printErr := fmt.Fprintln(cmd.ErrOrStderr(), msg); printErr != nil {
54
			return nil, printErr
55
		}
56
	}
57

58
	return res, nil
59
}
60

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.