-
Notifications
You must be signed in to change notification settings - Fork 5
/
resource_nsxt_lb_monitor.go
83 lines (72 loc) · 2.05 KB
/
resource_nsxt_lb_monitor.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
// (C) Copyright 2021 Hewlett Packard Enterprise Development LP
package diffvalidation
import (
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
const (
serviceTypes = "type"
httpMonitor = "http_monitor"
httpsMonitor = "https_monitor"
icmpMonitor = "icmp_monitor"
passiveMonitor = "passive_monitor"
tcpMonitor = "tcp_monitor"
udpMonitor = "udp_monitor"
LBHttpMonitorProfile = "LBHttpMonitorProfile"
LBHttpsMonitorProfile = "LBHttpsMonitorProfile"
LBIcmpMonitorProfile = "LBIcmpMonitorProfile"
LBPassiveMonitorProfile = "LBPassiveMonitorProfile"
LBTcpMonitorProfile = "LBTcpMonitorProfile"
LBUdpMonitorProfile = "LBUdpMonitorProfile"
)
type LoadBalancerMonitor struct {
diff *schema.ResourceDiff
}
func NewLoadBalancerMonitorValidate(diff *schema.ResourceDiff) *LoadBalancerMonitor {
return &LoadBalancerMonitor{
diff: diff,
}
}
func (l *LoadBalancerMonitor) DiffValidate() error {
types := l.diff.Get(serviceTypes)
switch types {
case LBHttpMonitorProfile:
err := l.validateMonitor(httpMonitor, LBHttpMonitorProfile)
if err != nil {
return err
}
case LBHttpsMonitorProfile:
err := l.validateMonitor(httpsMonitor, LBHttpsMonitorProfile)
if err != nil {
return err
}
case LBIcmpMonitorProfile:
err := l.validateMonitor(icmpMonitor, LBIcmpMonitorProfile)
if err != nil {
return err
}
case LBPassiveMonitorProfile:
err := l.validateMonitor(passiveMonitor, LBPassiveMonitorProfile)
if err != nil {
return err
}
case LBTcpMonitorProfile:
err := l.validateMonitor(tcpMonitor, LBTcpMonitorProfile)
if err != nil {
return err
}
case LBUdpMonitorProfile:
err := l.validateMonitor(udpMonitor, LBUdpMonitorProfile)
if err != nil {
return err
}
}
return nil
}
func (l *LoadBalancerMonitor) validateMonitor(monitorType string, serviceType string) error {
monitorTypes := l.diff.Get(monitorType)
if len((monitorTypes).([]interface{})) == 0 {
return fmt.Errorf("please provide " + monitorType + " " + "configurations for Type" + " " + serviceType)
}
return nil
}