Unverified Commit dd4afa6a authored by Martin Hickey's avatar Martin Hickey Committed by GitHub

Fail to load charts that are not v1 apiVersion (#6180)

Signed-off-by: 's avatarMartin Hickey <martin.hickey@ie.ibm.com>
parent d7f32def
...@@ -171,6 +171,10 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { ...@@ -171,6 +171,10 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) {
return c, err return c, err
} }
c.Metadata = m c.Metadata = m
var apiVersion = c.Metadata.ApiVersion
if apiVersion != "" && apiVersion != ApiVersionV1 {
return c, fmt.Errorf("apiVersion '%s' is not valid. The value must be \"v1\"", apiVersion)
}
} else if f.Name == "values.toml" { } else if f.Name == "values.toml" {
return c, errors.New("values.toml is illegal as of 2.0.0-alpha.2") return c, errors.New("values.toml is illegal as of 2.0.0-alpha.2")
} else if f.Name == "values.yaml" { } else if f.Name == "values.yaml" {
......
...@@ -23,6 +23,7 @@ import ( ...@@ -23,6 +23,7 @@ import (
"os" "os"
"path" "path"
"path/filepath" "path/filepath"
"strings"
"testing" "testing"
"time" "time"
...@@ -39,6 +40,17 @@ func TestLoadDir(t *testing.T) { ...@@ -39,6 +40,17 @@ func TestLoadDir(t *testing.T) {
verifyRequirements(t, c) verifyRequirements(t, c)
} }
func TestLoadNonV1Chart(t *testing.T) {
_, err := Load("testdata/frobnitz.v2")
if err != nil {
if strings.Compare(err.Error(), "apiVersion 'v2' is not valid. The value must be \"v1\"") != 0 {
t.Errorf("Unexpected message: %s", err)
}
return
}
t.Fatalf("chart with v2 apiVersion should not load")
}
func TestLoadFile(t *testing.T) { func TestLoadFile(t *testing.T) {
c, err := Load("testdata/frobnitz-1.2.3.tgz") c, err := Load("testdata/frobnitz-1.2.3.tgz")
if err != nil { if err != nil {
......
apiVersion: v2
name: frobnitz
description: This is a frobnitz as a v2 chart
version: "1.2.3"
keywords:
- frobnitz
- sprocket
- dodad
maintainers:
- name: The Helm Team
email: helm@example.com
- name: Someone Else
email: nobody@example.com
sources:
- https://example.com/foo/bar
home: http://example.com
icon: https://example.com/64x64.png
annotations:
extrakey: extravalue
anotherkey: anothervalue
This is an install document. The client may display this.
# Frobnitz
This is an example chart.
## Usage
This is an example. It has no usage.
## Development
For developer info, see the top-level repository.
This should be ignored by the loader, but may be included in a chart.
name: alpine
description: Deploy a basic Alpine Linux pod
version: 0.1.0
home: https://k8s.io/helm
This example was generated using the command `helm create alpine`.
The `templates/` directory contains a very simple pod resource with a
couple of parameters.
The `values.toml` file contains the default values for the
`alpine-pod.yaml` template.
You can install this example using `helm install docs/examples/alpine`.
name: mast1
description: A Helm chart for Kubernetes
version: 0.1.0
home: ""
# Default values for mast1.
# This is a YAML-formatted file.
# Declare name/value pairs to be passed into your templates.
# name = "value"
apiVersion: v1
kind: Pod
metadata:
name: {{.Release.Name}}-{{.Chart.Name}}
labels:
app.kubernetes.io/managed-by: {{.Release.Service}}
chartName: {{.Chart.Name}}
chartVersion: {{.Chart.Version | quote}}
annotations:
"helm.sh/created": "{{.Release.Time.Seconds}}"
spec:
restartPolicy: {{default "Never" .restart_policy}}
containers:
- name: waiter
image: "alpine:3.3"
command: ["/bin/sleep","9000"]
This is a placeholder for documentation.
<?xml version="1.0"?>
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0" width="256" height="256" id="test">
<desc>Example icon</desc>
<rect id="first" x="2" y="2" width="40" height="60" fill="navy"/>
<rect id="second" x="15" y="4" width="40" height="60" fill="red"/>
</svg>
dependencies:
- name: alpine
version: "0.1.0"
repository: https://example.com/charts
- name: mariner
version: "4.3.2"
repository: https://example.com/charts
digest: invalid
dependencies:
- name: alpine
version: "0.1.0"
repository: https://example.com/charts
- name: mariner
version: "4.3.2"
repository: https://example.com/charts
# A values file contains configuration.
name: "Some Name"
section:
name: "Name in a section"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment