This commit is contained in:
2024-11-12 13:41:38 +03:00
parent 040af43607
commit 36879efd58
517 changed files with 37877 additions and 1900 deletions

View File

@@ -1,12 +1,16 @@
package grid
import (
"encoding/json"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/grid"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/flattens"
)
func flattenGrid(d *schema.ResourceData, grid *grid.RecordGrid) {
d.Set("ckey", grid.CKey)
d.Set("meta", flattens.FlattenMeta(grid.Meta))
d.Set("auth_broker", flattens.FlattenMeta(grid.AuthBroker))
d.Set("name", grid.Name)
d.Set("flag", grid.Flag)
@@ -88,3 +92,83 @@ func flattenGridSeps(seps map[string]map[string]grid.DiskUsage) []map[string]int
}
return res
}
func flattenGridSettings(d *schema.ResourceData, gridSettings *grid.RecordSettingsGrid) {
limits, _ := json.Marshal(gridSettings.Limits)
d.Set("allowed_ports", gridSettings.Allowedports)
d.Set("cleanup_retention_period", gridSettings.CleanupRetentionPeriod)
d.Set("docker_registry", flattenDockerRegistry(gridSettings.DockerRegistry))
d.Set("enable_uptime_monitor", gridSettings.EnableUptimeMonitor)
d.Set("extnet_max_pre_reservations_num", gridSettings.ExtnetMaxPreReservationsNum)
d.Set("healthcheck_notifications", flattenHealthcheckNotifications(gridSettings.HealthcheckNotifications))
d.Set("k8s_cleanup_enabled", gridSettings.K8sCleanupEnabled)
d.Set("limits", string(limits))
d.Set("location_url", gridSettings.LocationURL)
d.Set("net_qos", flattenNetQOS(gridSettings.NetQOS))
d.Set("networks", gridSettings.Networks)
d.Set("prometheus", flattenPrometheus(gridSettings.Prometheus))
d.Set("vins_max_pre_reservations_num", gridSettings.VinsMaxPreReservationsNum)
d.Set("vnfdev_mgmt_net_range", gridSettings.VnfdevMgmtNetRange)
}
func flattenDockerRegistry(dr grid.DockerRegistry) []map[string]interface{} {
res := make([]map[string]interface{}, 0)
temp := map[string]interface{}{
"password": dr.Password,
"server": dr.Server,
"username": dr.Username,
}
res = append(res, temp)
return res
}
func flattenHealthcheckNotifications(hn grid.HealthcheckNotifications) []map[string]interface{} {
res := make([]map[string]interface{}, 0)
temp := map[string]interface{}{
"emails": flattenEmails(hn.Emails),
}
res = append(res, temp)
return res
}
func flattenEmails(emails []grid.Emails) []map[string]interface{} {
res := make([]map[string]interface{}, 0, len(emails))
for _, email := range emails {
temp := map[string]interface{}{
"address": email.Address,
"enabled": email.Enabled,
}
res = append(res, temp)
}
return res
}
func flattenNetQOS(netQOS grid.NetQOS) []map[string]interface{} {
res := make([]map[string]interface{}, 0)
temp := map[string]interface{}{
"extnet": flattenSettingsNetQOS(netQOS.ExtNet),
"vins": flattenSettingsNetQOS(netQOS.VINS),
}
res = append(res, temp)
return res
}
func flattenSettingsNetQOS(qos grid.SettingsNetQOS) []map[string]interface{} {
res := make([]map[string]interface{}, 0)
temp := map[string]interface{}{
"e_rate": qos.ERate,
"in_burst": qos.InBurst,
"in_rate": qos.InRate,
}
res = append(res, temp)
return res
}
func flattenPrometheus(pr grid.Prometheus) []map[string]interface{} {
res := make([]map[string]interface{}, 0)
temp := map[string]interface{}{
"scrape_interval": pr.ScrapeInterval,
}
res = append(res, temp)
return res
}