Skip to content

Commit

Permalink
Renamed API version + check it on read.
Browse files Browse the repository at this point in the history
  • Loading branch information
mgoltzsche committed Aug 5, 2019
1 parent de2cf16 commit 73043d3
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 49 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ A _plugin descriptor_ specifying the helm repository, chart, version and values
that should be used in a kubernetes-style resource can be referenced in the
`generators` section of a `kustomization.yaml` and looks as follows:
```
apiVersion: helm.mgoltzsche.github.com/v1
kind: ChartInflator
apiVersion: helm.kustomize.mgoltzsche.github.com/v1
kind: ChartRenderer
metadata:
name: <NAME>
namespace: <NAMESPACE>
Expand Down
10 changes: 5 additions & 5 deletions example/jenkins/jenkins-chart.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
apiVersion: helm.mgoltzsche.github.com/v1
kind: ChartInflator
apiVersion: helm.kustomize.mgoltzsche.github.com/v1
kind: ChartRenderer
metadata:
name: jenkins-chart-inflator
name: myjenkins
namespace: jenkins
repository: https://kubernetes-charts.storage.googleapis.com
chart: jenkins
version: 0.32.4
loadDependencies: true
#loadDependencies: true
valueFiles:
- jenkins-values.yaml
- values.yaml
File renamed without changes.
6 changes: 3 additions & 3 deletions example/rook-ceph/operator/rook-ceph-chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: helm.mgoltzsche.github.com/v1
kind: ChartInflator
apiVersion: helm.kustomize.mgoltzsche.github.com/v1
kind: ChartRenderer
metadata:
name: ceph-chart-inflator
name: rook-ceph
namespace: rook-ceph-system
repository: https://charts.rook.io/stable
chart: rook-ceph
Expand Down
10 changes: 5 additions & 5 deletions pkg/helm/chartwithextvalues.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
apiVersion: helm.mgoltzsche.github.com/v1
kind: ChartInflator
apiVersion: helm.kustomize.mgoltzsche.github.com/v1
kind: ChartRenderer
metadata:
name: jenkins-chart-inflator
name: myjenkins
namespace: jenkins
repository: https://kubernetes-charts.storage.googleapis.com
chart: jenkins
version: 0.32.4
loadDependencies: true
#loadDependencies: true
valueFiles:
- ../../../example/jenkins/jenkins-values.yaml
- ../../../example/jenkins/values.yaml
71 changes: 39 additions & 32 deletions pkg/helm/helm.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,11 @@ import (
"k8s.io/helm/pkg/repo"
)

const stableRepository = "stable"
const (
stableRepository = "stable"
generatorAPIVersion = "helm.kustomize.mgoltzsche.github.com/v1"
generatorKind = "ChartRenderer"
)

var (
whitespaceRegex = regexp.MustCompile(`^\s*$`)
Expand Down Expand Up @@ -64,14 +68,15 @@ type LoadChartConfig struct {
Repository string `yaml:"repository"`
Chart string `yaml:"chart"`
Version string `yaml:"version"`
Username string `yaml:"user,omitempty"`
Password string `yaml:"password,omitempty"`
DepUp bool `yaml:"loadDependencies,omitempty"`
Verify bool `yaml:"verify,omitempty"`
Keyring string `yaml:"keyring,omitempty"`
CertFile string `yaml:"certFile,omitempty"`
KeyFile string `yaml:"keyFile,omitempty"`
CaFile string `yaml:"caFile,omitempty"`

// TODO: load from some local configuration
Username string `yaml:"user,omitempty"`
Password string `yaml:"password,omitempty"`
Verify bool `yaml:"verify,omitempty"`
Keyring string `yaml:"keyring,omitempty"`
CertFile string `yaml:"certFile,omitempty"`
KeyFile string `yaml:"keyFile,omitempty"`
CaFile string `yaml:"caFile,omitempty"`
}

// RenderConfig defines the configuration to render a chart
Expand Down Expand Up @@ -101,13 +106,19 @@ func ReadGeneratorConfig(reader io.Reader) (cfg *GeneratorConfig, err error) {
if cfg.Chart == "" {
err = errors.New("chart not specified")
}
if cfg.APIVersion != generatorAPIVersion {
err = errors.Errorf("expected apiVersion %s but was %s", generatorAPIVersion, cfg.APIVersion)
}
if cfg.Kind != generatorKind {
err = errors.Errorf("expected kind %s but was %s", generatorKind, cfg.Kind)
}
}
if cfg.Namespace == "" {
cfg.Namespace = cfg.Metadata.Namespace
} else if cfg.Metadata.Namespace != "" && err == nil {
err = errors.New("both metadata.namespace and namespace defined")
}
return cfg, errors.Wrap(err, "read chart inflator config")
return cfg, errors.Wrap(err, "read chart renderer config")
}

// Render manifest from helm chart configuration (shorthand)
Expand Down Expand Up @@ -141,10 +152,10 @@ func NewHelm(home string, out io.Writer) *Helm {
// Initialize initialize the helm home directory.
// Derived from https://github.com/helm/helm/blob/v2.14.3/cmd/helm/installer/init.go
func (h *Helm) Initialize() (err error) {
// TODO:
/*if _, e := os.Stat(h.settings.Home.String()); e == nil {
// TODO: create temporary helm home?
if _, e := os.Stat(h.settings.Home.String()); e == nil {
return
}*/
}

log.Printf("Initializing helm home at %s\n", h.settings.Home)

Expand Down Expand Up @@ -228,25 +239,21 @@ func (h *Helm) LoadChart(ref *LoadChartConfig) (c *chart.Chart, err error) {
req, e := chartutil.LoadRequirements(c)
if e == nil {
if err = renderutil.CheckDependencies(c, req); err != nil {
if ref.DepUp {
man := &downloader.Manager{
Out: h.out,
ChartPath: chartPath,
HelmHome: h.settings.Home,
Keyring: ref.Keyring,
SkipUpdate: false,
Getters: getter.All(h.settings),
}
if err = man.Update(); err != nil {
return
}

// Update all dependencies which are present in /charts.
c, err = chartutil.Load(chartPath)
if err != nil {
return
}
} else {
man := &downloader.Manager{
Out: h.out,
ChartPath: chartPath,
HelmHome: h.settings.Home,
Keyring: ref.Keyring,
SkipUpdate: true,
Getters: getter.All(h.settings),
}
if err = man.Update(); err != nil {
return
}

// Update all dependencies which are present in /charts.
c, err = chartutil.Load(chartPath)
if err != nil {
return
}
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/helm/helm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func TestRender(t *testing.T) {
b := rendered.Bytes()
l, err := readYaml(b)
require.NoError(t, err, "rendered yaml:\n%s", b)
require.True(t, len(l) > 0, "rendered yaml is empty")
require.True(t, len(l) > 0, "%s: rendered yaml is empty", file)
require.Contains(t, rendered.String(), "- host: jenkins.example.org\n")
hasJenkinsNamespace := false
for _, o := range l {
Expand All @@ -42,7 +42,7 @@ func TestRender(t *testing.T) {
break
}
}
require.True(t, hasJenkinsNamespace, "should have 'jenkins' namespace")
require.True(t, hasJenkinsNamespace, "%s: should have 'jenkins' namespace", file)
}
}

Expand Down

0 comments on commit 73043d3

Please sign in to comment.