mirror of
https://github.com/kubevirt/containerized-data-importer.git
synced 2025-06-03 06:30:22 +00:00

* update k8s deps to 1.18.6 and controller runtime to 0.6.2 Signed-off-by: Michael Henriksen <mhenriks@redhat.com> * remove building code generators from docker image. This way the k8s ligray version only has to be updated in go.mod Do more stuff in the bazel container. Faster and better interop Fix unit tests Signed-off-by: Michael Henriksen <mhenriks@redhat.com> * make format Signed-off-by: Michael Henriksen <mhenriks@redhat.com> * remove unnecessary rsync Signed-off-by: Michael Henriksen <mhenriks@redhat.com> * redo code generator dep management Signed-off-by: Michael Henriksen <mhenriks@redhat.com> * builder uses go modules Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
66 lines
1.9 KiB
Go
66 lines
1.9 KiB
Go
package utils
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/pkg/errors"
|
|
v1 "k8s.io/api/core/v1"
|
|
apierrs "k8s.io/apimachinery/pkg/api/errors"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/util/wait"
|
|
"k8s.io/client-go/kubernetes"
|
|
"k8s.io/klog"
|
|
)
|
|
|
|
const (
|
|
secretPollPeriod = defaultPollPeriod
|
|
secretPollInterval = defaultPollInterval
|
|
)
|
|
|
|
// NewSecretDefinition provides a function to initialize a Secret data type with the provided options
|
|
func NewSecretDefinition(labels, stringData map[string]string, data map[string][]byte, ns, prefix string) *v1.Secret {
|
|
return &v1.Secret{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
GenerateName: prefix,
|
|
Namespace: ns,
|
|
Labels: labels,
|
|
},
|
|
StringData: stringData,
|
|
Data: data,
|
|
}
|
|
}
|
|
|
|
// CreateSecretFromDefinition creates and returns a pointer ot a v1.Secret using a provided v1.Secret
|
|
func CreateSecretFromDefinition(c *kubernetes.Clientset, secret *v1.Secret) (*v1.Secret, error) {
|
|
err := wait.PollImmediate(secretPollInterval, secretPollPeriod, func() (done bool, err error) {
|
|
secret, err = c.CoreV1().Secrets(secret.Namespace).Create(context.TODO(), secret, metav1.CreateOptions{})
|
|
// success
|
|
if err == nil {
|
|
return true, nil
|
|
}
|
|
// fail if secret exists.
|
|
if apierrs.IsAlreadyExists(err) {
|
|
return true, err
|
|
}
|
|
// Log non-fatal errors
|
|
klog.Error(errors.Wrapf(err, "Encountered create error for secret \"%s/%s\"", secret.Namespace, secret.Name))
|
|
return false, nil
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return secret, nil
|
|
}
|
|
|
|
//DeleteSecret ...
|
|
func DeleteSecret(clientSet *kubernetes.Clientset, namespace string, secret v1.Secret) error {
|
|
e := wait.PollImmediate(secretPollInterval, secretPollPeriod, func() (bool, error) {
|
|
err := clientSet.CoreV1().Secrets(namespace).Delete(context.TODO(), secret.GetName(), metav1.DeleteOptions{})
|
|
if err == nil || apierrs.IsNotFound(err) {
|
|
return true, nil
|
|
}
|
|
return false, nil //keep polling
|
|
})
|
|
return e
|
|
}
|