blob: 353eb4c9ee80bddc8ac0c74465dc0671e7dca7b5 [file] [log] [blame]
Giorgi Lekveishvili46743d42023-12-10 15:47:23 +04001package tasks
2
3import (
Giorgi Lekveishvili46743d42023-12-10 15:47:23 +04004 "net"
5
6 "github.com/charmbracelet/keygen"
7
8 "github.com/giolekva/pcloud/core/installer"
9 "github.com/giolekva/pcloud/core/installer/soft"
10)
11
12type state struct {
13 publicIPs []net.IP
14 nsCreator installer.NamespaceCreator
15 repo installer.RepoIO
16 ssClient *soft.Client
17 fluxUserName string
18 keys *keygen.KeyPair
19}
20
Giorgi Lekveishvili46743d42023-12-10 15:47:23 +040021type Env struct {
22 PCloudEnvName string
23 Name string
24 ContactEmail string
25 Domain string
26 AdminPublicKey string
27}
28
29func NewCreateEnvTask(
30 env Env,
31 publicIPs []net.IP,
32 nsCreator installer.NamespaceCreator,
33 repo installer.RepoIO,
34) Task {
Giorgi Lekveishvili77ee2dc2023-12-11 16:51:10 +040035 st := state{
36 publicIPs: publicIPs,
37 nsCreator: nsCreator,
38 repo: repo,
Giorgi Lekveishvili46743d42023-12-10 15:47:23 +040039 }
Giorgi Lekveishvili77ee2dc2023-12-11 16:51:10 +040040 t := newSequentialParentTask(
41 "Create env",
42 NewCreateConfigRepoTask(env, &st),
43 NewInitConfigRepoTask(env, &st),
44 NewActivateEnvTask(env, &st),
45 NewDNSResolverTask(env.Domain, publicIPs, env, &st),
46 NewSetupInfraAppsTask(env, &st),
47 )
48 return &t
Giorgi Lekveishvili46743d42023-12-10 15:47:23 +040049}