/
resource_cloud_services_cloud_provider_azure_metrics.go
159 lines (153 loc) · 7.05 KB
/
resource_cloud_services_cloud_provider_azure_metrics.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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
package thunder
import (
"context"
edpt "github.com/a10networks/terraform-provider-thunder/thunder/axapi/endpoint"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func resourceCloudServicesCloudProviderAzureMetrics() *schema.Resource {
return &schema.Resource{
Description: "`thunder_cloud_services_cloud_provider_azure_metrics`: Azure metrics configuration\n\n__PLACEHOLDER__",
CreateContext: resourceCloudServicesCloudProviderAzureMetricsCreate,
UpdateContext: resourceCloudServicesCloudProviderAzureMetricsUpdate,
ReadContext: resourceCloudServicesCloudProviderAzureMetricsRead,
DeleteContext: resourceCloudServicesCloudProviderAzureMetricsDelete,
Schema: map[string]*schema.Schema{
"action": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Azure Application Insights; 'disable': Disable Azure Application Insights (default);",
},
"active_partitions": {
Type: schema.TypeString, Optional: true, Description: "Specifies the thunder active partition name separated by a comma for multiple values",
},
"cps": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable CPS Metrics; 'disable': Disable CPS Metrics;",
},
"cpu": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable CPU Metrics; 'disable': Disable CPU Metrics;",
},
"disk": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Disk Metrics; 'disable': Disable Disk Metrics;",
},
"interfaces": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Interfaces Metrics; 'disable': Disable Interfaces Metrics;",
},
"memory": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Memory Metrics; 'disable': Disable Memory Metrics;",
},
"packet_drop": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Packet Drop Metrics; 'disable': Disable Packet Drop Metrics;",
},
"packet_rate": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Packet Rate Metrics; 'disable': Disable Packet Rate Metrics;",
},
"resource_id": {
Type: schema.TypeString, Optional: true, Description: "Specifies the Azure Application Insights resource ID or Instance Resource ID",
},
"server_down_count": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Server Down Count Metrics; 'disable': Disable Server Down Count Metrics;",
},
"server_down_percentage": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Server Down Percentage Metrics; 'disable': Disable Server Down Percentage Metrics;",
},
"server_error": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Server Error Metrics; 'disable': Disable Server Error Metrics;",
},
"sessions": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Sessions Metrics; 'disable': Disable Sessions Metrics;",
},
"ssl_cert": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable SSL Cert Metrics; 'disable': Disable SSL Cert Metrics;",
},
"throughput": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable Throughput Metrics; 'disable': Disable Throughput Metrics;",
},
"tps": {
Type: schema.TypeString, Optional: true, Default: "disable", Description: "'enable': Enable TPS Metrics; 'disable': Disable TPS Metrics;",
},
"uuid": {
Type: schema.TypeString, Optional: true, Computed: true, Description: "uuid of the object",
},
},
}
}
func resourceCloudServicesCloudProviderAzureMetricsCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client := meta.(Thunder)
logger := client.log
logger.Println("resourceCloudServicesCloudProviderAzureMetricsCreate()")
var diags diag.Diagnostics
if client.Host != "" {
obj := dataToEndpointCloudServicesCloudProviderAzureMetrics(d)
d.SetId(obj.GetId())
err := obj.Post(client.Token, client.Host, logger)
if err != nil {
return diag.FromErr(err)
}
return resourceCloudServicesCloudProviderAzureMetricsRead(ctx, d, meta)
}
return diags
}
func resourceCloudServicesCloudProviderAzureMetricsUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client := meta.(Thunder)
logger := client.log
logger.Println("resourceCloudServicesCloudProviderAzureMetricsUpdate()")
var diags diag.Diagnostics
if client.Host != "" {
obj := dataToEndpointCloudServicesCloudProviderAzureMetrics(d)
err := obj.Put(client.Token, client.Host, logger)
if err != nil {
return diag.FromErr(err)
}
return resourceCloudServicesCloudProviderAzureMetricsRead(ctx, d, meta)
}
return diags
}
func resourceCloudServicesCloudProviderAzureMetricsDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client := meta.(Thunder)
logger := client.log
logger.Println("resourceCloudServicesCloudProviderAzureMetricsDelete()")
var diags diag.Diagnostics
if client.Host != "" {
obj := dataToEndpointCloudServicesCloudProviderAzureMetrics(d)
err := obj.Delete(client.Token, client.Host, d.Id(), logger)
if err != nil {
return diag.FromErr(err)
}
}
return diags
}
func resourceCloudServicesCloudProviderAzureMetricsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client := meta.(Thunder)
logger := client.log
logger.Println("resourceCloudServicesCloudProviderAzureMetricsRead()")
var diags diag.Diagnostics
if client.Host != "" {
obj := dataToEndpointCloudServicesCloudProviderAzureMetrics(d)
err := obj.Get(client.Token, client.Host, d.Id(), logger)
if err != nil {
return diag.FromErr(err)
}
}
return diags
}
func dataToEndpointCloudServicesCloudProviderAzureMetrics(d *schema.ResourceData) edpt.CloudServicesCloudProviderAzureMetrics {
var ret edpt.CloudServicesCloudProviderAzureMetrics
ret.Inst.Action = d.Get("action").(string)
ret.Inst.ActivePartitions = d.Get("active_partitions").(string)
ret.Inst.Cps = d.Get("cps").(string)
ret.Inst.Cpu = d.Get("cpu").(string)
ret.Inst.Disk = d.Get("disk").(string)
ret.Inst.Interfaces = d.Get("interfaces").(string)
ret.Inst.Memory = d.Get("memory").(string)
ret.Inst.PacketDrop = d.Get("packet_drop").(string)
ret.Inst.PacketRate = d.Get("packet_rate").(string)
ret.Inst.ResourceId = d.Get("resource_id").(string)
ret.Inst.ServerDownCount = d.Get("server_down_count").(string)
ret.Inst.ServerDownPercentage = d.Get("server_down_percentage").(string)
ret.Inst.ServerError = d.Get("server_error").(string)
ret.Inst.Sessions = d.Get("sessions").(string)
ret.Inst.SslCert = d.Get("ssl_cert").(string)
ret.Inst.Throughput = d.Get("throughput").(string)
ret.Inst.Tps = d.Get("tps").(string)
//omit uuid
return ret
}