|
|
|
package models
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts"
|
|
|
|
"github.com/hashicorp/terraform-plugin-framework/attr"
|
|
|
|
"github.com/hashicorp/terraform-plugin-framework/types"
|
|
|
|
)
|
|
|
|
|
|
|
|
type ResourceRGModel struct {
|
|
|
|
// request fields - required
|
|
|
|
AccountID types.Int64 `tfsdk:"account_id"`
|
|
|
|
GID types.Int64 `tfsdk:"gid"`
|
|
|
|
Name types.String `tfsdk:"name"`
|
|
|
|
|
|
|
|
// request fields - optional
|
|
|
|
DefNetType types.String `tfsdk:"def_net_type"`
|
|
|
|
IPCIDR types.String `tfsdk:"ipcidr"`
|
|
|
|
ExtNetID types.Int64 `tfsdk:"ext_net_id"`
|
|
|
|
ExtIP types.String `tfsdk:"ext_ip"`
|
|
|
|
Owner types.String `tfsdk:"owner"`
|
|
|
|
Quota types.Object `tfsdk:"quota"`
|
|
|
|
Access types.List `tfsdk:"access"`
|
|
|
|
DefNet types.Object `tfsdk:"def_net"`
|
|
|
|
Description types.String `tfsdk:"description"`
|
|
|
|
Force types.Bool `tfsdk:"force"`
|
|
|
|
Permanently types.Bool `tfsdk:"permanently"`
|
|
|
|
RegisterComputes types.Bool `tfsdk:"register_computes"`
|
|
|
|
Restore types.Bool `tfsdk:"restore"`
|
|
|
|
Enable types.Bool `tfsdk:"enable"`
|
|
|
|
Timeouts timeouts.Value `tfsdk:"timeouts"`
|
|
|
|
|
|
|
|
// response fields
|
|
|
|
RGID types.Int64 `tfsdk:"rg_id"`
|
|
|
|
LastUpdated types.String `tfsdk:"last_updated"`
|
|
|
|
AccountName types.String `tfsdk:"account_name"`
|
|
|
|
ACL types.List `tfsdk:"acl"`
|
|
|
|
ComputeFeatures types.List `tfsdk:"compute_features"`
|
|
|
|
CPUAllocationParameter types.String `tfsdk:"cpu_allocation_parameter"`
|
|
|
|
CPUAllocationRatio types.Float64 `tfsdk:"cpu_allocation_ratio"`
|
|
|
|
DefNetID types.Int64 `tfsdk:"def_net_id"`
|
|
|
|
DeletedBy types.String `tfsdk:"deleted_by"`
|
|
|
|
DeletedTime types.Int64 `tfsdk:"deleted_time"`
|
|
|
|
Dirty types.Bool `tfsdk:"dirty"`
|
|
|
|
GUID types.Int64 `tfsdk:"guid"`
|
|
|
|
Id types.String `tfsdk:"id"`
|
|
|
|
LockStatus types.String `tfsdk:"lock_status"`
|
|
|
|
Milestones types.Int64 `tfsdk:"milestones"`
|
|
|
|
ResTypes types.List `tfsdk:"res_types"`
|
|
|
|
Secret types.String `tfsdk:"secret"`
|
|
|
|
Status types.String `tfsdk:"status"`
|
|
|
|
UniqPools types.List `tfsdk:"uniq_pools"`
|
|
|
|
UpdatedBy types.String `tfsdk:"updated_by"`
|
|
|
|
UpdatedTime types.Int64 `tfsdk:"updated_time"`
|
|
|
|
VINS types.List `tfsdk:"vins"`
|
|
|
|
VMS types.List `tfsdk:"vms"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type ItemACLModel struct {
|
|
|
|
Explicit types.Bool `tfsdk:"explicit"`
|
|
|
|
GUID types.String `tfsdk:"guid"`
|
|
|
|
Right types.String `tfsdk:"right"`
|
|
|
|
Status types.String `tfsdk:"status"`
|
|
|
|
Type types.String `tfsdk:"type"`
|
|
|
|
UserGroupID types.String `tfsdk:"user_group_id"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type QuotaModel struct {
|
|
|
|
CPU types.Int64 `tfsdk:"cpu"`
|
|
|
|
Ram types.Int64 `tfsdk:"ram"`
|
|
|
|
Disk types.Int64 `tfsdk:"disk"`
|
|
|
|
ExtTraffic types.Int64 `tfsdk:"ext_traffic"`
|
|
|
|
ExtIps types.Int64 `tfsdk:"ext_ips"`
|
|
|
|
GpuUnits types.Int64 `tfsdk:"gpu_units"`
|
|
|
|
CuD types.Int64 `tfsdk:"cu_d"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type AccessModel struct {
|
|
|
|
User types.String `tfsdk:"user"`
|
|
|
|
Right types.String `tfsdk:"right"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type DefNetModel struct {
|
|
|
|
NetType types.String `tfsdk:"net_type"`
|
|
|
|
NetId types.Int64 `tfsdk:"net_id"`
|
|
|
|
}
|
|
|
|
|
|
|
|
var ItemAccess = map[string]attr.Type{
|
|
|
|
"user": types.StringType,
|
|
|
|
"right": types.StringType,
|
|
|
|
}
|
|
|
|
|
|
|
|
var ItemDefNet = map[string]attr.Type{
|
|
|
|
"net_type": types.StringType,
|
|
|
|
"net_id": types.Int64Type,
|
|
|
|
}
|
|
|
|
|
|
|
|
var ItemACL = map[string]attr.Type{
|
|
|
|
"explicit": types.BoolType,
|
|
|
|
"guid": types.StringType,
|
|
|
|
"right": types.StringType,
|
|
|
|
"status": types.StringType,
|
|
|
|
"type": types.StringType,
|
|
|
|
"user_group_id": types.StringType,
|
|
|
|
}
|
|
|
|
|
|
|
|
var ItemQuota = map[string]attr.Type{
|
|
|
|
"cpu": types.Int64Type,
|
|
|
|
"ram": types.Int64Type,
|
|
|
|
"disk": types.Int64Type,
|
|
|
|
"ext_traffic": types.Int64Type,
|
|
|
|
"ext_ips": types.Int64Type,
|
|
|
|
"gpu_units": types.Int64Type,
|
|
|
|
"cu_d": types.Int64Type,
|
|
|
|
}
|
|
|
|
|
|
|
|
// Contains returns true if accessList contains a as an element. Otherwise it returns false.
|
|
|
|
func (a *AccessModel) Contains(accessList []AccessModel) bool {
|
|
|
|
for _, accessElem := range accessList {
|
|
|
|
if a.User.Equal(accessElem.User) && a.Right.Equal(accessElem.Right) {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|