-
Notifications
You must be signed in to change notification settings - Fork 4
/
apps.go
84 lines (65 loc) · 1.86 KB
/
apps.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package local
import (
"time"
"github.com/appscode/go/log"
pb "github.com/datacol-io/datacol/api/models"
"github.com/datacol-io/datacol/cloud"
"github.com/datacol-io/datacol/common"
sched "github.com/datacol-io/datacol/k8s"
)
func (l *LocalCloud) AppList() (pb.Apps, error) {
return l.store.AppList()
}
func (g *LocalCloud) AppCreate(name string, req *pb.AppCreateOptions) (*pb.App, error) {
app := &pb.App{Name: name}
if err := g.store.AppCreate(app, req); err != nil {
return app, err
}
return g.AppGet(name)
}
func (g *LocalCloud) AppRestart(app string) error {
log.Debugf("Restarting %s", app)
ns := g.Name
env, err := g.EnvironmentGet(app)
if err != nil {
return err
}
env["_RESTARTED"] = time.Now().Format("20060102150405")
if err = sched.SetPodEnv(g.kubeClient(), ns, app, env); err != nil {
return err
}
return nil
}
func (g *LocalCloud) AppGet(name string) (*pb.App, error) {
app, err := g.store.AppGet(name)
if err != nil {
return nil, err
}
if app.BuildId != "" {
b, err := g.BuildGet(name, app.BuildId)
if err != nil {
return nil, err
}
proctype, kc := common.GetDefaultProctype(b), g.kubeClient()
serviceName := common.GetJobID(name, proctype)
if app.Endpoint, err = sched.GetServiceEndpoint(kc, g.Name, serviceName); err != nil {
return app, err
}
return app, g.store.AppUpdate(app)
}
return app, nil
}
func (g *LocalCloud) AppDelete(name string) error {
sched.DeleteApp(g.kubeClient(), g.Name, name, cloud.LocalProvider)
return g.store.AppDelete(name)
}
// DomainUpdate updates list of Domains for an app
// domain can be example.com if you want to add or :example.com if you want to delete
func (g *LocalCloud) AppUpdateDomain(name, domain string) error {
app, err := g.AppGet(name)
if err != nil {
return err
}
app.Domains = common.MergeAppDomains(app.Domains, domain)
return g.store.AppUpdate(app)
}