Skip to content

Commit eb218d0

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 eb218d0

5 files changed

Lines changed: 176 additions & 43 deletions

File tree

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: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ import (
1717
"context"
1818
"encoding/base64"
1919
"fmt"
20+
corev1 "k8s.io/api/core/v1"
21+
k8serrors "k8s.io/apimachinery/pkg/api/errors"
22+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2023
"log"
2124
"os"
2225
"regexp"
@@ -576,6 +579,63 @@ func (c *GKE) NewK8sProvider(*kingpin.ParseContext) error {
576579
return nil
577580
}
578581

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

0 commit comments

Comments
 (0)