installer-env: wait for services to be reachable
diff --git a/core/installer/tasks/dns.go b/core/installer/tasks/dns.go
index 08cb863..4a33670 100644
--- a/core/installer/tasks/dns.go
+++ b/core/installer/tasks/dns.go
@@ -2,6 +2,7 @@
import (
"context"
+ "fmt"
"net"
"text/template"
"time"
@@ -13,13 +14,20 @@
type Check func(ch Check) error
-func NewDNSResolverTask(
+func SetupZoneTask(env Env, st *state) Task {
+ return newSequentialParentTask(
+ fmt.Sprintf("Setup DNS zone records for %s", env.Domain),
+ CreateZoneRecords(env.Domain, st.publicIPs, env, st),
+ WaitToPropagate(env.Domain, st.publicIPs),
+ )
+}
+
+func CreateZoneRecords(
name string,
expected []net.IP,
env Env,
st *state,
) Task {
- ctx := context.TODO()
t := newLeafTask("Configure DNS", func() error {
repo, err := st.ssClient.GetRepo("config")
if err != nil {
@@ -87,7 +95,17 @@
}
r.CommitAndPush("configure dns zone")
}
+ return nil
+ })
+ return &t
+}
+func WaitToPropagate(
+ name string,
+ expected []net.IP,
+) Task {
+ t := newLeafTask("Propagate DNS records", func() error {
+ ctx := context.TODO()
gotExpectedIPs := func(actual []net.IP) bool {
for _, a := range actual {
found := false