package models

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

type K8SWgListModel struct {
	// request fields
	K8SID    types.Int64    `tfsdk:"k8s_id"`
	Timeouts timeouts.Value `tfsdk:"timeouts"`

	// response fields
	Id    types.String      `tfsdk:"id"`
	Items []ItemWgListModel `tfsdk:"items"`
}

type ItemWgListModel struct {
	Annotations     types.List                        `tfsdk:"annotations"`
	CPU             types.Int64                       `tfsdk:"cpu"`
	DetailedInfo    []ItemDetailedInfoDataSourceModel `tfsdk:"detailed_info"`
	Disk            types.Int64                       `tfsdk:"disk"`
	GUID            types.String                      `tfsdk:"guid"`
	Labels          types.List                        `tfsdk:"labels"`
	WorkerGroupID   types.Int64                       `tfsdk:"worker_group_id"`
	WorkerGroupName types.String                      `tfsdk:"worker_group_name"`
	Num             types.Int64                       `tfsdk:"num"`
	RAM             types.Int64                       `tfsdk:"ram"`
	Taints          types.List                        `tfsdk:"taints"`
}

type ItemDetailedInfoInWgListModel 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 ItemInterfacesInWgListModel struct {
	DefGw     types.String `tfsdk:"def_gw"`
	IpAddress types.String `tfsdk:"ip_address"`
}
