Files
Lucy Chen 58e0c05150 E2C: Add new error for alert rule quota (#107225)
* add new error for alert rule quota

* add alert rule group quota error

* make openapi3-gen

* revert message

* update translation

* prettier

* update text per review suggestion
2025-07-09 15:25:20 -04:00

425 lines
11 KiB
Go

package api
import (
"time"
"github.com/grafana/grafana/pkg/services/cloudmigration"
)
// swagger:parameters getCloudMigrationToken
type GetCloudMigrationToken struct {
}
// swagger:response cloudMigrationGetTokenResponse
type CloudMigrationGetTokenResponse struct {
// in: body
Body GetAccessTokenResponseDTO
}
type GetAccessTokenResponseDTO struct {
ID string `json:"id"`
DisplayName string `json:"displayName"`
ExpiresAt string `json:"expiresAt"`
FirstUsedAt string `json:"firstUsedAt"`
LastUsedAt string `json:"lastUsedAt"`
CreatedAt string `json:"createdAt"`
}
// swagger:response cloudMigrationCreateTokenResponse
type CloudMigrationCreateTokenResponse struct {
// in: body
Body CreateAccessTokenResponseDTO
}
type CreateAccessTokenResponseDTO struct {
Token string `json:"token"`
}
// swagger:parameters deleteCloudMigrationToken
type DeleteCloudMigrationToken struct {
// UID of a cloud migration token
// in: path
UID string `json:"uid"`
}
// swagger:response cloudMigrationDeleteTokenResponse
type CloudMigrationDeleteTokenResponse struct {
}
// swagger:response cloudMigrationSessionListResponse
type CloudMigrationSessionListResponse struct {
// in: body
Body CloudMigrationSessionListResponseDTO
}
type CloudMigrationSessionResponseDTO struct {
UID string `json:"uid"`
Slug string `json:"slug"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
type CloudMigrationSessionListResponseDTO struct {
Sessions []CloudMigrationSessionResponseDTO `json:"sessions"`
}
// swagger:parameters getSession
type GetCloudMigrationSessionRequest struct {
// UID of a migration session
// in: path
UID string `json:"uid"`
}
// swagger:response cloudMigrationSessionResponse
type CloudMigrationSessionResponse struct {
// in: body
Body CloudMigrationSessionResponseDTO
}
// swagger:parameters createSession
type CreateSession struct {
// in:body
// required:true
Body CloudMigrationSessionRequestDTO
}
type CloudMigrationSessionRequestDTO struct {
AuthToken string `json:"authToken"`
}
// swagger:parameters runCloudMigration
type RunCloudMigrationRequest struct {
// UID of a migration
// in: path
UID string `json:"uid"`
}
// swagger:response cloudMigrationRunResponse
type CloudMigrationRunResponse struct {
// in: body
Body MigrateDataResponseDTO
}
type MigrateDataResponseDTO struct {
RunUID string `json:"uid"`
Items []MigrateDataResponseItemDTO `json:"items"`
}
type MigrateDataResponseItemDTO struct {
Name string `json:"name"`
ParentName string `json:"parentName"`
// required:true
Type MigrateDataType `json:"type"`
// required:true
RefID string `json:"refId"`
// required:true
Status ItemStatus `json:"status"`
Message string `json:"message,omitempty"`
ErrorCode ItemErrorCode `json:"errorCode,omitempty"`
}
// swagger:enum MigrateDataType
type MigrateDataType string
const (
DashboardDataType MigrateDataType = "DASHBOARD"
DatasourceDataType MigrateDataType = "DATASOURCE"
FolderDataType MigrateDataType = "FOLDER"
LibraryElementDataType MigrateDataType = "LIBRARY_ELEMENT"
AlertRuleType MigrateDataType = "ALERT_RULE"
AlertRuleGroupType MigrateDataType = "ALERT_RULE_GROUP"
ContactPointType MigrateDataType = "CONTACT_POINT"
NotificationPolicyType MigrateDataType = "NOTIFICATION_POLICY"
NotificationTemplateType MigrateDataType = "NOTIFICATION_TEMPLATE"
MuteTimingType MigrateDataType = "MUTE_TIMING"
PluginDataType MigrateDataType = "PLUGIN"
)
// swagger:enum ItemStatus
type ItemStatus string
const (
ItemStatusOK ItemStatus = "OK"
ItemStatusWarning ItemStatus = "WARNING"
ItemStatusError ItemStatus = "ERROR"
ItemStatusPending ItemStatus = "PENDING"
ItemStatusUnknown ItemStatus = "UNKNOWN"
)
// swagger:enum ItemErrorCode
type ItemErrorCode string
const (
ErrAlertRulesQuotaReached ItemErrorCode = "ALERT_RULES_QUOTA_REACHED"
ErrAlertRulesGroupQuotaReached ItemErrorCode = "ALERT_RULES_GROUP_QUOTA_REACHED"
ErrDatasourceNameConflict ItemErrorCode = "DATASOURCE_NAME_CONFLICT"
ErrDatasourceInvalidURL ItemErrorCode = "DATASOURCE_INVALID_URL"
ErrDatasourceAlreadyManaged ItemErrorCode = "DATASOURCE_ALREADY_MANAGED"
ErrFolderNameConflict ItemErrorCode = "FOLDER_NAME_CONFLICT"
ErrDashboardAlreadyManaged ItemErrorCode = "DASHBOARD_ALREADY_MANAGED"
ErrLibraryElementNameConflict ItemErrorCode = "LIBRARY_ELEMENT_NAME_CONFLICT"
ErrUnsupportedDataType ItemErrorCode = "UNSUPPORTED_DATA_TYPE"
ErrResourceConflict ItemErrorCode = "RESOURCE_CONFLICT"
ErrUnexpectedStatus ItemErrorCode = "UNEXPECTED_STATUS_CODE"
ErrInternalServiceError ItemErrorCode = "INTERNAL_SERVICE_ERROR"
ErrGeneric ItemErrorCode = "GENERIC_ERROR"
)
// swagger:parameters getCloudMigrationRun
type GetMigrationRunParams struct {
// RunUID of a migration run
// in: path
RunUID string `json:"runUID"`
}
// swagger:parameters getCloudMigrationRunList
type GetCloudMigrationRunList struct {
// UID of a migration
// in: path
UID string `json:"uid"`
}
// swagger:response cloudMigrationRunListResponse
type CloudMigrationRunListResponse struct {
// in: body
Body CloudMigrationRunListDTO
}
type CloudMigrationRunListDTO struct {
Runs []MigrateDataResponseListDTO `json:"runs"`
}
type MigrateDataResponseListDTO struct {
RunUID string `json:"uid"`
}
// swagger:parameters deleteSession
type DeleteMigrationSessionRequest struct {
// UID of a migration session
// in: path
UID string `json:"uid"`
}
// utility funcs for converting to/from DTO
func convertSessionListToDTO(sl cloudmigration.CloudMigrationSessionListResponse) CloudMigrationSessionListResponseDTO {
slDTOs := make([]CloudMigrationSessionResponseDTO, len(sl.Sessions))
for i := 0; i < len(slDTOs); i++ {
s := sl.Sessions[i]
slDTOs[i] = CloudMigrationSessionResponseDTO{
UID: s.UID,
Slug: s.Slug,
Created: s.Created,
Updated: s.Updated,
}
}
return CloudMigrationSessionListResponseDTO{
Sessions: slDTOs,
}
}
// Base snapshot without results
type SnapshotDTO struct {
SnapshotUID string `json:"uid"`
Status SnapshotStatus `json:"status"`
SessionUID string `json:"sessionUid"`
Created time.Time `json:"created"`
Finished time.Time `json:"finished"`
}
// swagger:enum SnapshotStatus
type SnapshotStatus string
const (
SnapshotStatusInitializing SnapshotStatus = "INITIALIZING"
SnapshotStatusCreating SnapshotStatus = "CREATING"
SnapshotStatusPendingUpload SnapshotStatus = "PENDING_UPLOAD"
SnapshotStatusUploading SnapshotStatus = "UPLOADING"
SnapshotStatusPendingProcessing SnapshotStatus = "PENDING_PROCESSING"
SnapshotStatusProcessing SnapshotStatus = "PROCESSING"
SnapshotStatusFinished SnapshotStatus = "FINISHED"
SnapshotStatusCanceled SnapshotStatus = "CANCELED"
SnapshotStatusError SnapshotStatus = "ERROR"
SnapshotStatusUnknown SnapshotStatus = "UNKNOWN"
)
func fromSnapshotStatus(status cloudmigration.SnapshotStatus) SnapshotStatus {
switch status {
case cloudmigration.SnapshotStatusCreating:
return SnapshotStatusCreating
case cloudmigration.SnapshotStatusPendingUpload:
return SnapshotStatusPendingUpload
case cloudmigration.SnapshotStatusUploading:
return SnapshotStatusUploading
case cloudmigration.SnapshotStatusPendingProcessing:
return SnapshotStatusPendingProcessing
case cloudmigration.SnapshotStatusProcessing:
return SnapshotStatusProcessing
case cloudmigration.SnapshotStatusFinished:
return SnapshotStatusFinished
case cloudmigration.SnapshotStatusCanceled:
return SnapshotStatusCanceled
case cloudmigration.SnapshotStatusError:
return SnapshotStatusError
default:
return SnapshotStatusUnknown
}
}
// swagger:parameters createSnapshot
type CreateSnapshotRequest struct {
// UID of a session
// in: path
UID string `json:"uid"`
// in:body
// required:true
Body CreateSnapshotRequestDTO `json:"body"`
}
type CreateSnapshotRequestDTO struct {
ResourceTypes []MigrateDataType `json:"resourceTypes"`
}
// swagger:response createSnapshotResponse
type CreateSnapshotResponse struct {
// in: body
Body CreateSnapshotResponseDTO
}
type CreateSnapshotResponseDTO struct {
SnapshotUID string `json:"uid"`
}
// swagger:parameters getSnapshot
type GetSnapshotParams struct {
// ResultPage is used for pagination with ResultLimit
// in:query
// required:false
// default: 1
ResultPage int `json:"resultPage"`
// Max limit for snapshot results returned.
// in:query
// required:false
// default: 100
ResultLimit int `json:"resultLimit"`
// ResultSortColumn can be used to override the default system sort. Valid values are "name", "resource_type", and "status".
// in:query
// required:false
// default: default
ResultSortColumn string `json:"resultSortColumn"`
// ResultSortOrder is used with ResultSortColumn. Valid values are ASC and DESC.
// in:query
// required:false
// default: ASC
ResultSortOrder string `json:"resultSortOrder"`
// ErrorsOnly is used to only return resources with error statuses
// in:query
// required:false
// default: false
ErrorsOnly bool `json:"errorsOnly"`
// Session UID of a session
// in: path
UID string `json:"uid"`
// UID of a snapshot
// in: path
SnapshotUID string `json:"snapshotUid"`
}
// swagger:response getSnapshotResponse
type GetSnapshotResponse struct {
// in: body
Body GetSnapshotResponseDTO
}
type GetSnapshotResponseDTO struct {
SnapshotDTO
Results []MigrateDataResponseItemDTO `json:"results"`
StatsRollup SnapshotResourceStats `json:"stats"`
}
type SnapshotResourceStats struct {
Types map[MigrateDataType]int `json:"types"`
Statuses map[ItemStatus]int `json:"statuses"`
Total int `json:"total"`
}
// swagger:parameters getShapshotList
type GetSnapshotListParams struct {
// Page is used for pagination with limit
// in:query
// required:false
// default: 1
Page int `json:"page"`
// Max limit for results returned.
// in:query
// required:false
// default: 100
Limit int `json:"limit"`
// Session UID of a session
// in: path
UID string `json:"uid"`
// Sort with value latest to return results sorted in descending order.
// in:query
// required:false
Sort string `json:"sort"`
}
// swagger:response snapshotListResponse
type SnapshotListResponse struct {
// in: body
Body SnapshotListResponseDTO
}
type SnapshotListResponseDTO struct {
Snapshots []SnapshotDTO `json:"snapshots"`
}
// swagger:parameters uploadSnapshot
type UploadSnapshotParams struct {
// Session UID of a session
// in: path
UID string `json:"uid"`
// UID of a snapshot
// in: path
SnapshotUID string `json:"snapshotUid"`
}
// swagger:parameters cancelSnapshot
type CancelSnapshotParams struct {
// Session UID of a session
// in: path
UID string `json:"uid"`
// UID of a snapshot
// in: path
SnapshotUID string `json:"snapshotUid"`
}
// swagger:response resourceDependenciesResponse
type ResourceDependenciesResponse struct {
// in: body
Body ResourceDependenciesResponseDTO
}
// swagger:model ResourceDependenciesResponseDTO
type ResourceDependenciesResponseDTO struct {
ResourceDependencies []ResourceDependencyDTO `json:"resourceDependencies"`
}
// swagger:model ResourceDependencyDTO
type ResourceDependencyDTO struct {
ResourceType MigrateDataType `json:"resourceType"`
Dependencies []MigrateDataType `json:"dependencies"`
}