package zone

// CPU alignment profile
type CpuAlignmentProfile struct {
	// Profile name
	Name string `json:"name"`

	// Vendor
	Vendor string `json:"vendor"`

	// Model
	Model string `json:"model"`
}

type ListZones struct {
	// Entry count
	EntryCount uint64 `json:"entryCount"`

	// Data
	Data []ItemZone `json:"data"`
}

// Detailed information about the zone record
type RecordZone struct {
	// If true, all nodes belonging to the given zone will be marked for autostart
	AutoStart bool `json:"autostart"`

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

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

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

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

	// List of associated account IDs
	AccountIDs []uint64 `json:"accountIds"`

	// List of associated bservice IDs
	BserviceIDs []uint64 `json:"bserviceIds"`

	// List of associated compute IDs
	ComputeIDs []uint64 `json:"computeIds"`

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

	// Deletable flag
	Deletable bool `json:"deletable"`

	// List of associated ExtNet IDs
	ExtnetIDs []uint64 `json:"extnetIds"`

	// List of associated K8s IDs
	K8SIDs []uint64 `json:"k8sIds"`

	// List of associated LB IDs
	LBIDs []uint64 `json:"lbsIds"`

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

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

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

	// List of associated Node IDs
	NodeIDs []uint64 `json:"nodeIds"`

	// List of associated VINS IDs
	VinsIDs []uint64 `json:"vinsIds"`

	// DRS
	DRS bool `json:"drs"`

	// DRS UID
	DRSUID string `json:"drs_uid"`

	// App ID
	AppID string `json:"app_id"`

	// Decort URL
	DecortURL string `json:"decort_url"`

	// DRS Name
	DRSName string `json:"drs_name"`

	// SSO URL
	SSOURL string `json:"sso_url"`

	// SSO type
	SSOType string `json:"sso_type"`

	// Ping address
	PingAddr string `json:"ping_addr"`

	// Broadcast address
	BroadcastAddr string `json:"broadcast_addr"`

	// Skip ssl verify
	SSLSkipVerify bool `json:"ssl_skip_verify"`

	// Domain
	Domain string `json:"domain"`

	// CPU alignment profiles
	CpuAlignmentProfiles []CpuAlignmentProfile `json:"cpu_alignment_profiles"`

	// Reserved CPU
	ReservedCPU uint64 `json:"reserved_cpu"`

	// Reserved RAM
	ReservedRAM uint64 `json:"reserved_ram"`

	// Storage Distributed Resource Scheduler
	SDRS bool `json:"sdrs"`

	// Mode of SDRS
	SDRSMode string `json:"sdrs_mode"`

	// Minimal level of logs
	LoggingLevel string `json:"logging_level"`
}

// A zone item from a list
type ItemZone struct {
	// App ID
	AppID string `json:"app_id"`

	// If true, all nodes belonging to the given zone will be marked for autostart
	AutoStart bool `json:"autostart"`

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

	// Decort URL
	DecortURL string `json:"decort_url"`

	// Deletable flag
	Deletable bool `json:"deletable"`

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

	// DRS
	DRS bool `json:"drs"`

	// DRS Name
	DRSName string `json:"drs_name"`

	// DRS UID
	DRSUID string `json:"drs_uid"`

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

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

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

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

	// List of associated Node IDs
	NodeIDs []uint64 `json:"nodeIds"`

	// SSO URL
	SSOURL string `json:"sso_url"`

	// SSO type
	SSOType string `json:"sso_type"`

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

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

	// Ping address
	PingAddr string `json:"ping_addr"`

	// Broadcast address
	BroadcastAddr string `json:"broadcast_addr"`

	// Skip ssl verify
	SSLSkipVerify bool `json:"ssl_skip_verify"`

	// Domain
	Domain string `json:"domain"`

	// CPU alignment profiles
	CpuAlignmentProfiles []CpuAlignmentProfile `json:"cpu_alignment_profiles"`

	// Reserved CPU
	ReservedCPU uint64 `json:"reserved_cpu"`

	// Reserved RAM
	ReservedRAM uint64 `json:"reserved_ram"`

	// Storage Distributed Resource Scheduler
	SDRS bool `json:"sdrs"`

	// Mode of SDRS
	SDRSMode string `json:"sdrs_mode"`

	// Minimal level of logs
	LoggingLevel string `json:"logging_level"`
}
