(app *App, vm *api.VM, config *api.VMConfig, onApply func())
| 539 | } |
| 540 | |
| 541 | func showEditNetworkInterfacesModal(app *App, vm *api.VM, config *api.VMConfig, onApply func()) { |
| 542 | if config == nil { |
| 543 | app.showMessageSafe("No configuration loaded") |
| 544 | return |
| 545 | } |
| 546 | |
| 547 | if len(config.NetworkInterfaces) == 0 { |
| 548 | app.showMessageSafe("No network interfaces found for this guest") |
| 549 | return |
| 550 | } |
| 551 | |
| 552 | networkKeys := make([]string, 0, len(config.NetworkInterfaces)) |
| 553 | for key := range config.NetworkInterfaces { |
| 554 | if strings.HasPrefix(key, "net") { |
| 555 | networkKeys = append(networkKeys, key) |
| 556 | } |
| 557 | } |
| 558 | sort.Strings(networkKeys) |
| 559 | if len(networkKeys) == 0 { |
| 560 | app.showMessageSafe("No editable netX interfaces found") |
| 561 | return |
| 562 | } |
| 563 | |
| 564 | working := make(map[string]string, len(config.NetworkInterfaces)) |
| 565 | for k, v := range config.NetworkInterfaces { |
| 566 | working[k] = v |
| 567 | } |
| 568 | originalWorking := make(map[string]string, len(config.NetworkInterfaces)) |
| 569 | for k, v := range config.NetworkInterfaces { |
| 570 | originalWorking[k] = buildEditableNetworkRaw(vm.Type, parseEditableNetworkConfig(vm.Type, v)) |
| 571 | } |
| 572 | |
| 573 | form := newStandardForm() |
| 574 | form.SetBorder(true) |
| 575 | form.SetTitle(fmt.Sprintf(" Network Interfaces - %s (%d) ", vm.Name, vm.ID)) |
| 576 | |
| 577 | currentKey := networkKeys[0] |
| 578 | current := parseEditableNetworkConfig(vm.Type, working[currentKey]) |
| 579 | suppress := false |
| 580 | |
| 581 | form.AddDropDown("Interface", networkKeys, 0, nil) |
| 582 | if vm.Type == api.VMTypeQemu { |
| 583 | form.AddInputField("Model", "", 20, nil, nil) |
| 584 | } |
| 585 | if vm.Type == api.VMTypeLXC { |
| 586 | form.AddInputField("Name", "", 20, nil, nil) |
| 587 | } |
| 588 | form.AddInputField("MAC Address", "", 24, nil, nil) |
| 589 | form.AddInputField("Bridge", "", 20, nil, nil) |
| 590 | form.AddInputField("VLAN Tag", "", 8, nil, nil) |
| 591 | form.AddInputField("Rate", "", 10, nil, nil) |
| 592 | if vm.Type == api.VMTypeLXC { |
| 593 | form.AddInputField("IP", "", 32, nil, nil) |
| 594 | form.AddDropDown("IP Assignment", []string{"DHCP", "Static"}, 0, nil) |
| 595 | form.AddInputField("Gateway", "", 32, nil, nil) |
| 596 | form.AddInputField("Nameserver", strings.TrimSpace(config.Nameserver), 48, nil, nil) |
| 597 | form.AddInputField("Search Domain", strings.TrimSpace(config.SearchDomain), 48, nil, nil) |
| 598 | } |
no test coverage detected