(value string)
| 1000 | } |
| 1001 | |
| 1002 | func validateExtraNetworkTokens(value string) error { |
| 1003 | tokens := strings.Split(value, ",") |
| 1004 | for _, token := range tokens { |
| 1005 | part := strings.TrimSpace(token) |
| 1006 | if part == "" { |
| 1007 | continue |
| 1008 | } |
| 1009 | if strings.ContainsAny(part, " \t\r\n") { |
| 1010 | return fmt.Errorf("token %q cannot contain spaces", part) |
| 1011 | } |
| 1012 | parts := strings.SplitN(part, "=", 2) |
| 1013 | if len(parts) != 2 || strings.TrimSpace(parts[0]) == "" || strings.TrimSpace(parts[1]) == "" { |
| 1014 | return fmt.Errorf("token %q must be key=value", part) |
| 1015 | } |
| 1016 | } |
| 1017 | return nil |
| 1018 | } |
| 1019 | |
| 1020 | // showResizeStorageModal displays a modal for resizing a storage volume. |
| 1021 | func showResizeStorageModal(app *App, vm *api.VM) { |
no outgoing calls