package stpolicy

type InfoStoragePolicyWithID struct {
	// ID of the storage policy
	ID uint64 `json:"id"`

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

	// Name of the storage policy
	Name string `json:"name"`

	// Description of the storage policy
	Description string `json:"description"`

	// List of pools in SEP for storage policy
	AccessSEPPools ListAccessSEPPools `json:"access_seps_pools"`

	// Status of the storage policy
	Status string `json:"status"`

	// Max IOPS for the sotrage policy
	LimitIOPS uint64 `json:"limit_iops"`

	// Which accounts and resource groups use the storage policy
	Usage Usage `json:"usage"`
}

type ListStoragePolicies struct {
	// List
	Data []ItemStoragePolicy `json:"data"`

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

type ItemStoragePolicy struct {
	// ID of the storage policy
	ID uint64 `json:"id"`

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

	// Name of the storage policy
	Name string `json:"name"`

	// Description of the storage policy
	Description string `json:"description"`

	// List of pools in SEP for storage policy
	AccessSEPPools ListAccessSEPPools `json:"access_seps_pools"`

	// Status of the storage policy
	Status string `json:"status"`

	// Max IOPS for the sotrage policy
	LimitIOPS uint64 `json:"limit_iops"`

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

	// Which accounts and resource groups use the storage policy
	Usage Usage `json:"usage"`
}

type InfoStoragePolicy struct {
	// ID of the storage policy
	ID uint64 `json:"id"`

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

	// Name of the storage policy
	Name string `json:"name"`

	// Description of the storage policy
	Description string `json:"description"`

	// List of pools in SEP for storage policy
	AccessSEPPools ListAccessSEPPools `json:"access_seps_pools"`

	// Status of the storage policy
	Status string `json:"status"`

	// Max IOPS for the storage policy
	LimitIOPS uint64 `json:"limit_iops"`

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

	// Which accounts and resource groups use the storage policy
	Usage Usage `json:"usage"`
}

type ListAccessSEPPools []AccessSEPPool

type AccessSEPPool struct {
	// SEP ID
	SEPID uint64 `json:"sep_id"`

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

	// Pool names
	PoolNames []string `json:"pool_names"`

	// Technical status of the SEP
	SepTechStatus string `json:"sep_tech_status"`
}

type Usage struct {
	// List of accounts
	Accounts []uint64 `json:"accounts"`

	// List of resource groups
	Resgroups []uint64 `json:"resgroups"`
}
