
현재 k8s 자동 프로비저닝 툴을 개발 중입니다.
이미 구성된 cluster의 정보와 내가 가지고있는 파일의 정보들을 비교하여 값들을 다시 설정하는 코드
for ip := range nodeListMap {
// nodeListMap의 InternalIP가 model.-----.PrivateIP에 없는지 확인
found := false
for _, nodeIP := range model.-----.PrivateIP {
if ip == nodeIP {
found = true
break
}
}
// 만약 해당 InternalIP가 model.-----.PrivateIP에 없다면
if !found {
// 해당 InternalIP에 해당하는 node의 Name 찾기
var nodeName, nodeIP string
for _, node := range nodeList {
if node.InternalIP == ip {
nodeName = node.Name
nodeIP = node.AnsibleHost
break
}
}
// 찾은 Name과 IP를 model.-----에 추가
if nodeName != "" {
model.-----.IP = append(model.-----.IP, nodeIP)
model.-----.PrivateIP = append(model.-----.PrivateIP, ip)
model.-----.Name = append(model.-----.Name, nodeName)
}
}
}
if node.InternalIP == ip, if nodeName != "" 해당 if들이 따로 떨어질 이유가 없다.for ip := range nodeListMap {
// model.-----.PrivateIP에 ip가 포함되어 있는지 확인 후 있으면 continue
if slices.Contains(model.-----.PrivateIP, ip) {
continue
}
// nodeList에서 해당 ip에 해당하는 node 찾기
for _, node := range nodeList {
if node.InternalIP == ip {
// 찾은 Name과 IP를 model.-----에 추가
model.-----.IP = append(model.-----.IP, node.AnsibleHost)
model.-----.PrivateIP = append(model.-----.PrivateIP, ip)
model.-----.Name = append(model.-----.Name, node.Name)
break
}
}
}
for _, node := range nodeList {
if !slices.Contains(model.-----.PrivateIP, node.InternalIP) && nodeListMap[node.InternalIP] {
model.-----.PrivateIP = append(model.-----.PrivateIP, node.InternalIP)
model.-----.IP = append(model.-----.IP, node.AnsibleHost)
model.-----.Name = append(model.-----.Name, node.Name)
}
}
짧아지고 가독성 있게 잘 작성된 것 같아 만족한다.