package secgroup import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" ) func resourceSecurityGroupSchemaMake() map[string]*schema.Schema { res := map[string]*schema.Schema{ "account_id": { Type: schema.TypeInt, Required: true, }, "name": { Type: schema.TypeString, Required: true, }, "description": { Type: schema.TypeString, Optional: true, }, "rules": { Type: schema.TypeSet, Optional: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "direction": { Type: schema.TypeString, Required: true, ValidateFunc: validation.StringInSlice([]string{"inbound", "outbound"}, true), }, "ethertype": { Type: schema.TypeString, Optional: true, Default: "IPv4", ValidateFunc: validation.StringInSlice([]string{"IPv4", "IPv6"}, true), }, "protocol": { Type: schema.TypeString, Optional: true, ValidateFunc: validation.StringInSlice([]string{"icmp", "tcp", "udp"}, true), }, "port_range_min": { Type: schema.TypeInt, Optional: true, }, "port_range_max": { Type: schema.TypeInt, Optional: true, }, "remote_ip_prefix": { Type: schema.TypeString, Optional: true, }, "id": { Type: schema.TypeInt, Computed: true, }, }, }, }, "security_group_id": { Type: schema.TypeInt, Computed: true, }, "created_at": { Type: schema.TypeInt, Computed: true, }, "updated_at": { Type: schema.TypeInt, Computed: true, }, "created_by": { Type: schema.TypeString, Computed: true, }, "updated_by": { Type: schema.TypeString, Computed: true, }, } return res } func dataSourceSecurityGroupSchemaMake() map[string]*schema.Schema { res := map[string]*schema.Schema{ "security_group_id": { Type: schema.TypeInt, Required: true, }, "account_id": { Type: schema.TypeInt, Computed: true, }, "name": { Type: schema.TypeString, Computed: true, }, "description": { Type: schema.TypeString, Computed: true, }, "rules": { Type: schema.TypeList, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "id": { Type: schema.TypeInt, Computed: true, }, "direction": { Type: schema.TypeString, Computed: true, }, "ethertype": { Type: schema.TypeString, Computed: true, }, "protocol": { Type: schema.TypeString, Computed: true, }, "port_range_min": { Type: schema.TypeInt, Computed: true, }, "port_range_max": { Type: schema.TypeInt, Computed: true, }, "remote_ip_prefix": { Type: schema.TypeString, Computed: true, }, }, }, }, "created_at": { Type: schema.TypeInt, Computed: true, }, "updated_at": { Type: schema.TypeInt, Computed: true, }, "created_by": { Type: schema.TypeString, Computed: true, }, "updated_by": { Type: schema.TypeString, Computed: true, }, } return res } func dataSourceSecurityGroupListSchemaMake() map[string]*schema.Schema { res := map[string]*schema.Schema{ "page": { Type: schema.TypeInt, Optional: true, }, "size": { Type: schema.TypeInt, Optional: true, }, "by_id": { Type: schema.TypeInt, Optional: true, }, "account_id": { Type: schema.TypeInt, Optional: true, }, "name": { Type: schema.TypeString, Optional: true, }, "desc": { Type: schema.TypeString, Optional: true, }, "sort_by": { Type: schema.TypeString, Optional: true, }, "created_min": { Type: schema.TypeInt, Optional: true, }, "created_max": { Type: schema.TypeInt, Optional: true, }, "updated_min": { Type: schema.TypeInt, Optional: true, }, "updated_max": { Type: schema.TypeInt, Optional: true, }, "items": { Type: schema.TypeList, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "security_group_id": { Type: schema.TypeInt, Computed: true, }, "account_id": { Type: schema.TypeInt, Computed: true, }, "name": { Type: schema.TypeString, Computed: true, }, "description": { Type: schema.TypeString, Computed: true, }, "rules": { Type: schema.TypeList, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "id": { Type: schema.TypeInt, Computed: true, }, "direction": { Type: schema.TypeString, Computed: true, }, "ethertype": { Type: schema.TypeString, Computed: true, }, "protocol": { Type: schema.TypeString, Computed: true, }, "port_range_min": { Type: schema.TypeInt, Computed: true, }, "port_range_max": { Type: schema.TypeInt, Computed: true, }, "remote_ip_prefix": { Type: schema.TypeString, Computed: true, }, }, }, }, "created_at": { Type: schema.TypeInt, Computed: true, }, "updated_at": { Type: schema.TypeInt, Computed: true, }, "created_by": { Type: schema.TypeString, Computed: true, }, "updated_by": { Type: schema.TypeString, Computed: true, }, }, }, }, "entry_count": { Type: schema.TypeInt, Computed: true, }, } return res }