zones: introduce Machine.PublicAddresses()

Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
2023-08-21 22:16:39 +00:00
parent 5f924dcb00
commit 99d0408756
3 changed files with 33 additions and 0 deletions
+3
View File
@@ -1,6 +1,7 @@
package zones
import (
"net/netip"
"strconv"
"strings"
"sync"
@@ -13,6 +14,8 @@ type Machine struct {
zone *Zone
id int
Name string
PublicAddresses []netip.Addr
}
func (m *Machine) String() string {
+26
View File
@@ -0,0 +1,26 @@
package zones
import (
"context"
"net/netip"
"time"
)
func (m *Machine) lookupNetIP() ([]netip.Addr, error) {
timeout := 2 * time.Second
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()
return m.zone.zones.resolver.LookupNetIP(ctx, "ip", m.FullName())
}
func (m *Machine) updatePublicAddresses() error {
addrs, err := m.lookupNetIP()
if err != nil {
return err
}
m.PublicAddresses = addrs
return nil
}
+4
View File
@@ -43,6 +43,10 @@ func (z *Zone) scan() error {
Name: e.Name(),
}
if err := m.updatePublicAddresses(); err != nil {
return err
}
z.Machines = append(z.Machines, m)
}
}