267 lines
6.1 KiB
Go
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",
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|