Skip to content

Commit cf8bb3f

Browse files
Updated Testinfra binary to include one more command , so that block-sync can use it for copying files from default to pr namespace.
Signed-off-by: Kushal Shukla <kushalshukla110@gmail.com>
1 parent 51b2051 commit cf8bb3f

File tree

5 files changed

+177
-43
lines changed

5 files changed

+177
-43
lines changed

infra/infra.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ func main() {
4848
PlaceHolder("service-account.json").
4949
Short('a').
5050
StringVar(&g.Auth)
51+
k8sGKE.Command("copy", "Creating prombench-${PR_NUMBER} namespace and copy block-sync config and bucket-secret from default to prombench-${PR_NUMBER} namespace.").
52+
Action(g.NewK8sProvider).
53+
Action(g.CreateNamespace)
5154

5255
k8sGKE.Command("info", "gke info -v hashStable:COMMIT1 -v hashTesting:COMMIT2").
5356
Action(g.GetDeploymentVars)
@@ -88,6 +91,10 @@ func main() {
8891
k8sKIND := app.Command("kind", `Kubernetes In Docker (KIND) provider - https://kind.sigs.k8s.io/docs/user/quick-start/`).
8992
Action(k.SetupDeploymentResources)
9093

94+
k8sKIND.Command("copy", "Creating prombench-${PR_NUMBER} namespace and copy block-sync config and bucket-secret from default to prombench-${PR_NUMBER} namespace.").
95+
Action(k.NewK8sProvider).
96+
Action(k.CreateNamespace)
97+
9198
k8sKIND.Command("info", "kind info -v hashStable:COMMIT1 -v hashTesting:COMMIT2").
9299
Action(k.GetDeploymentVars)
93100

pkg/provider/gke/gke.go

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ import (
2222
"regexp"
2323
"strings"
2424

25+
corev1 "k8s.io/api/core/v1"
26+
k8serrors "k8s.io/apimachinery/pkg/api/errors"
27+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28+
2529
gke "cloud.google.com/go/container/apiv1"
2630
"cloud.google.com/go/container/apiv1/containerpb"
2731
"google.golang.org/api/option"
@@ -576,6 +580,63 @@ func (c *GKE) NewK8sProvider(*kingpin.ParseContext) error {
576580
return nil
577581
}
578582

583+
func (c *GKE) CreateNamespace(*kingpin.ParseContext) error {
584+
sourceNS := "default"
585+
targetNS := "prombench-" + c.DeploymentVars["PR_NUMBER"]
586+
configMapName := "blocksync-config"
587+
secretName := "bucket-secret"
588+
589+
// check if namespace exists
590+
_, err := c.k8sProvider.Clt.CoreV1().Namespaces().Get(context.TODO(), targetNS, metav1.GetOptions{})
591+
if err != nil {
592+
if k8serrors.IsNotFound(err) {
593+
ns := &corev1.Namespace{
594+
ObjectMeta: metav1.ObjectMeta{
595+
Name: targetNS,
596+
},
597+
}
598+
_, err = c.k8sProvider.Clt.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{})
599+
if err != nil {
600+
return fmt.Errorf("error creating namespace: %w", err)
601+
}
602+
} else {
603+
return fmt.Errorf("error checking namespace: %w", err)
604+
}
605+
}
606+
607+
// copy ConfigMap
608+
_, err = c.k8sProvider.Clt.CoreV1().ConfigMaps(targetNS).Get(context.TODO(), configMapName, metav1.GetOptions{})
609+
if k8serrors.IsNotFound(err) {
610+
cm, err := c.k8sProvider.Clt.CoreV1().ConfigMaps(sourceNS).Get(context.TODO(), configMapName, metav1.GetOptions{})
611+
if err != nil {
612+
return fmt.Errorf("error getting configmap: %w", err)
613+
}
614+
cm.ResourceVersion = ""
615+
cm.Namespace = targetNS
616+
_, err = c.k8sProvider.Clt.CoreV1().ConfigMaps(targetNS).Create(context.TODO(), cm, metav1.CreateOptions{})
617+
if err != nil {
618+
return fmt.Errorf("error creating configmap: %w", err)
619+
}
620+
}
621+
622+
// copy Secret
623+
_, err = c.k8sProvider.Clt.CoreV1().Secrets(targetNS).Get(context.TODO(), secretName, metav1.GetOptions{})
624+
if k8serrors.IsNotFound(err) {
625+
secret, err := c.k8sProvider.Clt.CoreV1().Secrets(sourceNS).Get(context.TODO(), secretName, metav1.GetOptions{})
626+
if err != nil {
627+
return fmt.Errorf("error getting secret: %w", err)
628+
}
629+
secret.ResourceVersion = ""
630+
secret.Namespace = targetNS
631+
_, err = c.k8sProvider.Clt.CoreV1().Secrets(targetNS).Create(context.TODO(), secret, metav1.CreateOptions{})
632+
if err != nil {
633+
return fmt.Errorf("error creating secret in target NS: %w", err)
634+
}
635+
}
636+
637+
return nil
638+
}
639+
579640
// ResourceApply calls k8s.ResourceApply to apply the k8s objects in the manifest files.
580641
func (c *GKE) ResourceApply(*kingpin.ParseContext) error {
581642
if err := c.k8sProvider.ResourceApply(c.k8sResources); err != nil {

0 commit comments

Comments
 (0)