alter registries ListAllRegistries DeleteRegistries GetReisgtries function

This commit is contained in:
yanmingfan
2018-06-12 19:59:24 +08:00
parent e38150df4d
commit 7ba7a1a237

View File

@@ -239,68 +239,56 @@ func QueryRegistries(project string) ([]Registries, error) {
func ListAllRegistries() ([]Registries, error) {
result := make([]Registries, 0)
k8sclient := kubeclient.NewK8sClient()
var registries Registries
var options meta_v1.ListOptions
options.LabelSelector = "app=dockerhubkey"
secrets, err := k8sclient.CoreV1().Secrets("").List(options)
k8sclient := kubeclient.NewK8sClient()
projects, err := k8sclient.CoreV1().Namespaces().List(options)
if err != nil {
return result, err
}
options.LabelSelector = "app=dockerhubkey"
if len(secrets.Items) > 0 {
for _, project := range projects.Items {
for _, secret := range secrets.Items {
secrets, err := k8sclient.CoreV1().Secrets(project.Name).List(options)
registries.DisplayName = secret.Name
registries.AuthProject = secret.Namespace
var data map[string]interface{}
err := json.Unmarshal(secret.Data[".dockerconfigjson"], &data)
if err != nil {
return result, err
}
if err != nil {
if len(secrets.Items) > 0 {
glog.Errorln(err)
return result, err
for _, secret := range secrets.Items {
}
registries.DisplayName = secret.Name
registries.AuthProject = secret.Namespace
var data map[string]interface{}
err := json.Unmarshal(secret.Data[".dockerconfigjson"], &data)
hostMap := data["auths"].(map[string]interface{})
if err != nil {
for key, val := range hostMap {
glog.Errorln(err)
return result, err
registries.RegServerHost = key
info := val.(map[string]interface{})
registries.RegUsername = info["username"].(string)
registries.RegPassword = info["password"].(string)
}
}
hostMap := data["auths"].(map[string]interface{})
registries.Annotations = secret.Annotations
for key, val := range hostMap {
if len(result) == 0 {
registries.RegServerHost = key
info := val.(map[string]interface{})
registries.RegUsername = info["username"].(string)
registries.RegPassword = info["password"].(string)
result = append(result, registries)
}
} else {
registries.Annotations = secret.Annotations
if len(result) == 0 {
if !containSame(registries, result) {
result = append(result, registries)
} else {
if !containSame(registries, result) {
result = append(result, registries)
}
}
}
@@ -313,33 +301,6 @@ func ListAllRegistries() ([]Registries, error) {
}
//delete registries
func DeleteRegistries(name string) (constants.MessageResponse, error) {
var msg constants.MessageResponse
k8sclient := kubeclient.NewK8sClient()
var options meta_v1.ListOptions
projects, err := k8sclient.CoreV1().Namespaces().List(options)
if err != nil {
return msg, err
}
var deloptions *meta_v1.DeleteOptions
for _, project := range projects.Items {
k8sclient.CoreV1().Secrets(project.Name).Delete(name, deloptions)
}
msg.Message = "success"
return msg, nil
}
func containSame(registries Registries, list []Registries) bool {
flag := false
@@ -357,6 +318,36 @@ func containSame(registries Registries, list []Registries) bool {
}
//delete registries
func DeleteRegistries(name string) (constants.MessageResponse, error) {
var msg constants.MessageResponse
k8sclient := kubeclient.NewK8sClient()
var options meta_v1.ListOptions
options.FieldSelector = "metadata.name=" + name
secretList, err := k8sclient.CoreV1().Secrets("").List(options)
if err != nil {
return msg, err
}
if len(secretList.Items) > 0 {
for _, secret := range secretList.Items {
err := k8sclient.CoreV1().Secrets(secret.Namespace).Delete(secret.Name, &meta_v1.DeleteOptions{})
if err != nil {
return msg, err
}
}
}
msg.Message = "success"
return msg, nil
}
//update registries
func UpdateRegistries(name string, registries Registries) (Registries, error) {
DeleteRegistries(name)
@@ -370,19 +361,14 @@ func UpdateRegistries(name string, registries Registries) (Registries, error) {
secret.APIVersion = APIVERSION
secret.Type = TYPE
secret.Name = registries.DisplayName
authinfo := NewAuthInfo(registries)
data := make(map[string][]byte)
data[".dockerconfigjson"] = convert2DockerJson(*authinfo)
secret.Data = data
labels := make(map[string]string)
labels["app"] = "dockerhubkey"
secret.Labels = labels
annotations := make(map[string]string)
for key, value := range registries.Annotations.(map[string]interface{}) {
annotations[key] = value.(string)
@@ -406,52 +392,45 @@ func UpdateRegistries(name string, registries Registries) (Registries, error) {
}
// Get registries detail
func GetReisgtries(name string) (Registries, error) {
var reg Registries
k8sclient := kubeclient.NewK8sClient()
var getoptions meta_v1.GetOptions
getoptions.Kind = SECRET
var options meta_v1.ListOptions
projects, err := k8sclient.CoreV1().Namespaces().List(options)
options.FieldSelector = "metadata.name=" + name
secretList, err := k8sclient.CoreV1().Secrets("").List(options)
if err != nil {
return reg, err
}
if len(projects.Items) > 0 {
if len(secretList.Items) > 0 {
for _, project := range projects.Items {
for _, secret := range secretList.Items {
secret, err := k8sclient.CoreV1().Secrets(project.Name).Get(name, getoptions)
secret, err := k8sclient.CoreV1().Secrets(secret.Namespace).Get(secret.Name, meta_v1.GetOptions{})
if err == nil {
reg.DisplayName = secret.Name
var data map[string]interface{}
json.Unmarshal(secret.Data[".dockerconfigjson"], &data)
if len(reg.AuthProject) == 0 {
reg.AuthProject = secret.Namespace
} else {
reg.AuthProject = reg.AuthProject + "," + secret.Namespace
}
hostMap := data["auths"].(map[string]interface{})
for key, val := range hostMap {
reg.RegServerHost = key
info := val.(map[string]interface{})
reg.RegUsername = info["username"].(string)
reg.RegPassword = info["password"].(string)
}
reg.Annotations = secret.Annotations
}
}