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", }, } }