2022-09-21 04:49:42 +00:00
|
|
|
package cli
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"time"
|
|
|
|
|
2022-11-13 19:33:57 +00:00
|
|
|
models "github.com/portainer/portainer/api/http/models/kubernetes"
|
2022-09-21 04:49:42 +00:00
|
|
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
|
|
)
|
|
|
|
|
|
|
|
// GetConfigMapsAndSecrets gets all the ConfigMaps AND all the Secrets for a
|
|
|
|
// given namespace in a k8s endpoint. The result is a list of both config maps
|
|
|
|
// and secrets. The IsSecret boolean property indicates if a given struct is a
|
|
|
|
// secret or configmap.
|
|
|
|
func (kcl *KubeClient) GetConfigMapsAndSecrets(namespace string) ([]models.K8sConfigMapOrSecret, error) {
|
|
|
|
mapsClient := kcl.cli.CoreV1().ConfigMaps(namespace)
|
|
|
|
mapsList, err := mapsClient.List(context.Background(), v1.ListOptions{})
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: Applications
|
|
|
|
var combined []models.K8sConfigMapOrSecret
|
|
|
|
for _, m := range mapsList.Items {
|
|
|
|
var cm models.K8sConfigMapOrSecret
|
|
|
|
cm.UID = string(m.UID)
|
|
|
|
cm.Name = m.Name
|
|
|
|
cm.Namespace = m.Namespace
|
|
|
|
cm.Annotations = m.Annotations
|
|
|
|
cm.Data = m.Data
|
|
|
|
cm.CreationDate = m.CreationTimestamp.Time.UTC().Format(time.RFC3339)
|
|
|
|
cm.IsSecret = false
|
|
|
|
combined = append(combined, cm)
|
|
|
|
}
|
|
|
|
|
|
|
|
secretClient := kcl.cli.CoreV1().Secrets(namespace)
|
|
|
|
secretList, err := secretClient.List(context.Background(), v1.ListOptions{})
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, s := range secretList.Items {
|
|
|
|
var secret models.K8sConfigMapOrSecret
|
|
|
|
secret.UID = string(s.UID)
|
|
|
|
secret.Name = s.Name
|
|
|
|
secret.Namespace = s.Namespace
|
|
|
|
secret.Annotations = s.Annotations
|
|
|
|
secret.Data = msbToMss(s.Data)
|
|
|
|
secret.CreationDate = s.CreationTimestamp.Time.UTC().Format(time.RFC3339)
|
|
|
|
secret.IsSecret = true
|
|
|
|
secret.SecretType = string(s.Type)
|
|
|
|
combined = append(combined, secret)
|
|
|
|
}
|
|
|
|
|
|
|
|
return combined, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func msbToMss(msa map[string][]byte) map[string]string {
|
|
|
|
mss := make(map[string]string, len(msa))
|
|
|
|
for k, v := range msa {
|
|
|
|
mss[k] = string(v)
|
|
|
|
}
|
|
|
|
return mss
|
|
|
|
}
|