You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.3 KiB
69 lines
2.3 KiB
package secgroup
|
|
|
|
import (
|
|
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
|
|
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/secgroup"
|
|
)
|
|
|
|
func flattenSecurityGroupResource(d *schema.ResourceData, securityGroup *secgroup.RecordSecurityGroup) {
|
|
d.Set("security_group_id", securityGroup.ID)
|
|
d.Set("account_id", securityGroup.AccountID)
|
|
d.Set("name", securityGroup.Name)
|
|
d.Set("description", securityGroup.Description)
|
|
d.Set("rules", flattenRules(securityGroup.Rules))
|
|
d.Set("created_at", securityGroup.CreatedAt)
|
|
d.Set("created_by", securityGroup.CreatedBy)
|
|
d.Set("updated_at", securityGroup.UpdatedAt)
|
|
d.Set("updated_by", securityGroup.UpdatedBy)
|
|
}
|
|
|
|
func flattenSecurityGroupList(securityGroupList *secgroup.ListSecurityGroups) []map[string]interface{} {
|
|
res := make([]map[string]interface{}, 0, len(securityGroupList.Data))
|
|
for _, v := range securityGroupList.Data {
|
|
temp := map[string]interface{}{
|
|
"account_id": v.AccountID,
|
|
"name": v.Name,
|
|
"description": v.Description,
|
|
"rules": flattenRules(v.Rules),
|
|
"created_at": v.CreatedAt,
|
|
"created_by": v.CreatedBy,
|
|
"security_group_id": v.ID,
|
|
"updated_at": v.UpdatedAt,
|
|
"updated_by": v.UpdatedBy,
|
|
}
|
|
|
|
res = append(res, temp)
|
|
}
|
|
|
|
return res
|
|
}
|
|
|
|
func flattenSecurityGroup(d *schema.ResourceData, securityGroup *secgroup.RecordSecurityGroup) {
|
|
d.Set("security_group_id", securityGroup.ID)
|
|
d.Set("account_id", securityGroup.AccountID)
|
|
d.Set("name", securityGroup.Name)
|
|
d.Set("description", securityGroup.Description)
|
|
d.Set("rules", flattenRules(securityGroup.Rules))
|
|
d.Set("created_at", securityGroup.CreatedAt)
|
|
d.Set("created_by", securityGroup.CreatedBy)
|
|
d.Set("updated_at", securityGroup.UpdatedAt)
|
|
d.Set("updated_by", securityGroup.UpdatedBy)
|
|
}
|
|
|
|
func flattenRules(rules secgroup.Rules) []map[string]interface{} {
|
|
res := make([]map[string]interface{}, 0, len(rules))
|
|
for _, rule := range rules {
|
|
temp := map[string]interface{}{
|
|
"id": rule.ID,
|
|
"direction": rule.Direction,
|
|
"ethertype": rule.Ethertype,
|
|
"protocol": rule.Protocol,
|
|
"port_range_min": rule.PortRangeMin,
|
|
"port_range_max": rule.PortRangeMax,
|
|
"remote_ip_prefix": rule.RemoteIPPrefix,
|
|
}
|
|
res = append(res, temp)
|
|
}
|
|
return res
|
|
}
|