argo-cd

Форк
0
61 строка · 1.5 Кб
1
package v1alpha1
2

3
import (
4
	"encoding/json"
5
	"fmt"
6
	reflect "reflect"
7
	"strings"
8

9
	runtime "k8s.io/apimachinery/pkg/runtime"
10
	"sigs.k8s.io/yaml"
11
)
12

13
// Set the ValuesObject property to the json representation of the yaml contained in value
14
// Remove Values property if present
15
func (h *ApplicationSourceHelm) SetValuesString(value string) error {
16
	if value == "" {
17
		h.ValuesObject = nil
18
		h.Values = ""
19
	} else {
20
		data, err := yaml.YAMLToJSON([]byte(value))
21
		if err != nil {
22
			return fmt.Errorf("failed converting yaml to json: %v", err)
23
		}
24
		var v interface{}
25
		if err := json.Unmarshal(data, &v); err != nil {
26
			return fmt.Errorf("failed to unmarshal json: %v", err)
27
		}
28
		switch v.(type) {
29
		case string:
30
		case map[string]interface{}:
31
		default:
32
			return fmt.Errorf("invalid type %q", reflect.TypeOf(v))
33
		}
34
		h.ValuesObject = &runtime.RawExtension{Raw: data}
35
		h.Values = ""
36
	}
37
	return nil
38
}
39

40
func (h *ApplicationSourceHelm) ValuesYAML() []byte {
41
	if h.ValuesObject == nil || h.ValuesObject.Raw == nil {
42
		return []byte(h.Values)
43
	}
44
	b, err := yaml.JSONToYAML(h.ValuesObject.Raw)
45
	if err != nil {
46
		// This should be impossible, because rawValue isn't set directly.
47
		return []byte{}
48
	}
49
	return b
50
}
51

52
func (h *ApplicationSourceHelm) ValuesIsEmpty() bool {
53
	return len(h.ValuesYAML()) == 0
54
}
55

56
func (h *ApplicationSourceHelm) ValuesString() string {
57
	if h.ValuesObject == nil || h.ValuesObject.Raw == nil {
58
		return h.Values
59
	}
60
	return strings.TrimSuffix(string(h.ValuesYAML()), "\n")
61
}
62

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

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

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

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