mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 16:32:20 +08:00

* 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
425 lines
11 KiB
Go
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"`
|
|
}
|