package models

import (
	"github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts"
	"github.com/hashicorp/terraform-plugin-framework/types"
)

type K8SWgModel struct {
	// request fields
	K8SID         types.Int64    `tfsdk:"k8s_id"`
	Timeouts      timeouts.Value `tfsdk:"timeouts"`
	WorkerGroupID types.Int64    `tfsdk:"wg_id"`
	// response fields
	Id              types.String                `tfsdk:"id"`
	Annotations     types.List                  `tfsdk:"annotations"`
	CPU             types.Int64                 `tfsdk:"cpu"`
	DetailedInfo    []ItemDetailedInfoInWgModel `tfsdk:"detailed_info"`
	Disk            types.Int64                 `tfsdk:"disk"`
	GUID            types.String                `tfsdk:"guid"`
	Labels          types.List                  `tfsdk:"labels"`
	WorkerGroupName types.String                `tfsdk:"worker_group_name"`
	Num             types.Int64                 `tfsdk:"num"`
	RAM             types.Int64                 `tfsdk:"ram"`
	Taints          types.List                  `tfsdk:"taints"`
}

type ItemDetailedInfoInWgModel struct {
	ComputeId          types.Int64               `tfsdk:"compute_id"`
	Name               types.String              `tfsdk:"name"`
	Status             types.String              `tfsdk:"status"`
	TechStatus         types.String              `tfsdk:"tech_status"`
	Interfaces         []ItemInterfacesInWgModel `tfsdk:"interfaces"`
	NatableVinsIp      types.String              `tfsdk:"natable_vins_ip"`
	NatableVinsNetwork types.String              `tfsdk:"natable_vins_network"`
}

type ItemInterfacesInWgModel struct {
	DefGw     types.String `tfsdk:"def_gw"`
	IpAddress types.String `tfsdk:"ip_address"`
}
