blob: e66c33553729740b7b14164711bb85af3da93078 [file] [log] [blame]
Mohammed Naserc6e431b2024-03-15 01:21:44 -04001package openstack_helm
2
3import (
4 "gopkg.in/yaml.v2"
5 "helm.sh/helm/v3/pkg/chart/loader"
6 "helm.sh/helm/v3/pkg/chartutil"
7)
8
9type HelmValues struct {
10 Conf `yaml:"conf"`
11}
12
13type Conf struct {
14 Barbican *BarbicanConf `yaml:"barbican,omitempty"`
15 Cinder *CinderConf `yaml:"cinder,omitempty"`
16 Designate *DesignateConf `yaml:"designate,omitempty"`
17 Glance *GlanceConf `yaml:"glance,omitempty"`
18 Heat *HeatConf `yaml:"heat,omitempty"`
19 Keystone *KeystoneConf `yaml:"keystone,omitempty"`
20 Magnum *MagnumConf `yaml:"magnum,omitempty"`
21 Manila *ManilaConf `yaml:"manila,omitempty"`
22 Neutron *NeutronConf `yaml:"neutron,omitempty"`
23 Nova *NovaConf `yaml:"nova,omitempty"`
24 Octavia *OctaviaConf `yaml:"octavia,omitempty"`
25 Placement *PlacementConf `yaml:"placement,omitempty"`
26 Senlin *SenlinConf `yaml:"senlin,omitempty"`
27 Staffeln *StaffelnConf `yaml:"staffeln,omitempty"`
28}
29
30func (h *HelmValues) YAML() ([]byte, error) {
31 return yaml.Marshal(h)
32}
33
34func (h *HelmValues) NativeHelmValues() (chartutil.Values, error) {
35 yamlData, err := h.YAML()
36 if err != nil {
37 return nil, err
38 }
39
40 return chartutil.ReadValues(yamlData)
41}
42
43func FromYAML(yamlData []byte) (*HelmValues, error) {
44 var helmValues HelmValues
45 err := yaml.Unmarshal(yamlData, &helmValues)
46 if err != nil {
47 return nil, err
48 }
49
50 return &helmValues, nil
51}
52
53func FromYAMLString(yamlString string) (*HelmValues, error) {
54 return FromYAML([]byte(yamlString))
55}
56
57func CoalescedHelmValues(name string, values *HelmValues) (*HelmValues, error) {
58 chart, err := loader.Load(name)
59 if err != nil {
60 return nil, err
61 }
62
63 releaseValues, err := values.NativeHelmValues()
64 if err != nil {
65 return nil, err
66 }
67
68 mergedValues, err := chartutil.CoalesceValues(chart, releaseValues)
69 if err != nil {
70 return nil, err
71 }
72
73 yamlData, err := mergedValues.YAML()
74 if err != nil {
75 return nil, err
76 }
77
78 return FromYAMLString(yamlData)
79}