Skip to content

Commit

Permalink
Edit host taints
Browse files Browse the repository at this point in the history
  • Loading branch information
xinnj committed Jun 18, 2024
1 parent b9cafdb commit fb79eaf
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 1 deletion.
3 changes: 3 additions & 0 deletions config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
python_repo: "https://pypi.tuna.tsinghua.edu.cn/simple"
predefined_node_labels:
vm-agent: true
predefined_node_taints:
- "logging:NoSchedule"
- "monitoring:NoSchedule"
default_vars:
download_run_once: true
download_localhost: true
Expand Down
84 changes: 83 additions & 1 deletion hostDetails.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ type HostDetails struct {
Access_ip string
Groups []string
Node_labels map[string]string
Node_taints []string
}

var hostDetails HostDetails
var tmpNodeLabels string
var tmpNodeTaints string

func initFlexHostDetails(hostname string, readonly bool) {
getHostDetails(hostname)
Expand Down Expand Up @@ -48,6 +50,14 @@ func initFlexHostDetails(hostname string, readonly bool) {
}
formHostDetails.AddTextView("Node Labels: ", labelsString, 0, 0, false, true)

var taintsString string
if len(hostDetails.Node_taints) != 0 {
taints, err := yaml.Marshal(&hostDetails.Node_taints)
check(err)
taintsString = string(taints)
}
formHostDetails.AddTextView("Node Taints: ", taintsString, 0, 0, false, true)

formDown := tview.NewForm()

if readonly {
Expand All @@ -64,6 +74,11 @@ func initFlexHostDetails(hostname string, readonly bool) {
flexEditNodeLabels.Clear()
initFlexEditNodeLabels()
pages.SwitchToPage("Edit Node Labels")
}).
AddButton("Edit Node Taints", func() {
flexEditNodeTaints.Clear()
initFlexEditNodeTaints()
pages.SwitchToPage("Edit Node Taints")
})
}

Expand Down Expand Up @@ -153,7 +168,7 @@ func initFlexEditNodeLabels() {
var newLabels map[string]string
err := yaml.Unmarshal([]byte(tmpNodeLabels), &newLabels)
if err != nil {
showErrorModal("Node label format is wrong.",
showErrorModal("Node labels format (YAML Map) is wrong.",
func(buttonIndex int, buttonLabel string) {
pages.SwitchToPage("Edit Node Labels")
})
Expand Down Expand Up @@ -197,12 +212,78 @@ func initFlexEditNodeLabels() {
AddItem(formPredefinedLabels, 0, 1, false)
}

func initFlexEditNodeTaints() {
flexEditNodeTaints.SetTitle("Edit Node Taints").SetBorder(true)

formEditTaints := tview.NewForm()
formEditTaints.SetBorder(true)
formEditTaints.AddTextView("Hostname: ", hostDetails.Hostname, 0, 3, false, false)

if tmpNodeTaints == "" && len(hostDetails.Node_taints) != 0 {
taints, err := yaml.Marshal(&hostDetails.Node_taints)
check(err)
tmpNodeTaints = string(taints)
}

formEditTaints.AddTextArea("Node Taints: ", tmpNodeTaints, 0, 0, 0, func(text string) {
tmpNodeTaints = text
})

formEditTaints.AddButton("OK", func() {
var newTaints []string
err := yaml.Unmarshal([]byte(tmpNodeTaints), &newTaints)
if err != nil {
showErrorModal("Node taints format (YAML Array) is wrong.",
func(buttonIndex int, buttonLabel string) {
pages.SwitchToPage("Edit Node Taints")
})
} else {
hostDetails.Node_taints = newTaints
writeBackHostDetails()
tmpNodeTaints = ""
flexHostDetails.Clear()
initFlexHostDetails(hostDetails.Hostname, false)
pages.SwitchToPage("Edit Hosts")
}
})

formEditTaints.AddButton("Cancel", func() {
tmpNodeTaints = ""
pages.SwitchToPage("Edit Hosts")
})

formPredefinedTaints := tview.NewForm()
formPredefinedTaints.SetBorder(true)
var options []string
for _, value := range appConfig.Predefined_node_taints {
options = append(options, "- "+value)
}
slices.Sort(options)
var selectedTaint string
formPredefinedTaints.AddDropDown("Predefined Taints", options, -1, func(option string, optionIndex int) {
selectedTaint = option
})

formPredefinedTaints.AddButton("<< Add", func() {
if selectedTaint != "" {
tmpNodeTaints = tmpNodeTaints + selectedTaint + "\n"
flexEditNodeTaints.Clear()
initFlexEditNodeTaints()
}
})

flexEditNodeTaints.
AddItem(formEditTaints, 0, 2, true).
AddItem(formPredefinedTaints, 0, 1, false)
}

func getHostDetails(hostname string) {
hostDetails.Hostname = hostname
hostDetails.Ansible_host = inventory.All.Hosts[hostname].Ansible_host
hostDetails.Ip = inventory.All.Hosts[hostname].Ip
hostDetails.Access_ip = inventory.All.Hosts[hostname].Access_ip
hostDetails.Node_labels = inventory.All.Hosts[hostname].Node_labels
hostDetails.Node_taints = inventory.All.Hosts[hostname].Node_taints

var groups []string
if _, ok := inventory.All.Children.Kube_control_plane.Hosts[hostname]; ok {
Expand All @@ -226,6 +307,7 @@ func writeBackHostDetails() {
h.Ip = hostDetails.Ip
h.Access_ip = hostDetails.Access_ip
h.Node_labels = hostDetails.Node_labels
h.Node_taints = hostDetails.Node_taints

if slices.Contains(hostDetails.Groups, "kube_control_plane") {
inventory.All.Children.Kube_control_plane.Hosts[hostDetails.Hostname] = make(map[any]any)
Expand Down
3 changes: 3 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const pythonRequirements = "requirements.txt"
type AppConfig struct {
Python_repo string
Predefined_node_labels map[string]string
Predefined_node_taints []string
Default_vars map[string]any
Configurable_vars []map[string]any
Default_mirrors []map[string]string
Expand All @@ -33,6 +34,7 @@ var formNewProject = tview.NewForm()
var flexEditHosts = tview.NewFlex()
var formEditGroups = tview.NewForm()
var flexEditNodeLabels = tview.NewFlex()
var flexEditNodeTaints = tview.NewFlex()
var formAddHost = tview.NewForm()
var flexFeatures = tview.NewFlex()
var flexHaMode = tview.NewFlex()
Expand Down Expand Up @@ -159,6 +161,7 @@ func main() {
pages.AddPage("Edit Hosts", flexEditHosts, true, false)
pages.AddPage("Edit Groups", formEditGroups, true, false)
pages.AddPage("Edit Node Labels", flexEditNodeLabels, true, false)
pages.AddPage("Edit Node Taints", flexEditNodeTaints, true, false)
pages.AddPage("Add Host", formAddHost, true, false)
pages.AddPage("Features", flexFeatures, true, false)
pages.AddPage("HA Mode", flexHaMode, true, false)
Expand Down
1 change: 1 addition & 0 deletions project.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ type Host struct {
Ip string
Access_ip string
Node_labels map[string]string
Node_taints []string
}

type Inventory struct {
Expand Down

0 comments on commit fb79eaf

Please sign in to comment.