package schemas

import (
	"github.com/hashicorp/terraform-plugin-framework/resource/schema"
	"github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault"
	"github.com/hashicorp/terraform-plugin-framework/types"
)

func MakeSchemaResourceK8CI() map[string]schema.Attribute {
	return map[string]schema.Attribute{
		"name": schema.StringAttribute{
			Required:    true,
			Description: "K8CI name",
		},
		"version": schema.StringAttribute{
			Required: true,
		},
		"master_driver": schema.StringAttribute{
			Required: true,
		},
		"master_image_id": schema.Int64Attribute{
			Required: true,
		},
		"max_master_count": schema.Int64Attribute{
			Required: true,
		},
		"max_worker_count": schema.Int64Attribute{
			Required: true,
		},
		"worker_image_id": schema.Int64Attribute{
			Required: true,
		},
		"worker_driver": schema.StringAttribute{
			Required: true,
		},
		"network_plugins": schema.ListAttribute{
			Required:    true,
			ElementType: types.StringType,
		},
		"enabled": schema.BoolAttribute{
			Optional: true,
		},
		"permanently": schema.BoolAttribute{
			Optional: true,
			Computed: true,
			Default:  booldefault.StaticBool(true),
			// default value is true
		},
		"restore": schema.BoolAttribute{
			Optional: true,
			Computed: true,
			Default:  booldefault.StaticBool(true),
			// default value is true
		},
		"desc": schema.StringAttribute{
			Optional: true,
		},
		"gid": schema.Int64Attribute{
			Computed: true,
		},
		"guid": schema.Int64Attribute{
			Computed: true,
		},
		"k8ci_id": schema.Int64Attribute{
			Computed: true,
		},
		"id": schema.StringAttribute{
			Computed: true,
		},
		"lb_image_id": schema.Int64Attribute{
			Computed: true,
		},
		"milestones": schema.Int64Attribute{
			Computed: true,
		},
		"shared_with": schema.ListAttribute{
			Optional:    true,
			ElementType: types.Int64Type,
		},
		"status": schema.StringAttribute{
			Computed: true,
		},
	}
}
