package vfpool

// Main information about vfpool device
type ItemVFPool struct {
	// AccountAccess
	AccountAccess []uint64 `json:"accountAccess"`

	// CreatedTime
	CreatedTime uint64 `json:"createdTime"`

	// Description
	Description string `json:"description"`

	// GID
	GID uint64 `json:"gid"`

	// GUID
	GUID uint64 `json:"guid"`

	// ID
	ID uint64 `json:"id"`

	// Name
	Name string `json:"name"`

	// RGAccess
	RGAccess []uint64 `json:"rgAccess"`

	// Status
	Status string `json:"status"`

	// UpdatedTime
	UpdatedTime uint64 `json:"updatedTime"`

	// VFS
	VFS []VFS `json:"vfs"`
}

// List of information about vfpool devices
type ListVFPool struct {
	Data []ItemVFPool `json:"data"`

	EntryCount uint64 `json:"entryCount"`
}

// Detailed information about vfpool device
type RecordVFPool struct {
	// AccountAccess
	AccountAccess []uint64 `json:"accountAccess"`

	// CreatedTime
	CreatedTime uint64 `json:"createdTime"`

	// Description
	Description string `json:"description"`

	// GID
	GID uint64 `json:"gid"`

	// GUID
	GUID uint64 `json:"guid"`

	// ID
	ID uint64 `json:"id"`

	// Name
	Name string `json:"name"`

	// RGAccess
	RGAccess []uint64 `json:"rgAccess"`

	// Status
	Status string `json:"status"`

	// UpdatedTime
	UpdatedTime uint64 `json:"updatedTime"`

	// VFS
	VFS []VFS `json:"vfs"`
}

// VFS struct
type VFS struct {
	// NodeID
	NodeID uint64 `json:"nodeId"`

	// UpdatedTime
	VFList VFList `json:"vfList"`
}

// VFList struct
type VFList []VFItem

// VFItem struct
type VFItem struct {
	// NicName
	NicName string `json:"nicName"`

	// VFSInfo list
	VFSInfo VFSInfoList `json:"vfsInfo"`
}

// VFSInfoList struct
type VFSInfoList []VFSInfoItem

// VFSInfoItem struct
type VFSInfoItem struct {
	// ID
	ID uint64 `json:"id"`

	// Claimed
	Claimed bool `json:"claimed"`

	// VM ID
	VMID uint64 `json:"vmId"`
}
