Skip to content

Commit

Permalink
Flexible MySQL: Adding apis for BackupAndExport/LTR Backup (Azure#20675)
Browse files Browse the repository at this point in the history
* Flexible MySQL: Adding apis for BackupAndExport/LTR Backup

* Fixing model validation errors

* Fixing lint errors

* Fixing swagger api version

* Prettier fix

* Fixing lint check

* Adding existing apis in readme for new tag

* Changing prebackup response parameter and adding base class for storage details.

* changes after PR comments

1. change name from "PreBackup" to "ValidateBackup"
2. add tag in backupFormat "INTERNAL - DO NOT USE"
3. change the order of securitydefinitions  , title, paths

* updated description for "CollatedFormat" do not use.

just added description for "CollatedFormat" to not use.

Co-authored-by: sumitkumams <107923889+sumitkumams@users.noreply.github.com>
  • Loading branch information
rishky-msft and sumitkumams authored Sep 23, 2022
1 parent 0f161c7 commit 64adedb
Show file tree
Hide file tree
Showing 4 changed files with 412 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,338 @@
{
"swagger": "2.0",
"consumes": [
"application/json"
],
"host": "management.azure.com",
"info": {
"title": "MySQLManagementClient",
"description": "The Microsoft Azure management API provides create, read, update, and delete functionality for Azure MySQL resources including servers, databases, firewall rules and configurations.",
"version": "2022-08-01-privatepreview"
},
"securityDefinitions": {
"azure_auth": {
"type": "oauth2",
"authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
"flow": "implicit",
"description": "Azure Active Directory OAuth2 Flow",
"scopes": {
"user_impersonation": "impersonate your user account"
}
}
},
"parameters": {
"ServerNameParameter": {
"name": "serverName",
"in": "path",
"required": true,
"type": "string",
"description": "The name of the server.",
"x-ms-parameter-location": "method"
}
},
"paths": {
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/backupAndExport": {
"post": {
"tags": [
"Servers"
],
"operationId": "Servers_BackupAndExport",
"x-ms-examples": {
"Create and Export Backup": {
"$ref": "./examples/BackupAndExport.json"
}
},
"description": "Exports the backup of the given server by creating a backup if not existing.",
"parameters": [
{
"$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter"
},
{
"$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter"
},
{
"$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter"
},
{
"$ref": "#/parameters/ServerNameParameter"
},
{
"name": "parameters",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/BackupAndExportRequest"
},
"description": "The required parameters for creating and exporting backup of the given server."
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/BackupAndExportResponse"
}
},
"202": {
"description": "Accepted"
},
"default": {
"description": "Error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/CloudError"
}
}
},
"x-ms-long-running-operation": true,
"x-ms-long-running-operation-options": {
"final-state-via": "azure-async-operation"
}
}
},
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/validateBackup": {
"post": {
"tags": [
"Servers"
],
"operationId": "Servers_ValidateBackup",
"x-ms-examples": {
"Validate Backup": {
"$ref": "./examples/ValidateBackup.json"
}
},
"description": "Validates if backup can be performed for given server.",
"parameters": [
{
"$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter"
},
{
"$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter"
},
{
"$ref": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter"
},
{
"$ref": "#/parameters/ServerNameParameter"
},
{
"name": "parameters",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ValidateBackupRequest"
},
"description": "The required parameters for validating if backup can be performed for given server."
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ValidateBackupResponse"
}
},
"default": {
"description": "Error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/CloudError"
}
}
}
}
}
},
"definitions": {
"BackupRequestBase": {
"description": "BackupRequestBase is the base for all backup request.",
"required": [
"backupSettings"
],
"type": "object",
"properties": {
"backupSettings": {
"$ref": "#/definitions/BackupSettings",
"description": "Backup Settings"
}
}
},
"BackupAndExportRequest": {
"description": "BackupAndExport API Request",
"type": "object",
"allOf": [
{
"$ref": "#/definitions/BackupRequestBase"
}
],
"required": [
"backupSettings",
"targetDetails"
],
"properties": {
"targetDetails": {
"$ref": "#/definitions/BackupStoreDetails",
"description": "Backup Target Store Details"
}
}
},
"ValidateBackupRequest": {
"description": "ValidateBackup API Request.",
"type": "object",
"allOf": [
{
"$ref": "#/definitions/BackupRequestBase"
}
]
},
"BackupStoreDetails": {
"description": "Details about the target where the backup content will be stored.",
"required": [
"objectType"
],
"type": "object",
"properties": {
"objectType": {
"description": "Type of the specific object - used for deserializing",
"type": "string",
"readOnly": false
}
},
"discriminator": "objectType"
},
"FullBackupStoreDetails": {
"description": "FullBackupStoreDetails is used for scenarios where backup data is streamed/copied over to a storage destination.",
"type": "object",
"required": [
"sasUriList"
],
"allOf": [
{
"$ref": "#/definitions/BackupStoreDetails"
}
],
"properties": {
"sasUriList": {
"description": "SASUriList of storage containers where backup data is to be streamed/copied.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"BackupSettings": {
"description": "Backup Settings",
"type": "object",
"required": [
"backupName"
],
"properties": {
"backupName": {
"type": "string",
"description": "Backup Name for the current backup"
},
"backupFormat": {
"description": "Backup Format for the current backup. (CollatedFormat is INTERNAL – DO NOT USE)",
"enum": [
"None",
"CollatedFormat"
],
"type": "string",
"x-ms-enum": {
"name": "BackupFormat",
"modelAsString": true
}
}
}
},
"ValidateBackupResponseProperties": {
"description": "ValidateBackup Response Properties",
"type": "object",
"required": [
"numberOfContainers"
],
"properties": {
"numberOfContainers": {
"format": "int32",
"description": "Estimated no of storage containers required for resource data to be backed up.",
"type": "integer"
}
}
},
"BackupAndExportResponseProperties": {
"description": "BackupAndExport Response Properties",
"type": "object",
"required": [
"datasourceSizeInBytes",
"dataTransferredInBytes",
"backupMetadata"
],
"properties": {
"datasourceSizeInBytes": {
"format": "int64",
"description": "Size of datasource in bytes",
"type": "integer"
},
"dataTransferredInBytes": {
"format": "int64",
"description": "Data transferred in bytes",
"type": "integer"
},
"backupMetadata": {
"description": "Metadata related to backup to be stored for restoring resource in key-value pairs.",
"type": "string"
}
}
},
"BackupAndExportResponse": {
"type": "object",
"properties": {
"properties": {
"$ref": "#/definitions/BackupAndExportResponseProperties",
"x-ms-client-flatten": true,
"description": "The response properties of an backup and export operation."
}
},
"allOf": [
{
"$ref": "../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource"
}
],
"description": "Represents BackupAndExport API Response"
},
"ValidateBackupResponse": {
"type": "object",
"properties": {
"properties": {
"$ref": "#/definitions/ValidateBackupResponseProperties",
"x-ms-client-flatten": true,
"description": "The response properties of an pre backup operation."
}
},
"description": "Represents ValidateBackup API Response"
},
"CloudError": {
"type": "object",
"x-ms-external": true,
"properties": {
"error": {
"$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/ErrorResponse",
"description": "The resource management error response."
}
},
"description": "An error response from the Batch service."
}
},
"produces": [
"application/json"
],
"schemes": [
"https"
],
"security": [
{
"azure_auth": [
"user_impersonation"
]
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"parameters": {
"api-version": "2022-08-01-privatepreview",
"serverName": "mysqltestserver",
"resourceGroupName": "TestGroup",
"subscriptionId": "ffffffff-ffff-ffff-ffff-ffffffffffff",
"parameters": {
"targetDetails": {
"objectType": "FullBackupStoreDetails",
"sasUriList": [
"sasuri1",
"sasuri2"
]
},
"backupSettings": {
"backupName": "customer-backup-name"
}
}
},
"responses": {
"200": {
"body": {
"id": "/subscriptions/ffffffff-ffff-ffff-ffff-ffffffffffff/resourceGroups/TestGroup/providers/Microsoft.DBforMySQL/flexibleServers/mysqltestserver/backups/customer-backup-name",
"name": "customer-backup-name",
"type": "Microsoft.DBforMySQL/flexibleServers/backups",
"properties": {
"datasourceSizeInBytes": 1024,
"dataTransferredInBytes": 1024,
"backupMetadata": "{\"key1\":\"value1\",\"key2\":\"value2\"}"
}
}
},
"202": {}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"parameters": {
"api-version": "2022-08-01-privatepreview",
"serverName": "mysqltestserver",
"resourceGroupName": "TestGroup",
"subscriptionId": "ffffffff-ffff-ffff-ffff-ffffffffffff",
"parameters": {
"backupSettings": {
"backupName": "customer-backup-name"
}
}
},
"responses": {
"200": {
"body": {
"properties": {
"numberOfContainers": 1
}
}
}
}
}
Loading

0 comments on commit 64adedb

Please sign in to comment.