user.go 1005 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package api
  2. import (
  3. "fmt"
  4. "github.com/porter-dev/porter/internal/kubernetes"
  5. "gopkg.in/yaml.v2"
  6. )
  7. // User is a user type
  8. type User struct {
  9. ID string
  10. // The clusters that this user has linked
  11. Clusters []*kubernetes.ClusterConfig
  12. // The raw kubeconfig uploaded by this user
  13. RawKubeConfig []byte
  14. }
  15. // GenerateUser creates a new user based on a unique ID and a kubeconfig
  16. func GenerateUser(id string, kubeconfig []byte) *User {
  17. conf := kubernetes.KubeConfig{}
  18. err := yaml.Unmarshal(kubeconfig, &conf)
  19. // TODO -- HANDLE ERROR
  20. if err != nil {
  21. fmt.Println("ERROR IN UNMARSHALING")
  22. }
  23. // generate the user's clusters
  24. clusters := conf.ToClusterConfigs()
  25. return &User{
  26. ID: id,
  27. Clusters: clusters,
  28. RawKubeConfig: kubeconfig,
  29. }
  30. }
  31. // printUser is a helper function to print a user's config without sensitive information
  32. func (u *User) printUser() {
  33. for _, cluster := range u.Clusters {
  34. fmt.Println(cluster.Name, cluster.Context, cluster.Server, cluster.User)
  35. }
  36. }