aboutsummaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2023-11-10 14:34:57 -0500
committerXe Iaso <me@xeiaso.net>2023-11-10 14:34:57 -0500
commit114a4bddcef51acdcd38a88289df1a4dbb6beac8 (patch)
treeec298dacd7ae2b1b53cce1b08e87e4fb9f225a02 /web
parent9eda2ab57e642a0628b73bc0a9b7be13d12fbae4 (diff)
downloadx-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.go53
-rw-r--r--web/fly/flydns/flydns_test.go14
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)
+ }
+}