Configmaps/secrets in function exist check (#1214)

This commit is contained in:
Vishal
2019-07-01 18:09:07 +08:00
committed by Ta-Ching Chen
parent 5ec841cf2e
commit 36e544b537
+26 -3
View File
@@ -34,6 +34,7 @@ import (
"github.com/pkg/errors"
uuid "github.com/satori/go.uuid"
"github.com/urfave/cli"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/fission.io/v1"
@@ -233,7 +234,7 @@ func specValidate(c *cli.Context) error {
util.CheckErr(err, "read specs")
// this does the rest of the checks, like dangling refs
err = fr.validate()
err = fr.validate(c)
if err != nil {
fmt.Printf("Error validating specs: %v", err)
}
@@ -241,7 +242,7 @@ func specValidate(c *cli.Context) error {
return nil
}
func (fr *FissionResources) validate() error {
func (fr *FissionResources) validate(c *cli.Context) error {
var result *multierror.Error
// check references: both dangling refs + garbage
@@ -343,6 +344,28 @@ func (fr *FissionResources) validate() error {
packages[mapKey(pkgMeta)] = true
}
client := util.GetApiClient(c.GlobalString("server"))
for _, cm := range f.Spec.ConfigMaps {
_, err := client.ConfigMapGet(&metav1.ObjectMeta{
Name: cm.Name,
Namespace: cm.Namespace,
})
if k8serrors.IsNotFound(err) {
log.Warn(fmt.Sprintf("Configmap %s is referred in the spec but not present in the cluster", cm.Name))
}
}
for _, s := range f.Spec.Secrets {
_, err := client.SecretGet(&metav1.ObjectMeta{
Name: s.Name,
Namespace: s.Namespace,
})
if k8serrors.IsNotFound(err) {
log.Warn(fmt.Sprintf("Secret %s is referred in the spec but not present in the cluster", s.Name))
}
}
result = multierror.Append(result, f.Validate())
}
@@ -704,7 +727,7 @@ func specApply(c *cli.Context) error {
util.CheckErr(err, "read specs")
// validate
err = fr.validate()
err = fr.validate(c)
util.CheckErr(err, "validate specs")
// make changes to the cluster based on the specs