package image

// Main information about image
type ItemImage struct {
	// Account ID
	AccountID uint64 `json:"accountId"`

	// Architecture
	Architecture string `json:"architecture"`

	// Boot type
	BootType string `json:"bootType"`

	// Bootable
	Bootable bool `json:"bootable"`

	// CDROM
	CDROM bool `json:"cdrom"`

	// Description
	Description string `json:"desc"`

	// List drivers
	Drivers []string `json:"drivers"`

	// HotResize
	HotResize bool `json:"hotResize"`

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

	// Link to
	LinkTo uint64 `json:"linkTo"`

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

	// NetworkInterfaceNaming
	NetworkInterfaceNaming string `json:"networkInterfaceNaming"`

	// Pool
	Pool string `json:"pool"`

	// SepID
	SepID uint64 `json:"sepId"`

	// Size
	Size uint64 `json:"size"`

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

	// Storage policy ID
	StoragePolicyID uint64 `json:"storage_policy_id"`

	// Type
	Type string `json:"type"`

	// Username
	Username string `json:"username"`

	// Virtual
	Virtual bool `json:"virtual"`
}

// List of information about images
type ListImages struct {
	// Data
	Data []ItemImage `json:"data"`

	// Entry count
	EntryCount uint64 `json:"entryCount"`
}

// ListHistories of record image
type ListHistories []History

// History of record image
type History struct {
	// GUID
	GUID string `json:"guid"`

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

	// Timestamp
	Timestamp uint64 `json:"timestamp"`
}

// Detailed information about image
type RecordImage struct {
	// UNCPathj
	UNCPath string `json:"UNCPath"`

	// Account ID
	AccountID uint64 `json:"accountId"`

	// Access Control List
	ACL interface{} `json:"acl"`

	// Architecture
	Architecture string `json:"architecture"`

	// Boot type
	BootType string `json:"bootType"`

	// Bootable
	Bootable bool `json:"bootable"`

	// CdPresentedTo
	CdPresentedTo interface{} `json:"cdPresentedTo"`

	// ComputeCI ID
	ComputeCIID uint64 `json:"computeciId"`

	// Deleted time
	DeletedTime uint64 `json:"deletedTime"`

	// Description
	Description string `json:"desc"`

	// List of drivers
	Drivers []string `json:"drivers"`

	// Enabled
	Enabled bool `json:"enabled"`

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

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

	// History
	History ListHistories `json:"history"`

	// HotResize
	HotResize bool `json:"hotResize"`

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

	// Independent
	Independent bool `json:"independent"`

	// Last modified
	LastModified uint64 `json:"lastModified"`

	// Link to
	LinkTo uint64 `json:"linkTo"`

	// Links to
	LinksTo []uint64 `json:"linksTo"`

	// Milestones
	Milestones uint64 `json:"milestones"`

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

	// NetworkInterfaceNaming
	NetworkInterfaceNaming string `json:"networkInterfaceNaming"`

	// Password
	Password string `json:"password"`

	// Pool
	Pool string `json:"pool"`

	// Present to
	PresentTo map[string]uint64 `json:"presentTo"`

	// ProviderName
	ProviderName string `json:"provider_name"`

	// Purge attempts
	PurgeAttempts uint64 `json:"purgeAttempts"`

	// Resource ID
	ResID string `json:"resId"`

	// RescueCD
	RescueCD bool `json:"rescuecd"`

	// SepID
	SepID uint64 `json:"sepId"`

	// SharedWith list
	SharedWith []uint64 `json:"sharedWith"`

	// Size
	Size uint64 `json:"size"`

	// snapshot ID
	SnapshotID string `json:"snapshotId"`

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

	// Storage policy ID
	StoragePolicyID uint64 `json:"storage_policy_id"`

	// Tech status
	TechStatus string `json:"techStatus"`

	// Need to clean before destroy
	ToClean bool `json:"to_clean"`

	// Type
	Type string `json:"type"`

	// Username
	Username string `json:"username"`

	// Version
	Version string `json:"version"`
}
