Files
terraform-provider-decort/internal/service/cloudbroker/vmfolder/schema.go
2026-10-30 16:23:20 +03:00

267 lines
6.1 KiB
Go

package vmfolder
import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
)
func resourceVMFolderSchemaMake() map[string]*schema.Schema {
return map[string]*schema.Schema{
"rg_id": {
Type: schema.TypeInt,
Required: true,
Description: "ID of the resource group",
},
"name": {
Type: schema.TypeString,
Required: true,
Description: "Name of the vm folder",
},
"parent_id": {
Type: schema.TypeInt,
Optional: true,
Description: "ID of the parent vm folder",
},
"computes_move": {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"compute_ids": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
Description: "IDs of computes to move",
},
"folder_id": {
Type: schema.TypeInt,
Optional: true,
Description: "ID of the target vm folder. If not set, computes are moved to this vm folder",
},
},
},
Description: "Move computes to the vm folder",
},
"acl_access": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"user": {
Type: schema.TypeString,
Required: true,
Description: "User or group name to grant access",
},
"right": {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice([]string{"R", "RCX", "ARCXDU"}, false),
Description: "Access rights to set, one of 'R', 'RCX' or 'ARCXDU'",
},
},
},
Description: "ACL access rules for the vm folder",
},
"folder_id": {
Type: schema.TypeInt,
Computed: true,
Description: "ID of the vm folder",
},
"gid": {
Type: schema.TypeInt,
Computed: true,
Description: "Grid ID",
},
"acl": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: aclSchemaMake(),
},
Description: "Access control list of the vm folder",
},
"created_time": {
Type: schema.TypeInt,
Computed: true,
Description: "Time of creation",
},
"status": {
Type: schema.TypeString,
Computed: true,
Description: "Status of the vm folder",
},
"compute_ids": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
Description: "IDs of computes in the vm folder",
},
"updated_time": {
Type: schema.TypeInt,
Computed: true,
Description: "Time of update",
},
}
}
func dataSourceVMFolderSchemaMake() map[string]*schema.Schema {
return map[string]*schema.Schema{
"folder_id": {
Type: schema.TypeInt,
Required: true,
Description: "ID of the vm folder",
},
"rg_id": {
Type: schema.TypeInt,
Computed: true,
Description: "ID of the resource group",
},
"gid": {
Type: schema.TypeInt,
Computed: true,
Description: "Grid ID",
},
"name": {
Type: schema.TypeString,
Computed: true,
Description: "Name of the vm folder",
},
"acl": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: aclSchemaMake(),
},
Description: "Access control list of the vm folder",
},
"created_time": {
Type: schema.TypeInt,
Computed: true,
Description: "Time of creation",
},
"parent_id": {
Type: schema.TypeInt,
Computed: true,
Description: "ID of the parent vm folder",
},
"status": {
Type: schema.TypeString,
Computed: true,
Description: "Status of the vm folder",
},
"compute_ids": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
Description: "IDs of computes in the vm folder",
},
"updated_time": {
Type: schema.TypeInt,
Computed: true,
Description: "Time of update",
},
}
}
func dataSourceVMFolderListSchemaMake() map[string]*schema.Schema {
return map[string]*schema.Schema{
"rg_id": {
Type: schema.TypeInt,
Required: true,
Description: "Find by resource group ID",
},
"page": {
Type: schema.TypeInt,
Optional: true,
Description: "Page number",
},
"size": {
Type: schema.TypeInt,
Optional: true,
Description: "Page size",
},
"items": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeInt,
Computed: true,
Description: "ID of the vm folder",
},
"parent_id": {
Type: schema.TypeInt,
Computed: true,
Description: "ID of the parent vm folder",
},
"name": {
Type: schema.TypeString,
Computed: true,
Description: "Name of the vm folder",
},
"acl": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: aclSchemaMake(),
},
Description: "Access control list of the vm folder",
},
"status": {
Type: schema.TypeString,
Computed: true,
Description: "Status of the vm folder",
},
"vm_count": {
Type: schema.TypeInt,
Computed: true,
Description: "Number of computes in the vm folder",
},
},
},
},
"entry_count": {
Type: schema.TypeInt,
Computed: true,
},
}
}
func aclSchemaMake() map[string]*schema.Schema {
return map[string]*schema.Schema{
"explicit": {
Type: schema.TypeBool,
Computed: true,
Description: "Whether the access is explicit",
},
"right": {
Type: schema.TypeString,
Computed: true,
Description: "Access rights",
},
"status": {
Type: schema.TypeString,
Computed: true,
Description: "Access status",
},
"type": {
Type: schema.TypeString,
Computed: true,
Description: "Access type",
},
"user_group_id": {
Type: schema.TypeString,
Computed: true,
Description: "User or group ID",
},
}
}