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>
128 lines
3.8 KiB
Go
128 lines
3.8 KiB
Go
package utils
|
|
|
|
import (
|
|
"context"
|
|
"net/url"
|
|
"strings"
|
|
|
|
v1 "k8s.io/api/core/v1"
|
|
"k8s.io/apimachinery/pkg/api/errors"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/client-go/kubernetes"
|
|
|
|
"kubevirt.io/containerized-data-importer/pkg/common"
|
|
"kubevirt.io/containerized-data-importer/pkg/util"
|
|
)
|
|
|
|
// CopyRegistryCertConfigMap copies the test registry configmap, it assumes the Registry host is in the CDI namespace
|
|
func CopyRegistryCertConfigMap(client kubernetes.Interface, destNamespace, cdiNamespace string) (string, error) {
|
|
n, err := CopyConfigMap(client, cdiNamespace, RegistryCertConfigMap, destNamespace, "")
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return n, nil
|
|
}
|
|
|
|
// CopyRegistryCertConfigMapDestName copies the test registry configmap, it assumes the Registry host is in the CDI namespace
|
|
func CopyRegistryCertConfigMapDestName(client kubernetes.Interface, destNamespace, cdiNamespace, destName string) (string, error) {
|
|
n, err := CopyConfigMap(client, cdiNamespace, RegistryCertConfigMap, destNamespace, destName)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return n, nil
|
|
}
|
|
|
|
// CopyFileHostCertConfigMap copies the test file host configmap, it assumes the File host is in the CDI namespace
|
|
func CopyFileHostCertConfigMap(client kubernetes.Interface, destNamespace, cdiNamespace string) (string, error) {
|
|
n, err := CopyConfigMap(client, cdiNamespace, FileHostCertConfigMap, destNamespace, "")
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return n, nil
|
|
}
|
|
|
|
// CopyImageIOCertConfigMap copies the test imageio configmap, it assumes the imageio server is in the CDI namespace
|
|
func CopyImageIOCertConfigMap(client kubernetes.Interface, destNamespace, cdiNamespace string) (string, error) {
|
|
n, err := CopyConfigMap(client, cdiNamespace, ImageIOCertConfigMap, destNamespace, "")
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return n, nil
|
|
}
|
|
|
|
// CopyConfigMap copies a ConfigMap
|
|
func CopyConfigMap(client kubernetes.Interface, srcNamespace, srcName, destNamespace, destName string) (string, error) {
|
|
src, err := client.CoreV1().ConfigMaps(srcNamespace).Get(context.TODO(), srcName, metav1.GetOptions{})
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
if destName == "" {
|
|
destName = srcName + "-" + strings.ToLower(util.RandAlphaNum(8))
|
|
}
|
|
|
|
dst := &v1.ConfigMap{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: destName,
|
|
},
|
|
Data: src.Data,
|
|
}
|
|
|
|
err = client.CoreV1().ConfigMaps(destNamespace).Delete(context.TODO(), destName, metav1.DeleteOptions{})
|
|
if err != nil && !errors.IsNotFound(err) {
|
|
return "", err
|
|
}
|
|
|
|
_, err = client.CoreV1().ConfigMaps(destNamespace).Create(context.TODO(), dst, metav1.CreateOptions{})
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return destName, nil
|
|
}
|
|
|
|
const insecureRegistryKey = "test-registry"
|
|
|
|
// SetInsecureRegistry sets the configmap entry to mark the registry as okay to be insecure
|
|
func SetInsecureRegistry(client kubernetes.Interface, cdiNamespace, registryURL string) error {
|
|
cm, err := client.CoreV1().ConfigMaps(cdiNamespace).Get(context.TODO(), common.InsecureRegistryConfigMap, metav1.GetOptions{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if cm.Data == nil {
|
|
cm.Data = map[string]string{}
|
|
}
|
|
|
|
parsedURL, err := url.Parse(registryURL)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
cm.Data[insecureRegistryKey] = parsedURL.Host
|
|
|
|
_, err = client.CoreV1().ConfigMaps(cdiNamespace).Update(context.TODO(), cm, metav1.UpdateOptions{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// ClearInsecureRegistry undoes whatever SetInsecureRegistry does
|
|
func ClearInsecureRegistry(client kubernetes.Interface, cdiNamespace string) error {
|
|
cm, err := client.CoreV1().ConfigMaps(cdiNamespace).Get(context.TODO(), common.InsecureRegistryConfigMap, metav1.GetOptions{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
delete(cm.Data, insecureRegistryKey)
|
|
|
|
_, err = client.CoreV1().ConfigMaps(cdiNamespace).Update(context.TODO(), cm, metav1.UpdateOptions{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|