Refactor kube compatibility check

Signed-off-by: Christopher Tineo <christophertineo02@gmail.com>
pull/31492/head
Christopher Tineo 11 months ago
parent ff1c144ffb
commit d0e0de4141

@ -228,10 +228,8 @@ func (cfg *Configuration) renderResources(ch *chart.Chart, values common.Values,
return hs, b, "", err return hs, b, "", err
} }
if ch.Metadata.KubeVersion != "" { if err := ensureKubeCompatibility(ch, caps); err != nil {
if !chartutil.IsCompatibleRange(ch.Metadata.KubeVersion, caps.KubeVersion.String()) { return hs, b, "", err
return hs, b, "", fmt.Errorf("chart requires kubeVersion: %s which is incompatible with Kubernetes %s", ch.Metadata.KubeVersion, caps.KubeVersion.String())
}
} }
var files map[string]string var files map[string]string
@ -372,6 +370,29 @@ func (cfg *Configuration) renderResources(ch *chart.Chart, values common.Values,
return hs, b, notes, nil return hs, b, notes, nil
} }
// ensureKubeCompatibility verifies the chart's kubeVersion requirement.
func ensureKubeCompatibility(ch *chart.Chart, caps *common.Capabilities) error {
if ch == nil || caps == nil {
return nil
}
meta := ch.Metadata
if meta == nil {
return nil
}
kubeReq := meta.KubeVersion
if kubeReq == "" {
return nil
}
kubeVer := caps.KubeVersion.String()
if chartutil.IsCompatibleRange(kubeReq, kubeVer) {
return nil
}
return fmt.Errorf("chart requires kubeVersion: %s which is incompatible with Kubernetes %s", kubeReq, kubeVer)
}
// RESTClientGetter gets the rest client // RESTClientGetter gets the rest client
type RESTClientGetter interface { type RESTClientGetter interface {
ToRESTConfig() (*rest.Config, error) ToRESTConfig() (*rest.Config, error)

Loading…
Cancel
Save