/
checks_methods.go
111 lines (86 loc) · 1.87 KB
/
checks_methods.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package v1alpha1
import (
"os"
"github.com/russellcardullo/go-pingdom/pingdom"
)
var (
envUser = "PINGDOM_USER"
envPassword = "PINGDOM_PASSWORD"
envKey = "PINGDOM_KEY"
)
// SetupHTTP setups HTTP check
func (checks *Checks) SetupHTTP() error {
client, err := checks.makeClient()
if err != nil {
return err
}
if checks.Status.ID != 0 {
return checks.update(client)
}
return checks.create(client)
}
// DeleteHTTP deletes HTTP check
func (checks *Checks) DeleteHTTP() error {
client, err := checks.makeClient()
if err != nil {
return err
}
if checks.Status.ID == 0 {
return nil
}
return checks.delete(client)
}
// -- helpers --
func (checks *Checks) getConfig() pingdom.ClientConfig {
user := checks.Spec.User
if user == "" {
user, _ = os.LookupEnv(envUser)
}
password := checks.Spec.Password
if password == "" {
password, _ = os.LookupEnv(envPassword)
}
key := checks.Spec.Key
if key == "" {
key, _ = os.LookupEnv(envKey)
}
return pingdom.ClientConfig{
User: user,
Password: password,
APIKey: key,
BaseURL: checks.Spec.BaseURL,
}
}
func (checks *Checks) makeClient() (*pingdom.Client, error) {
return pingdom.NewClientWithConfig(checks.getConfig())
}
func (checks *Checks) create(client *pingdom.Client) error {
details, err := client.Checks.Create(convert(checks.Spec.HTTP))
if err != nil {
return err
}
checks.Status.ID = details.ID
return nil
}
func (checks *Checks) update(client *pingdom.Client) error {
_, err := client.Checks.Update(
checks.Status.ID,
convert(checks.Spec.HTTP),
)
if err != nil {
return err
}
return nil
}
func (checks *Checks) delete(client *pingdom.Client) error {
_, err := client.Checks.Delete(checks.Status.ID)
if err != nil {
return err
}
checks.Status.ID = 0
return nil
}
func convert(http *HTTPCheck) *pingdom.HttpCheck {
tmp := pingdom.HttpCheck(*http)
return &tmp
}