package forms

import "mime/multipart"

type SkuAndNode struct {
	Sku    *multipart.FileHeader `form:"sku" biding:"required"  swaggertype:"string" example:"the file of sku, named by skus.yaml"`
	Node   *multipart.FileHeader `form:"node" biding:"required" swaggertype:"string" example:"the file of node, named by nodes.yaml"`
	Dryrun bool                  `form:"dryrun" biding:"required" swaggertype:"string"`
}

type ReplaceProfileResponse struct {
	CodeMsgResponse
	VersionID uint64 `json:"version_id"`
}

type CalcNodeProfileReq struct {
	OrgId     uint64 `json:"org_id,string"`
	Provider  string `json:"provider"`
	Region    string `json:"region"`
	IsDevTier bool   `json:"is_dev_tier"`
}

type CalcNodeProfileResp struct {
	CodeMsgResponse
	ComponentNodeProfiles []*NodeProfilesWithComponentType `json:"component_node_profiles"`
}

type NodeProfilesWithComponentType struct {
	ComponentType string         `json:"component_type"` // core.proto:ComponentType.string()
	Profiles      []*NodeProfile `json:"profiles"`
}

type NodeProfile struct {
	Id               uint64 `json:"id,string"`
	Name             string `json:"name"`
	DefaultNodeNum   int    `json:"default_node_num"`
	MinStorageSizeGi int    `json:"min_storage_size_gi"`
	MaxStorageSizeGi int    `json:"max_storage_size_gi"`
}
