diff options
| author | Xe Iaso <me@xeiaso.net> | 2023-11-10 14:34:57 -0500 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2023-11-10 14:34:57 -0500 |
| commit | 114a4bddcef51acdcd38a88289df1a4dbb6beac8 (patch) | |
| tree | ec298dacd7ae2b1b53cce1b08e87e4fb9f225a02 /web | |
| parent | 9eda2ab57e642a0628b73bc0a9b7be13d12fbae4 (diff) | |
| download | x-114a4bddcef51acdcd38a88289df1a4dbb6beac8.tar.xz x-114a4bddcef51acdcd38a88289df1a4dbb6beac8.zip | |
web/fly/flydns: add get machines and regions functions
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'web')
| -rw-r--r-- | web/fly/flydns/flydns.go | 53 | ||||
| -rw-r--r-- | web/fly/flydns/flydns_test.go | 14 |
2 files changed, 66 insertions, 1 deletions
diff --git a/web/fly/flydns/flydns.go b/web/fly/flydns/flydns.go index 7c34f14..4b1431a 100644 --- a/web/fly/flydns/flydns.go +++ b/web/fly/flydns/flydns.go @@ -7,6 +7,10 @@ import ( "strings" ) +func combineString(inp []string) string { + return strings.Join(inp, "") +} + func GetAppAddresses(appName string) ([]netip.Addr, error) { addrs, err := net.LookupAddr(fmt.Sprintf("%s.internal", appName)) if err != nil { @@ -89,9 +93,56 @@ func GetApps() ([]string, error) { } var result []string - for _, resp := range appString { + for _, resp := range strings.Split(appString[0], ",") { result = append(result, strings.Split(resp, ",")...) } return result, nil } + +type Machine struct { + ID string + Region string +} + +func parseMachine(input string) (Machine, error) { + var result Machine + split := strings.Split(input, " ") + if len(split) != 2 { + return result, fmt.Errorf("invalid input") + } + + result.ID = split[0] + result.Region = split[1] + + return result, nil +} + +func GetMachines(appName string) ([]Machine, error) { + machines, err := net.LookupTXT(fmt.Sprintf("vms.%s.internal", appName)) + if err != nil { + return nil, err + } + + var result []Machine + for _, machine := range strings.Split(combineString(machines), ",") { + m, err := parseMachine(machine) + if err != nil { + return nil, err + } + + result = append(result, m) + } + + return result, nil + +} + +func GetRegions(appName string) ([]string, error) { + regions, err := net.LookupTXT(fmt.Sprintf("regions.%s.internal", appName)) + if err != nil { + return nil, err + } + + return strings.Split(combineString(regions), ","), nil +} diff --git a/web/fly/flydns/flydns_test.go b/web/fly/flydns/flydns_test.go index c566461..9145ed4 100644 --- a/web/fly/flydns/flydns_test.go +++ b/web/fly/flydns/flydns_test.go @@ -15,3 +15,17 @@ func TestGetApps(t *testing.T) { t.Errorf("Expected no error, but got an error: %v", err) } } + +func TestParseMachine(t *testing.T) { + input := "1781965b593689 yyz" + expected := Machine{"1781965b593689", "yyz"} + + result, err := parseMachine(input) + if err != nil { + t.Errorf("Expected no error, but got an error: %v", err) + } + + if result != expected { + t.Errorf("Expected %v, but got %v", expected, result) + } +} |
