diff --git a/pkg/client.go b/pkg/client.go index feb75cb..21e59f9 100644 --- a/pkg/client.go +++ b/pkg/client.go @@ -2,6 +2,9 @@ package v1 import ( "encoding/base64" + "errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "regexp" "strconv" argoprojv1alpha1 "github.com/argoproj/argo/pkg/client/clientset/versioned/typed/workflow/v1alpha1" @@ -143,3 +146,27 @@ func (c *Client) GetS3Client(namespace string, config map[string]string) (s3Clie return } + +func GetBearerToken(namespace string) (string, error) { + kubeConfig := NewConfig() + client, err := NewClient(kubeConfig, nil) + if err != nil { + log.Fatalf("Failed to connect to Kubernetes cluster: %v", err) + } + + secrets, err := client.CoreV1().Secrets(namespace).List(v1.ListOptions{}) + if err != nil { + log.WithFields(log.Fields{ + "Namespace": namespace, + "Error": err.Error(), + }).Error("Failed to get default service account token.") + return "", err + } + re := regexp.MustCompile(`^default-token-`) + for _, secret := range secrets.Items { + if re.Find([]byte(secret.ObjectMeta.Name)) != nil { + return string(secret.Data["token"]), nil + } + } + return "", errors.New("could not find a token") +}