package recoveryservicesbackup // Copyright (c) Microsoft and contributors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // // See the License for the specific language governing permissions and // limitations under the License. // // Code generated by Microsoft (R) AutoRest Code Generator. // Changes may cause incorrect behavior and will be lost if the code is regenerated. import ( "encoding/json" "errors" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/date" "github.com/Azure/go-autorest/autorest/to" "net/http" ) // BackupEngineType enumerates the values for backup engine type. type BackupEngineType string const ( // BackupEngineTypeAzureBackupServerEngine specifies the backup engine type azure backup server engine state for backup // engine type. BackupEngineTypeAzureBackupServerEngine BackupEngineType = "AzureBackupServerEngine" // BackupEngineTypeDpmBackupEngine specifies the backup engine type dpm backup engine state for backup engine type. BackupEngineTypeDpmBackupEngine BackupEngineType = "DpmBackupEngine" ) // BackupItemType enumerates the values for backup item type. type BackupItemType string const ( // AzureSQLDb specifies the azure sql db state for backup item type. AzureSQLDb BackupItemType = "AzureSqlDb" // Client specifies the client state for backup item type. Client BackupItemType = "Client" // Exchange specifies the exchange state for backup item type. Exchange BackupItemType = "Exchange" // FileFolder specifies the file folder state for backup item type. FileFolder BackupItemType = "FileFolder" // GenericDataSource specifies the generic data source state for backup item type. GenericDataSource BackupItemType = "GenericDataSource" // Invalid specifies the invalid state for backup item type. Invalid BackupItemType = "Invalid" // Sharepoint specifies the sharepoint state for backup item type. Sharepoint BackupItemType = "Sharepoint" // SQLDB specifies the sqldb state for backup item type. SQLDB BackupItemType = "SQLDB" // SystemState specifies the system state state for backup item type. SystemState BackupItemType = "SystemState" // VM specifies the vm state for backup item type. VM BackupItemType = "VM" // VMwareVM specifies the v mware vm state for backup item type. VMwareVM BackupItemType = "VMwareVM" ) // BackupManagementType enumerates the values for backup management type. type BackupManagementType string const ( // BackupManagementTypeAzureBackupServer specifies the backup management type azure backup server state for backup // management type. BackupManagementTypeAzureBackupServer BackupManagementType = "AzureBackupServer" // BackupManagementTypeAzureIaasVM specifies the backup management type azure iaas vm state for backup management type. BackupManagementTypeAzureIaasVM BackupManagementType = "AzureIaasVM" // BackupManagementTypeAzureSQL specifies the backup management type azure sql state for backup management type. BackupManagementTypeAzureSQL BackupManagementType = "AzureSql" // BackupManagementTypeDPM specifies the backup management type dpm state for backup management type. BackupManagementTypeDPM BackupManagementType = "DPM" // BackupManagementTypeInvalid specifies the backup management type invalid state for backup management type. BackupManagementTypeInvalid BackupManagementType = "Invalid" // BackupManagementTypeMAB specifies the backup management type mab state for backup management type. BackupManagementTypeMAB BackupManagementType = "MAB" ) // ContainerType enumerates the values for container type. type ContainerType string const ( // ContainerTypeAzureBackupServerContainer specifies the container type azure backup server container state for // container type. ContainerTypeAzureBackupServerContainer ContainerType = "AzureBackupServerContainer" // ContainerTypeAzureSQLContainer specifies the container type azure sql container state for container type. ContainerTypeAzureSQLContainer ContainerType = "AzureSqlContainer" // ContainerTypeCluster specifies the container type cluster state for container type. ContainerTypeCluster ContainerType = "Cluster" // ContainerTypeDPMContainer specifies the container type dpm container state for container type. ContainerTypeDPMContainer ContainerType = "DPMContainer" // ContainerTypeIaasVMContainer specifies the container type iaas vm container state for container type. ContainerTypeIaasVMContainer ContainerType = "IaasVMContainer" // ContainerTypeIaasVMServiceContainer specifies the container type iaas vm service container state for container type. ContainerTypeIaasVMServiceContainer ContainerType = "IaasVMServiceContainer" // ContainerTypeInvalid specifies the container type invalid state for container type. ContainerTypeInvalid ContainerType = "Invalid" // ContainerTypeMABContainer specifies the container type mab container state for container type. ContainerTypeMABContainer ContainerType = "MABContainer" // ContainerTypeUnknown specifies the container type unknown state for container type. ContainerTypeUnknown ContainerType = "Unknown" // ContainerTypeVCenter specifies the container type v center state for container type. ContainerTypeVCenter ContainerType = "VCenter" // ContainerTypeWindows specifies the container type windows state for container type. ContainerTypeWindows ContainerType = "Windows" ) // DataSourceType enumerates the values for data source type. type DataSourceType string const ( // DataSourceTypeAzureSQLDb specifies the data source type azure sql db state for data source type. DataSourceTypeAzureSQLDb DataSourceType = "AzureSqlDb" // DataSourceTypeClient specifies the data source type client state for data source type. DataSourceTypeClient DataSourceType = "Client" // DataSourceTypeExchange specifies the data source type exchange state for data source type. DataSourceTypeExchange DataSourceType = "Exchange" // DataSourceTypeFileFolder specifies the data source type file folder state for data source type. DataSourceTypeFileFolder DataSourceType = "FileFolder" // DataSourceTypeGenericDataSource specifies the data source type generic data source state for data source type. DataSourceTypeGenericDataSource DataSourceType = "GenericDataSource" // DataSourceTypeInvalid specifies the data source type invalid state for data source type. DataSourceTypeInvalid DataSourceType = "Invalid" // DataSourceTypeSharepoint specifies the data source type sharepoint state for data source type. DataSourceTypeSharepoint DataSourceType = "Sharepoint" // DataSourceTypeSQLDB specifies the data source type sqldb state for data source type. DataSourceTypeSQLDB DataSourceType = "SQLDB" // DataSourceTypeSystemState specifies the data source type system state state for data source type. DataSourceTypeSystemState DataSourceType = "SystemState" // DataSourceTypeVM specifies the data source type vm state for data source type. DataSourceTypeVM DataSourceType = "VM" // DataSourceTypeVMwareVM specifies the data source type v mware vm state for data source type. DataSourceTypeVMwareVM DataSourceType = "VMwareVM" ) // DayOfWeek enumerates the values for day of week. type DayOfWeek string const ( // Friday specifies the friday state for day of week. Friday DayOfWeek = "Friday" // Monday specifies the monday state for day of week. Monday DayOfWeek = "Monday" // Saturday specifies the saturday state for day of week. Saturday DayOfWeek = "Saturday" // Sunday specifies the sunday state for day of week. Sunday DayOfWeek = "Sunday" // Thursday specifies the thursday state for day of week. Thursday DayOfWeek = "Thursday" // Tuesday specifies the tuesday state for day of week. Tuesday DayOfWeek = "Tuesday" // Wednesday specifies the wednesday state for day of week. Wednesday DayOfWeek = "Wednesday" ) // EnhancedSecurityState enumerates the values for enhanced security state. type EnhancedSecurityState string const ( // EnhancedSecurityStateDisabled specifies the enhanced security state disabled state for enhanced security state. EnhancedSecurityStateDisabled EnhancedSecurityState = "Disabled" // EnhancedSecurityStateEnabled specifies the enhanced security state enabled state for enhanced security state. EnhancedSecurityStateEnabled EnhancedSecurityState = "Enabled" // EnhancedSecurityStateInvalid specifies the enhanced security state invalid state for enhanced security state. EnhancedSecurityStateInvalid EnhancedSecurityState = "Invalid" ) // HealthState enumerates the values for health state. type HealthState string const ( // HealthStateActionRequired specifies the health state action required state for health state. HealthStateActionRequired HealthState = "ActionRequired" // HealthStateActionSuggested specifies the health state action suggested state for health state. HealthStateActionSuggested HealthState = "ActionSuggested" // HealthStateInvalid specifies the health state invalid state for health state. HealthStateInvalid HealthState = "Invalid" // HealthStatePassed specifies the health state passed state for health state. HealthStatePassed HealthState = "Passed" ) // HealthStatus enumerates the values for health status. type HealthStatus string const ( // HealthStatusActionRequired specifies the health status action required state for health status. HealthStatusActionRequired HealthStatus = "ActionRequired" // HealthStatusActionSuggested specifies the health status action suggested state for health status. HealthStatusActionSuggested HealthStatus = "ActionSuggested" // HealthStatusInvalid specifies the health status invalid state for health status. HealthStatusInvalid HealthStatus = "Invalid" // HealthStatusPassed specifies the health status passed state for health status. HealthStatusPassed HealthStatus = "Passed" ) // HTTPStatusCode enumerates the values for http status code. type HTTPStatusCode string const ( // Accepted specifies the accepted state for http status code. Accepted HTTPStatusCode = "Accepted" // Ambiguous specifies the ambiguous state for http status code. Ambiguous HTTPStatusCode = "Ambiguous" // BadGateway specifies the bad gateway state for http status code. BadGateway HTTPStatusCode = "BadGateway" // BadRequest specifies the bad request state for http status code. BadRequest HTTPStatusCode = "BadRequest" // Conflict specifies the conflict state for http status code. Conflict HTTPStatusCode = "Conflict" // Continue specifies the continue state for http status code. Continue HTTPStatusCode = "Continue" // Created specifies the created state for http status code. Created HTTPStatusCode = "Created" // ExpectationFailed specifies the expectation failed state for http status code. ExpectationFailed HTTPStatusCode = "ExpectationFailed" // Forbidden specifies the forbidden state for http status code. Forbidden HTTPStatusCode = "Forbidden" // Found specifies the found state for http status code. Found HTTPStatusCode = "Found" // GatewayTimeout specifies the gateway timeout state for http status code. GatewayTimeout HTTPStatusCode = "GatewayTimeout" // Gone specifies the gone state for http status code. Gone HTTPStatusCode = "Gone" // HTTPVersionNotSupported specifies the http version not supported state for http status code. HTTPVersionNotSupported HTTPStatusCode = "HttpVersionNotSupported" // InternalServerError specifies the internal server error state for http status code. InternalServerError HTTPStatusCode = "InternalServerError" // LengthRequired specifies the length required state for http status code. LengthRequired HTTPStatusCode = "LengthRequired" // MethodNotAllowed specifies the method not allowed state for http status code. MethodNotAllowed HTTPStatusCode = "MethodNotAllowed" // Moved specifies the moved state for http status code. Moved HTTPStatusCode = "Moved" // MovedPermanently specifies the moved permanently state for http status code. MovedPermanently HTTPStatusCode = "MovedPermanently" // MultipleChoices specifies the multiple choices state for http status code. MultipleChoices HTTPStatusCode = "MultipleChoices" // NoContent specifies the no content state for http status code. NoContent HTTPStatusCode = "NoContent" // NonAuthoritativeInformation specifies the non authoritative information state for http status code. NonAuthoritativeInformation HTTPStatusCode = "NonAuthoritativeInformation" // NotAcceptable specifies the not acceptable state for http status code. NotAcceptable HTTPStatusCode = "NotAcceptable" // NotFound specifies the not found state for http status code. NotFound HTTPStatusCode = "NotFound" // NotImplemented specifies the not implemented state for http status code. NotImplemented HTTPStatusCode = "NotImplemented" // NotModified specifies the not modified state for http status code. NotModified HTTPStatusCode = "NotModified" // OK specifies the ok state for http status code. OK HTTPStatusCode = "OK" // PartialContent specifies the partial content state for http status code. PartialContent HTTPStatusCode = "PartialContent" // PaymentRequired specifies the payment required state for http status code. PaymentRequired HTTPStatusCode = "PaymentRequired" // PreconditionFailed specifies the precondition failed state for http status code. PreconditionFailed HTTPStatusCode = "PreconditionFailed" // ProxyAuthenticationRequired specifies the proxy authentication required state for http status code. ProxyAuthenticationRequired HTTPStatusCode = "ProxyAuthenticationRequired" // Redirect specifies the redirect state for http status code. Redirect HTTPStatusCode = "Redirect" // RedirectKeepVerb specifies the redirect keep verb state for http status code. RedirectKeepVerb HTTPStatusCode = "RedirectKeepVerb" // RedirectMethod specifies the redirect method state for http status code. RedirectMethod HTTPStatusCode = "RedirectMethod" // RequestedRangeNotSatisfiable specifies the requested range not satisfiable state for http status code. RequestedRangeNotSatisfiable HTTPStatusCode = "RequestedRangeNotSatisfiable" // RequestEntityTooLarge specifies the request entity too large state for http status code. RequestEntityTooLarge HTTPStatusCode = "RequestEntityTooLarge" // RequestTimeout specifies the request timeout state for http status code. RequestTimeout HTTPStatusCode = "RequestTimeout" // RequestURITooLong specifies the request uri too long state for http status code. RequestURITooLong HTTPStatusCode = "RequestUriTooLong" // ResetContent specifies the reset content state for http status code. ResetContent HTTPStatusCode = "ResetContent" // SeeOther specifies the see other state for http status code. SeeOther HTTPStatusCode = "SeeOther" // ServiceUnavailable specifies the service unavailable state for http status code. ServiceUnavailable HTTPStatusCode = "ServiceUnavailable" // SwitchingProtocols specifies the switching protocols state for http status code. SwitchingProtocols HTTPStatusCode = "SwitchingProtocols" // TemporaryRedirect specifies the temporary redirect state for http status code. TemporaryRedirect HTTPStatusCode = "TemporaryRedirect" // Unauthorized specifies the unauthorized state for http status code. Unauthorized HTTPStatusCode = "Unauthorized" // UnsupportedMediaType specifies the unsupported media type state for http status code. UnsupportedMediaType HTTPStatusCode = "UnsupportedMediaType" // Unused specifies the unused state for http status code. Unused HTTPStatusCode = "Unused" // UpgradeRequired specifies the upgrade required state for http status code. UpgradeRequired HTTPStatusCode = "UpgradeRequired" // UseProxy specifies the use proxy state for http status code. UseProxy HTTPStatusCode = "UseProxy" ) // JobOperationType enumerates the values for job operation type. type JobOperationType string const ( // JobOperationTypeBackup specifies the job operation type backup state for job operation type. JobOperationTypeBackup JobOperationType = "Backup" // JobOperationTypeConfigureBackup specifies the job operation type configure backup state for job operation type. JobOperationTypeConfigureBackup JobOperationType = "ConfigureBackup" // JobOperationTypeDeleteBackupData specifies the job operation type delete backup data state for job operation type. JobOperationTypeDeleteBackupData JobOperationType = "DeleteBackupData" // JobOperationTypeDisableBackup specifies the job operation type disable backup state for job operation type. JobOperationTypeDisableBackup JobOperationType = "DisableBackup" // JobOperationTypeInvalid specifies the job operation type invalid state for job operation type. JobOperationTypeInvalid JobOperationType = "Invalid" // JobOperationTypeRegister specifies the job operation type register state for job operation type. JobOperationTypeRegister JobOperationType = "Register" // JobOperationTypeRestore specifies the job operation type restore state for job operation type. JobOperationTypeRestore JobOperationType = "Restore" // JobOperationTypeUnRegister specifies the job operation type un register state for job operation type. JobOperationTypeUnRegister JobOperationType = "UnRegister" ) // JobStatus enumerates the values for job status. type JobStatus string const ( // JobStatusCancelled specifies the job status cancelled state for job status. JobStatusCancelled JobStatus = "Cancelled" // JobStatusCancelling specifies the job status cancelling state for job status. JobStatusCancelling JobStatus = "Cancelling" // JobStatusCompleted specifies the job status completed state for job status. JobStatusCompleted JobStatus = "Completed" // JobStatusCompletedWithWarnings specifies the job status completed with warnings state for job status. JobStatusCompletedWithWarnings JobStatus = "CompletedWithWarnings" // JobStatusFailed specifies the job status failed state for job status. JobStatusFailed JobStatus = "Failed" // JobStatusInProgress specifies the job status in progress state for job status. JobStatusInProgress JobStatus = "InProgress" // JobStatusInvalid specifies the job status invalid state for job status. JobStatusInvalid JobStatus = "Invalid" ) // JobSupportedAction enumerates the values for job supported action. type JobSupportedAction string const ( // JobSupportedActionCancellable specifies the job supported action cancellable state for job supported action. JobSupportedActionCancellable JobSupportedAction = "Cancellable" // JobSupportedActionInvalid specifies the job supported action invalid state for job supported action. JobSupportedActionInvalid JobSupportedAction = "Invalid" // JobSupportedActionRetriable specifies the job supported action retriable state for job supported action. JobSupportedActionRetriable JobSupportedAction = "Retriable" ) // JobType enumerates the values for job type. type JobType string const ( // JobTypeAzureIaaSVMJob specifies the job type azure iaa svm job state for job type. JobTypeAzureIaaSVMJob JobType = "AzureIaaSVMJob" // JobTypeDpmJob specifies the job type dpm job state for job type. JobTypeDpmJob JobType = "DpmJob" // JobTypeMabJob specifies the job type mab job state for job type. JobTypeMabJob JobType = "MabJob" ) // MabServerType enumerates the values for mab server type. type MabServerType string const ( // MabServerTypeAzureBackupServerContainer specifies the mab server type azure backup server container state for mab // server type. MabServerTypeAzureBackupServerContainer MabServerType = "AzureBackupServerContainer" // MabServerTypeAzureSQLContainer specifies the mab server type azure sql container state for mab server type. MabServerTypeAzureSQLContainer MabServerType = "AzureSqlContainer" // MabServerTypeCluster specifies the mab server type cluster state for mab server type. MabServerTypeCluster MabServerType = "Cluster" // MabServerTypeDPMContainer specifies the mab server type dpm container state for mab server type. MabServerTypeDPMContainer MabServerType = "DPMContainer" // MabServerTypeIaasVMContainer specifies the mab server type iaas vm container state for mab server type. MabServerTypeIaasVMContainer MabServerType = "IaasVMContainer" // MabServerTypeIaasVMServiceContainer specifies the mab server type iaas vm service container state for mab server // type. MabServerTypeIaasVMServiceContainer MabServerType = "IaasVMServiceContainer" // MabServerTypeInvalid specifies the mab server type invalid state for mab server type. MabServerTypeInvalid MabServerType = "Invalid" // MabServerTypeMABContainer specifies the mab server type mab container state for mab server type. MabServerTypeMABContainer MabServerType = "MABContainer" // MabServerTypeUnknown specifies the mab server type unknown state for mab server type. MabServerTypeUnknown MabServerType = "Unknown" // MabServerTypeVCenter specifies the mab server type v center state for mab server type. MabServerTypeVCenter MabServerType = "VCenter" // MabServerTypeWindows specifies the mab server type windows state for mab server type. MabServerTypeWindows MabServerType = "Windows" ) // MonthOfYear enumerates the values for month of year. type MonthOfYear string const ( // MonthOfYearApril specifies the month of year april state for month of year. MonthOfYearApril MonthOfYear = "April" // MonthOfYearAugust specifies the month of year august state for month of year. MonthOfYearAugust MonthOfYear = "August" // MonthOfYearDecember specifies the month of year december state for month of year. MonthOfYearDecember MonthOfYear = "December" // MonthOfYearFebruary specifies the month of year february state for month of year. MonthOfYearFebruary MonthOfYear = "February" // MonthOfYearInvalid specifies the month of year invalid state for month of year. MonthOfYearInvalid MonthOfYear = "Invalid" // MonthOfYearJanuary specifies the month of year january state for month of year. MonthOfYearJanuary MonthOfYear = "January" // MonthOfYearJuly specifies the month of year july state for month of year. MonthOfYearJuly MonthOfYear = "July" // MonthOfYearJune specifies the month of year june state for month of year. MonthOfYearJune MonthOfYear = "June" // MonthOfYearMarch specifies the month of year march state for month of year. MonthOfYearMarch MonthOfYear = "March" // MonthOfYearMay specifies the month of year may state for month of year. MonthOfYearMay MonthOfYear = "May" // MonthOfYearNovember specifies the month of year november state for month of year. MonthOfYearNovember MonthOfYear = "November" // MonthOfYearOctober specifies the month of year october state for month of year. MonthOfYearOctober MonthOfYear = "October" // MonthOfYearSeptember specifies the month of year september state for month of year. MonthOfYearSeptember MonthOfYear = "September" ) // ObjectType enumerates the values for object type. type ObjectType string const ( // ObjectTypeIaasVMBackupRequest specifies the object type iaas vm backup request state for object type. ObjectTypeIaasVMBackupRequest ObjectType = "IaasVMBackupRequest" ) // ObjectTypeILRRequest enumerates the values for object type ilr request. type ObjectTypeILRRequest string const ( // ObjectTypeIaasVMILRRegistrationRequest specifies the object type iaas vmilr registration request state for object // type ilr request. ObjectTypeIaasVMILRRegistrationRequest ObjectTypeILRRequest = "IaasVMILRRegistrationRequest" ) // ObjectTypeOperationResultInfoBase enumerates the values for object type operation result info base. type ObjectTypeOperationResultInfoBase string const ( // ObjectTypeExportJobsOperationResultInfo specifies the object type export jobs operation result info state for object // type operation result info base. ObjectTypeExportJobsOperationResultInfo ObjectTypeOperationResultInfoBase = "ExportJobsOperationResultInfo" // ObjectTypeOperationResultInfo specifies the object type operation result info state for object type operation result // info base. ObjectTypeOperationResultInfo ObjectTypeOperationResultInfoBase = "OperationResultInfo" ) // ObjectTypeOperationStatusExtendedInfo enumerates the values for object type operation status extended info. type ObjectTypeOperationStatusExtendedInfo string const ( // ObjectTypeOperationStatusJobExtendedInfo specifies the object type operation status job extended info state for // object type operation status extended info. ObjectTypeOperationStatusJobExtendedInfo ObjectTypeOperationStatusExtendedInfo = "OperationStatusJobExtendedInfo" // ObjectTypeOperationStatusJobsExtendedInfo specifies the object type operation status jobs extended info state for // object type operation status extended info. ObjectTypeOperationStatusJobsExtendedInfo ObjectTypeOperationStatusExtendedInfo = "OperationStatusJobsExtendedInfo" // ObjectTypeOperationStatusProvisionILRExtendedInfo specifies the object type operation status provision ilr extended // info state for object type operation status extended info. ObjectTypeOperationStatusProvisionILRExtendedInfo ObjectTypeOperationStatusExtendedInfo = "OperationStatusProvisionILRExtendedInfo" ) // ObjectTypeRecoveryPoint enumerates the values for object type recovery point. type ObjectTypeRecoveryPoint string const ( // ObjectTypeGenericRecoveryPoint specifies the object type generic recovery point state for object type recovery // point. ObjectTypeGenericRecoveryPoint ObjectTypeRecoveryPoint = "GenericRecoveryPoint" // ObjectTypeIaasVMRecoveryPoint specifies the object type iaas vm recovery point state for object type recovery point. ObjectTypeIaasVMRecoveryPoint ObjectTypeRecoveryPoint = "IaasVMRecoveryPoint" ) // ObjectTypeRestoreRequest enumerates the values for object type restore request. type ObjectTypeRestoreRequest string const ( // ObjectTypeIaasVMRestoreRequest specifies the object type iaas vm restore request state for object type restore // request. ObjectTypeIaasVMRestoreRequest ObjectTypeRestoreRequest = "IaasVMRestoreRequest" ) // OperationStatusValues enumerates the values for operation status values. type OperationStatusValues string const ( // OperationStatusValuesCanceled specifies the operation status values canceled state for operation status values. OperationStatusValuesCanceled OperationStatusValues = "Canceled" // OperationStatusValuesFailed specifies the operation status values failed state for operation status values. OperationStatusValuesFailed OperationStatusValues = "Failed" // OperationStatusValuesInProgress specifies the operation status values in progress state for operation status values. OperationStatusValuesInProgress OperationStatusValues = "InProgress" // OperationStatusValuesInvalid specifies the operation status values invalid state for operation status values. OperationStatusValuesInvalid OperationStatusValues = "Invalid" // OperationStatusValuesSucceeded specifies the operation status values succeeded state for operation status values. OperationStatusValuesSucceeded OperationStatusValues = "Succeeded" ) // ProtectableItemType enumerates the values for protectable item type. type ProtectableItemType string const ( // ProtectableItemTypeIaaSVMProtectableItem specifies the protectable item type iaa svm protectable item state for // protectable item type. ProtectableItemTypeIaaSVMProtectableItem ProtectableItemType = "IaaSVMProtectableItem" // ProtectableItemTypeMicrosoftClassicComputevirtualMachines specifies the protectable item type microsoft classic // computevirtual machines state for protectable item type. ProtectableItemTypeMicrosoftClassicComputevirtualMachines ProtectableItemType = "Microsoft.ClassicCompute/virtualMachines" // ProtectableItemTypeMicrosoftComputevirtualMachines specifies the protectable item type microsoft computevirtual // machines state for protectable item type. ProtectableItemTypeMicrosoftComputevirtualMachines ProtectableItemType = "Microsoft.Compute/virtualMachines" ) // ProtectableObjectType enumerates the values for protectable object type. type ProtectableObjectType string const ( // ProtectableObjectTypeAzureBackupServerContainer specifies the protectable object type azure backup server container // state for protectable object type. ProtectableObjectTypeAzureBackupServerContainer ProtectableObjectType = "AzureBackupServerContainer" // ProtectableObjectTypeAzureSQLContainer specifies the protectable object type azure sql container state for // protectable object type. ProtectableObjectTypeAzureSQLContainer ProtectableObjectType = "AzureSqlContainer" // ProtectableObjectTypeDPMContainer specifies the protectable object type dpm container state for protectable object // type. ProtectableObjectTypeDPMContainer ProtectableObjectType = "DPMContainer" // ProtectableObjectTypeIaaSVMContainer specifies the protectable object type iaa svm container state for protectable // object type. ProtectableObjectTypeIaaSVMContainer ProtectableObjectType = "IaaSVMContainer" // ProtectableObjectTypeMABWindowsContainer specifies the protectable object type mab windows container state for // protectable object type. ProtectableObjectTypeMABWindowsContainer ProtectableObjectType = "MABWindowsContainer" // ProtectableObjectTypeMicrosoftClassicComputevirtualMachines specifies the protectable object type microsoft classic // computevirtual machines state for protectable object type. ProtectableObjectTypeMicrosoftClassicComputevirtualMachines ProtectableObjectType = "Microsoft.ClassicCompute/virtualMachines" // ProtectableObjectTypeMicrosoftComputevirtualMachines specifies the protectable object type microsoft computevirtual // machines state for protectable object type. ProtectableObjectTypeMicrosoftComputevirtualMachines ProtectableObjectType = "Microsoft.Compute/virtualMachines" ) // ProtectedItemState enumerates the values for protected item state. type ProtectedItemState string const ( // ProtectedItemStateInvalid specifies the protected item state invalid state for protected item state. ProtectedItemStateInvalid ProtectedItemState = "Invalid" // ProtectedItemStateIRPending specifies the protected item state ir pending state for protected item state. ProtectedItemStateIRPending ProtectedItemState = "IRPending" // ProtectedItemStateProtected specifies the protected item state protected state for protected item state. ProtectedItemStateProtected ProtectedItemState = "Protected" // ProtectedItemStateProtectionError specifies the protected item state protection error state for protected item // state. ProtectedItemStateProtectionError ProtectedItemState = "ProtectionError" // ProtectedItemStateProtectionPaused specifies the protected item state protection paused state for protected item // state. ProtectedItemStateProtectionPaused ProtectedItemState = "ProtectionPaused" // ProtectedItemStateProtectionStopped specifies the protected item state protection stopped state for protected item // state. ProtectedItemStateProtectionStopped ProtectedItemState = "ProtectionStopped" ) // ProtectedItemType enumerates the values for protected item type. type ProtectedItemType string const ( // ProtectedItemTypeAzureIaaSVMProtectedItem specifies the protected item type azure iaa svm protected item state for // protected item type. ProtectedItemTypeAzureIaaSVMProtectedItem ProtectedItemType = "AzureIaaSVMProtectedItem" // ProtectedItemTypeDPMProtectedItem specifies the protected item type dpm protected item state for protected item // type. ProtectedItemTypeDPMProtectedItem ProtectedItemType = "DPMProtectedItem" // ProtectedItemTypeMabFileFolderProtectedItem specifies the protected item type mab file folder protected item state // for protected item type. ProtectedItemTypeMabFileFolderProtectedItem ProtectedItemType = "MabFileFolderProtectedItem" // ProtectedItemTypeMicrosoftClassicComputevirtualMachines specifies the protected item type microsoft classic // computevirtual machines state for protected item type. ProtectedItemTypeMicrosoftClassicComputevirtualMachines ProtectedItemType = "Microsoft.ClassicCompute/virtualMachines" // ProtectedItemTypeMicrosoftComputevirtualMachines specifies the protected item type microsoft computevirtual machines // state for protected item type. ProtectedItemTypeMicrosoftComputevirtualMachines ProtectedItemType = "Microsoft.Compute/virtualMachines" // ProtectedItemTypeMicrosoftSqlserversdatabases specifies the protected item type microsoft sqlserversdatabases state // for protected item type. ProtectedItemTypeMicrosoftSqlserversdatabases ProtectedItemType = "Microsoft.Sql/servers/databases" ) // ProtectionState enumerates the values for protection state. type ProtectionState string const ( // ProtectionStateInvalid specifies the protection state invalid state for protection state. ProtectionStateInvalid ProtectionState = "Invalid" // ProtectionStateIRPending specifies the protection state ir pending state for protection state. ProtectionStateIRPending ProtectionState = "IRPending" // ProtectionStateProtected specifies the protection state protected state for protection state. ProtectionStateProtected ProtectionState = "Protected" // ProtectionStateProtectionError specifies the protection state protection error state for protection state. ProtectionStateProtectionError ProtectionState = "ProtectionError" // ProtectionStateProtectionPaused specifies the protection state protection paused state for protection state. ProtectionStateProtectionPaused ProtectionState = "ProtectionPaused" // ProtectionStateProtectionStopped specifies the protection state protection stopped state for protection state. ProtectionStateProtectionStopped ProtectionState = "ProtectionStopped" ) // ProtectionStatus enumerates the values for protection status. type ProtectionStatus string const ( // ProtectionStatusInvalid specifies the protection status invalid state for protection status. ProtectionStatusInvalid ProtectionStatus = "Invalid" // ProtectionStatusNotProtected specifies the protection status not protected state for protection status. ProtectionStatusNotProtected ProtectionStatus = "NotProtected" // ProtectionStatusProtected specifies the protection status protected state for protection status. ProtectionStatusProtected ProtectionStatus = "Protected" // ProtectionStatusProtecting specifies the protection status protecting state for protection status. ProtectionStatusProtecting ProtectionStatus = "Protecting" ) // RecoveryPointTierStatus enumerates the values for recovery point tier status. type RecoveryPointTierStatus string const ( // RecoveryPointTierStatusDeleted specifies the recovery point tier status deleted state for recovery point tier // status. RecoveryPointTierStatusDeleted RecoveryPointTierStatus = "Deleted" // RecoveryPointTierStatusDisabled specifies the recovery point tier status disabled state for recovery point tier // status. RecoveryPointTierStatusDisabled RecoveryPointTierStatus = "Disabled" // RecoveryPointTierStatusInvalid specifies the recovery point tier status invalid state for recovery point tier // status. RecoveryPointTierStatusInvalid RecoveryPointTierStatus = "Invalid" // RecoveryPointTierStatusValid specifies the recovery point tier status valid state for recovery point tier status. RecoveryPointTierStatusValid RecoveryPointTierStatus = "Valid" ) // RecoveryPointTierType enumerates the values for recovery point tier type. type RecoveryPointTierType string const ( // RecoveryPointTierTypeHardenedRP specifies the recovery point tier type hardened rp state for recovery point tier // type. RecoveryPointTierTypeHardenedRP RecoveryPointTierType = "HardenedRP" // RecoveryPointTierTypeInstantRP specifies the recovery point tier type instant rp state for recovery point tier type. RecoveryPointTierTypeInstantRP RecoveryPointTierType = "InstantRP" // RecoveryPointTierTypeInvalid specifies the recovery point tier type invalid state for recovery point tier type. RecoveryPointTierTypeInvalid RecoveryPointTierType = "Invalid" ) // RecoveryType enumerates the values for recovery type. type RecoveryType string const ( // RecoveryTypeAlternateLocation specifies the recovery type alternate location state for recovery type. RecoveryTypeAlternateLocation RecoveryType = "AlternateLocation" // RecoveryTypeInvalid specifies the recovery type invalid state for recovery type. RecoveryTypeInvalid RecoveryType = "Invalid" // RecoveryTypeOriginalLocation specifies the recovery type original location state for recovery type. RecoveryTypeOriginalLocation RecoveryType = "OriginalLocation" // RecoveryTypeRestoreDisks specifies the recovery type restore disks state for recovery type. RecoveryTypeRestoreDisks RecoveryType = "RestoreDisks" ) // RetentionDurationType enumerates the values for retention duration type. type RetentionDurationType string const ( // RetentionDurationTypeDays specifies the retention duration type days state for retention duration type. RetentionDurationTypeDays RetentionDurationType = "Days" // RetentionDurationTypeInvalid specifies the retention duration type invalid state for retention duration type. RetentionDurationTypeInvalid RetentionDurationType = "Invalid" // RetentionDurationTypeMonths specifies the retention duration type months state for retention duration type. RetentionDurationTypeMonths RetentionDurationType = "Months" // RetentionDurationTypeWeeks specifies the retention duration type weeks state for retention duration type. RetentionDurationTypeWeeks RetentionDurationType = "Weeks" // RetentionDurationTypeYears specifies the retention duration type years state for retention duration type. RetentionDurationTypeYears RetentionDurationType = "Years" ) // RetentionPolicyType enumerates the values for retention policy type. type RetentionPolicyType string const ( // RetentionPolicyTypeLongTermRetentionPolicy specifies the retention policy type long term retention policy state for // retention policy type. RetentionPolicyTypeLongTermRetentionPolicy RetentionPolicyType = "LongTermRetentionPolicy" // RetentionPolicyTypeSimpleRetentionPolicy specifies the retention policy type simple retention policy state for // retention policy type. RetentionPolicyTypeSimpleRetentionPolicy RetentionPolicyType = "SimpleRetentionPolicy" ) // RetentionScheduleFormat enumerates the values for retention schedule format. type RetentionScheduleFormat string const ( // RetentionScheduleFormatDaily specifies the retention schedule format daily state for retention schedule format. RetentionScheduleFormatDaily RetentionScheduleFormat = "Daily" // RetentionScheduleFormatInvalid specifies the retention schedule format invalid state for retention schedule format. RetentionScheduleFormatInvalid RetentionScheduleFormat = "Invalid" // RetentionScheduleFormatWeekly specifies the retention schedule format weekly state for retention schedule format. RetentionScheduleFormatWeekly RetentionScheduleFormat = "Weekly" ) // SchedulePolicyType enumerates the values for schedule policy type. type SchedulePolicyType string const ( // SchedulePolicyTypeLongTermSchedulePolicy specifies the schedule policy type long term schedule policy state for // schedule policy type. SchedulePolicyTypeLongTermSchedulePolicy SchedulePolicyType = "LongTermSchedulePolicy" // SchedulePolicyTypeSimpleSchedulePolicy specifies the schedule policy type simple schedule policy state for schedule // policy type. SchedulePolicyTypeSimpleSchedulePolicy SchedulePolicyType = "SimpleSchedulePolicy" ) // ScheduleRunType enumerates the values for schedule run type. type ScheduleRunType string const ( // ScheduleRunTypeDaily specifies the schedule run type daily state for schedule run type. ScheduleRunTypeDaily ScheduleRunType = "Daily" // ScheduleRunTypeInvalid specifies the schedule run type invalid state for schedule run type. ScheduleRunTypeInvalid ScheduleRunType = "Invalid" // ScheduleRunTypeWeekly specifies the schedule run type weekly state for schedule run type. ScheduleRunTypeWeekly ScheduleRunType = "Weekly" ) // StorageType enumerates the values for storage type. type StorageType string const ( // StorageTypeGeoRedundant specifies the storage type geo redundant state for storage type. StorageTypeGeoRedundant StorageType = "GeoRedundant" // StorageTypeInvalid specifies the storage type invalid state for storage type. StorageTypeInvalid StorageType = "Invalid" // StorageTypeLocallyRedundant specifies the storage type locally redundant state for storage type. StorageTypeLocallyRedundant StorageType = "LocallyRedundant" ) // StorageTypeState enumerates the values for storage type state. type StorageTypeState string const ( // StorageTypeStateInvalid specifies the storage type state invalid state for storage type state. StorageTypeStateInvalid StorageTypeState = "Invalid" // StorageTypeStateLocked specifies the storage type state locked state for storage type state. StorageTypeStateLocked StorageTypeState = "Locked" // StorageTypeStateUnlocked specifies the storage type state unlocked state for storage type state. StorageTypeStateUnlocked StorageTypeState = "Unlocked" ) // Type enumerates the values for type. type Type string const ( // TypeBackupProtectedItemCountSummary specifies the type backup protected item count summary state for type. TypeBackupProtectedItemCountSummary Type = "BackupProtectedItemCountSummary" // TypeBackupProtectionContainerCountSummary specifies the type backup protection container count summary state for // type. TypeBackupProtectionContainerCountSummary Type = "BackupProtectionContainerCountSummary" // TypeInvalid specifies the type invalid state for type. TypeInvalid Type = "Invalid" ) // UsagesUnit enumerates the values for usages unit. type UsagesUnit string const ( // Bytes specifies the bytes state for usages unit. Bytes UsagesUnit = "Bytes" // BytesPerSecond specifies the bytes per second state for usages unit. BytesPerSecond UsagesUnit = "BytesPerSecond" // Count specifies the count state for usages unit. Count UsagesUnit = "Count" // CountPerSecond specifies the count per second state for usages unit. CountPerSecond UsagesUnit = "CountPerSecond" // Percent specifies the percent state for usages unit. Percent UsagesUnit = "Percent" // Seconds specifies the seconds state for usages unit. Seconds UsagesUnit = "Seconds" ) // WeekOfMonth enumerates the values for week of month. type WeekOfMonth string const ( // First specifies the first state for week of month. First WeekOfMonth = "First" // Fourth specifies the fourth state for week of month. Fourth WeekOfMonth = "Fourth" // Last specifies the last state for week of month. Last WeekOfMonth = "Last" // Second specifies the second state for week of month. Second WeekOfMonth = "Second" // Third specifies the third state for week of month. Third WeekOfMonth = "Third" ) // WorkloadType enumerates the values for workload type. type WorkloadType string const ( // WorkloadTypeAzureSQLDb specifies the workload type azure sql db state for workload type. WorkloadTypeAzureSQLDb WorkloadType = "AzureSqlDb" // WorkloadTypeClient specifies the workload type client state for workload type. WorkloadTypeClient WorkloadType = "Client" // WorkloadTypeExchange specifies the workload type exchange state for workload type. WorkloadTypeExchange WorkloadType = "Exchange" // WorkloadTypeFileFolder specifies the workload type file folder state for workload type. WorkloadTypeFileFolder WorkloadType = "FileFolder" // WorkloadTypeGenericDataSource specifies the workload type generic data source state for workload type. WorkloadTypeGenericDataSource WorkloadType = "GenericDataSource" // WorkloadTypeInvalid specifies the workload type invalid state for workload type. WorkloadTypeInvalid WorkloadType = "Invalid" // WorkloadTypeSharepoint specifies the workload type sharepoint state for workload type. WorkloadTypeSharepoint WorkloadType = "Sharepoint" // WorkloadTypeSQLDB specifies the workload type sqldb state for workload type. WorkloadTypeSQLDB WorkloadType = "SQLDB" // WorkloadTypeSystemState specifies the workload type system state state for workload type. WorkloadTypeSystemState WorkloadType = "SystemState" // WorkloadTypeVM specifies the workload type vm state for workload type. WorkloadTypeVM WorkloadType = "VM" // WorkloadTypeVMwareVM specifies the workload type v mware vm state for workload type. WorkloadTypeVMwareVM WorkloadType = "VMwareVM" ) // AzureBackupServerContainer is azureBackupServer (DPMVenus) workload-specific protection container. type AzureBackupServerContainer struct { FriendlyName *string `json:"friendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` RegistrationStatus *string `json:"registrationStatus,omitempty"` HealthStatus *string `json:"healthStatus,omitempty"` ContainerType ContainerType `json:"containerType,omitempty"` ProtectableObjectType ProtectableObjectType `json:"protectableObjectType,omitempty"` CanReRegister *bool `json:"canReRegister,omitempty"` ContainerID *string `json:"containerId,omitempty"` ProtectedItemCount *int64 `json:"protectedItemCount,omitempty"` DpmAgentVersion *string `json:"dpmAgentVersion,omitempty"` DPMServers *[]string `json:"DPMServers,omitempty"` UpgradeAvailable *bool `json:"UpgradeAvailable,omitempty"` ProtectionStatus *string `json:"protectionStatus,omitempty"` ExtendedInfo *DPMContainerExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for AzureBackupServerContainer. func (absc AzureBackupServerContainer) MarshalJSON() ([]byte, error) { absc.ProtectableObjectType = ProtectableObjectTypeAzureBackupServerContainer type Alias AzureBackupServerContainer return json.Marshal(&struct { Alias }{ Alias: (Alias)(absc), }) } // AsAzureBackupServerContainer is the ProtectionContainer implementation for AzureBackupServerContainer. func (absc AzureBackupServerContainer) AsAzureBackupServerContainer() (*AzureBackupServerContainer, bool) { return &absc, true } // AsAzureIaaSClassicComputeVMContainer is the ProtectionContainer implementation for AzureBackupServerContainer. func (absc AzureBackupServerContainer) AsAzureIaaSClassicComputeVMContainer() (*AzureIaaSClassicComputeVMContainer, bool) { return nil, false } // AsAzureIaaSComputeVMContainer is the ProtectionContainer implementation for AzureBackupServerContainer. func (absc AzureBackupServerContainer) AsAzureIaaSComputeVMContainer() (*AzureIaaSComputeVMContainer, bool) { return nil, false } // AsAzureSQLContainer is the ProtectionContainer implementation for AzureBackupServerContainer. func (absc AzureBackupServerContainer) AsAzureSQLContainer() (*AzureSQLContainer, bool) { return nil, false } // AsDpmContainer is the ProtectionContainer implementation for AzureBackupServerContainer. func (absc AzureBackupServerContainer) AsDpmContainer() (*DpmContainer, bool) { return nil, false } // AsIaaSVMContainer is the ProtectionContainer implementation for AzureBackupServerContainer. func (absc AzureBackupServerContainer) AsIaaSVMContainer() (*IaaSVMContainer, bool) { return nil, false } // AsMabContainer is the ProtectionContainer implementation for AzureBackupServerContainer. func (absc AzureBackupServerContainer) AsMabContainer() (*MabContainer, bool) { return nil, false } // AzureBackupServerEngine is backup engine type when Azure Backup Server is used to manage the backups. type AzureBackupServerEngine struct { FriendlyName *string `json:"friendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` RegistrationStatus *string `json:"registrationStatus,omitempty"` BackupEngineState *string `json:"backupEngineState,omitempty"` HealthStatus *string `json:"healthStatus,omitempty"` CanReRegister *bool `json:"canReRegister,omitempty"` BackupEngineID *string `json:"backupEngineId,omitempty"` DpmVersion *string `json:"dpmVersion,omitempty"` AzureBackupAgentVersion *string `json:"azureBackupAgentVersion,omitempty"` IsAzureBackupAgentUpgradeAvailable *bool `json:"isAzureBackupAgentUpgradeAvailable,omitempty"` IsDPMUpgradeAvailable *bool `json:"isDPMUpgradeAvailable,omitempty"` ExtendedInfo *BackupEngineExtendedInfo `json:"extendedInfo,omitempty"` BackupEngineType BackupEngineType `json:"backupEngineType,omitempty"` } // MarshalJSON is the custom marshaler for AzureBackupServerEngine. func (abse AzureBackupServerEngine) MarshalJSON() ([]byte, error) { abse.BackupEngineType = BackupEngineTypeAzureBackupServerEngine type Alias AzureBackupServerEngine return json.Marshal(&struct { Alias }{ Alias: (Alias)(abse), }) } // AsAzureBackupServerEngine is the BackupEngineBase implementation for AzureBackupServerEngine. func (abse AzureBackupServerEngine) AsAzureBackupServerEngine() (*AzureBackupServerEngine, bool) { return &abse, true } // AsDpmBackupEngine is the BackupEngineBase implementation for AzureBackupServerEngine. func (abse AzureBackupServerEngine) AsDpmBackupEngine() (*DpmBackupEngine, bool) { return nil, false } // AzureIaaSClassicComputeVMContainer is iaaS VM workload-specific backup item representing a classic virtual machine. type AzureIaaSClassicComputeVMContainer struct { FriendlyName *string `json:"friendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` RegistrationStatus *string `json:"registrationStatus,omitempty"` HealthStatus *string `json:"healthStatus,omitempty"` ContainerType ContainerType `json:"containerType,omitempty"` ProtectableObjectType ProtectableObjectType `json:"protectableObjectType,omitempty"` VirtualMachineID *string `json:"virtualMachineId,omitempty"` VirtualMachineVersion *string `json:"virtualMachineVersion,omitempty"` ResourceGroup *string `json:"resourceGroup,omitempty"` } // MarshalJSON is the custom marshaler for AzureIaaSClassicComputeVMContainer. func (aisccvc AzureIaaSClassicComputeVMContainer) MarshalJSON() ([]byte, error) { aisccvc.ProtectableObjectType = ProtectableObjectTypeMicrosoftClassicComputevirtualMachines type Alias AzureIaaSClassicComputeVMContainer return json.Marshal(&struct { Alias }{ Alias: (Alias)(aisccvc), }) } // AsAzureIaaSClassicComputeVMContainer is the IaaSVMContainer implementation for AzureIaaSClassicComputeVMContainer. func (aisccvc AzureIaaSClassicComputeVMContainer) AsAzureIaaSClassicComputeVMContainer() (*AzureIaaSClassicComputeVMContainer, bool) { return &aisccvc, true } // AsAzureIaaSComputeVMContainer is the IaaSVMContainer implementation for AzureIaaSClassicComputeVMContainer. func (aisccvc AzureIaaSClassicComputeVMContainer) AsAzureIaaSComputeVMContainer() (*AzureIaaSComputeVMContainer, bool) { return nil, false } // AsAzureBackupServerContainer is the IaaSVMContainer implementation for AzureIaaSClassicComputeVMContainer. func (aisccvc AzureIaaSClassicComputeVMContainer) AsAzureBackupServerContainer() (*AzureBackupServerContainer, bool) { return nil, false } // AsAzureSQLContainer is the IaaSVMContainer implementation for AzureIaaSClassicComputeVMContainer. func (aisccvc AzureIaaSClassicComputeVMContainer) AsAzureSQLContainer() (*AzureSQLContainer, bool) { return nil, false } // AsDpmContainer is the IaaSVMContainer implementation for AzureIaaSClassicComputeVMContainer. func (aisccvc AzureIaaSClassicComputeVMContainer) AsDpmContainer() (*DpmContainer, bool) { return nil, false } // AsIaaSVMContainer is the IaaSVMContainer implementation for AzureIaaSClassicComputeVMContainer. func (aisccvc AzureIaaSClassicComputeVMContainer) AsIaaSVMContainer() (*IaaSVMContainer, bool) { return nil, false } // AsMabContainer is the IaaSVMContainer implementation for AzureIaaSClassicComputeVMContainer. func (aisccvc AzureIaaSClassicComputeVMContainer) AsMabContainer() (*MabContainer, bool) { return nil, false } // AzureIaaSClassicComputeVMProtectableItem is iaaS VM workload-specific backup item representing the Classic Compute // VM. type AzureIaaSClassicComputeVMProtectableItem struct { BackupManagementType *string `json:"backupManagementType,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` ProtectionState ProtectionStatus `json:"protectionState,omitempty"` ProtectableItemType ProtectableItemType `json:"protectableItemType,omitempty"` VirtualMachineID *string `json:"virtualMachineId,omitempty"` } // MarshalJSON is the custom marshaler for AzureIaaSClassicComputeVMProtectableItem. func (aisccvpi AzureIaaSClassicComputeVMProtectableItem) MarshalJSON() ([]byte, error) { aisccvpi.ProtectableItemType = ProtectableItemTypeMicrosoftClassicComputevirtualMachines type Alias AzureIaaSClassicComputeVMProtectableItem return json.Marshal(&struct { Alias }{ Alias: (Alias)(aisccvpi), }) } // AsAzureIaaSClassicComputeVMProtectableItem is the IaaSVMProtectableItem implementation for AzureIaaSClassicComputeVMProtectableItem. func (aisccvpi AzureIaaSClassicComputeVMProtectableItem) AsAzureIaaSClassicComputeVMProtectableItem() (*AzureIaaSClassicComputeVMProtectableItem, bool) { return &aisccvpi, true } // AsAzureIaaSComputeVMProtectableItem is the IaaSVMProtectableItem implementation for AzureIaaSClassicComputeVMProtectableItem. func (aisccvpi AzureIaaSClassicComputeVMProtectableItem) AsAzureIaaSComputeVMProtectableItem() (*AzureIaaSComputeVMProtectableItem, bool) { return nil, false } // AsIaaSVMProtectableItem is the IaaSVMProtectableItem implementation for AzureIaaSClassicComputeVMProtectableItem. func (aisccvpi AzureIaaSClassicComputeVMProtectableItem) AsIaaSVMProtectableItem() (*IaaSVMProtectableItem, bool) { return nil, false } // AzureIaaSClassicComputeVMProtectedItem is iaaS VM workload-specific backup item representing the Classic Compute VM. type AzureIaaSClassicComputeVMProtectedItem struct { BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` WorkloadType DataSourceType `json:"workloadType,omitempty"` ContainerName *string `json:"containerName,omitempty"` SourceResourceID *string `json:"sourceResourceId,omitempty"` PolicyID *string `json:"policyId,omitempty"` LastRecoveryPoint *date.Time `json:"lastRecoveryPoint,omitempty"` ProtectedItemType ProtectedItemType `json:"protectedItemType,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` VirtualMachineID *string `json:"virtualMachineId,omitempty"` ProtectionStatus *string `json:"protectionStatus,omitempty"` ProtectionState ProtectionState `json:"protectionState,omitempty"` HealthStatus HealthStatus `json:"healthStatus,omitempty"` HealthDetails *[]AzureIaaSVMHealthDetails `json:"healthDetails,omitempty"` LastBackupStatus *string `json:"lastBackupStatus,omitempty"` LastBackupTime *date.Time `json:"lastBackupTime,omitempty"` ProtectedItemDataID *string `json:"protectedItemDataId,omitempty"` ExtendedInfo *AzureIaaSVMProtectedItemExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for AzureIaaSClassicComputeVMProtectedItem. func (aisccvpi AzureIaaSClassicComputeVMProtectedItem) MarshalJSON() ([]byte, error) { aisccvpi.ProtectedItemType = ProtectedItemTypeMicrosoftClassicComputevirtualMachines type Alias AzureIaaSClassicComputeVMProtectedItem return json.Marshal(&struct { Alias }{ Alias: (Alias)(aisccvpi), }) } // AsAzureIaaSClassicComputeVMProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSClassicComputeVMProtectedItem. func (aisccvpi AzureIaaSClassicComputeVMProtectedItem) AsAzureIaaSClassicComputeVMProtectedItem() (*AzureIaaSClassicComputeVMProtectedItem, bool) { return &aisccvpi, true } // AsAzureIaaSComputeVMProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSClassicComputeVMProtectedItem. func (aisccvpi AzureIaaSClassicComputeVMProtectedItem) AsAzureIaaSComputeVMProtectedItem() (*AzureIaaSComputeVMProtectedItem, bool) { return nil, false } // AsAzureIaaSVMProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSClassicComputeVMProtectedItem. func (aisccvpi AzureIaaSClassicComputeVMProtectedItem) AsAzureIaaSVMProtectedItem() (*AzureIaaSVMProtectedItem, bool) { return nil, false } // AsAzureSQLProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSClassicComputeVMProtectedItem. func (aisccvpi AzureIaaSClassicComputeVMProtectedItem) AsAzureSQLProtectedItem() (*AzureSQLProtectedItem, bool) { return nil, false } // AsDPMProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSClassicComputeVMProtectedItem. func (aisccvpi AzureIaaSClassicComputeVMProtectedItem) AsDPMProtectedItem() (*DPMProtectedItem, bool) { return nil, false } // AsMabFileFolderProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSClassicComputeVMProtectedItem. func (aisccvpi AzureIaaSClassicComputeVMProtectedItem) AsMabFileFolderProtectedItem() (*MabFileFolderProtectedItem, bool) { return nil, false } // AzureIaaSComputeVMContainer is iaaS VM workload-specific backup item representing an Azure Resource Manager virtual // machine. type AzureIaaSComputeVMContainer struct { FriendlyName *string `json:"friendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` RegistrationStatus *string `json:"registrationStatus,omitempty"` HealthStatus *string `json:"healthStatus,omitempty"` ContainerType ContainerType `json:"containerType,omitempty"` ProtectableObjectType ProtectableObjectType `json:"protectableObjectType,omitempty"` VirtualMachineID *string `json:"virtualMachineId,omitempty"` VirtualMachineVersion *string `json:"virtualMachineVersion,omitempty"` ResourceGroup *string `json:"resourceGroup,omitempty"` } // MarshalJSON is the custom marshaler for AzureIaaSComputeVMContainer. func (aiscvc AzureIaaSComputeVMContainer) MarshalJSON() ([]byte, error) { aiscvc.ProtectableObjectType = ProtectableObjectTypeMicrosoftComputevirtualMachines type Alias AzureIaaSComputeVMContainer return json.Marshal(&struct { Alias }{ Alias: (Alias)(aiscvc), }) } // AsAzureIaaSClassicComputeVMContainer is the IaaSVMContainer implementation for AzureIaaSComputeVMContainer. func (aiscvc AzureIaaSComputeVMContainer) AsAzureIaaSClassicComputeVMContainer() (*AzureIaaSClassicComputeVMContainer, bool) { return nil, false } // AsAzureIaaSComputeVMContainer is the IaaSVMContainer implementation for AzureIaaSComputeVMContainer. func (aiscvc AzureIaaSComputeVMContainer) AsAzureIaaSComputeVMContainer() (*AzureIaaSComputeVMContainer, bool) { return &aiscvc, true } // AsAzureBackupServerContainer is the IaaSVMContainer implementation for AzureIaaSComputeVMContainer. func (aiscvc AzureIaaSComputeVMContainer) AsAzureBackupServerContainer() (*AzureBackupServerContainer, bool) { return nil, false } // AsAzureSQLContainer is the IaaSVMContainer implementation for AzureIaaSComputeVMContainer. func (aiscvc AzureIaaSComputeVMContainer) AsAzureSQLContainer() (*AzureSQLContainer, bool) { return nil, false } // AsDpmContainer is the IaaSVMContainer implementation for AzureIaaSComputeVMContainer. func (aiscvc AzureIaaSComputeVMContainer) AsDpmContainer() (*DpmContainer, bool) { return nil, false } // AsIaaSVMContainer is the IaaSVMContainer implementation for AzureIaaSComputeVMContainer. func (aiscvc AzureIaaSComputeVMContainer) AsIaaSVMContainer() (*IaaSVMContainer, bool) { return nil, false } // AsMabContainer is the IaaSVMContainer implementation for AzureIaaSComputeVMContainer. func (aiscvc AzureIaaSComputeVMContainer) AsMabContainer() (*MabContainer, bool) { return nil, false } // AzureIaaSComputeVMProtectableItem is iaaS VM workload-specific backup item representing the Azure Resource Manager // VM. type AzureIaaSComputeVMProtectableItem struct { BackupManagementType *string `json:"backupManagementType,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` ProtectionState ProtectionStatus `json:"protectionState,omitempty"` ProtectableItemType ProtectableItemType `json:"protectableItemType,omitempty"` VirtualMachineID *string `json:"virtualMachineId,omitempty"` } // MarshalJSON is the custom marshaler for AzureIaaSComputeVMProtectableItem. func (aiscvpi AzureIaaSComputeVMProtectableItem) MarshalJSON() ([]byte, error) { aiscvpi.ProtectableItemType = ProtectableItemTypeMicrosoftComputevirtualMachines type Alias AzureIaaSComputeVMProtectableItem return json.Marshal(&struct { Alias }{ Alias: (Alias)(aiscvpi), }) } // AsAzureIaaSClassicComputeVMProtectableItem is the IaaSVMProtectableItem implementation for AzureIaaSComputeVMProtectableItem. func (aiscvpi AzureIaaSComputeVMProtectableItem) AsAzureIaaSClassicComputeVMProtectableItem() (*AzureIaaSClassicComputeVMProtectableItem, bool) { return nil, false } // AsAzureIaaSComputeVMProtectableItem is the IaaSVMProtectableItem implementation for AzureIaaSComputeVMProtectableItem. func (aiscvpi AzureIaaSComputeVMProtectableItem) AsAzureIaaSComputeVMProtectableItem() (*AzureIaaSComputeVMProtectableItem, bool) { return &aiscvpi, true } // AsIaaSVMProtectableItem is the IaaSVMProtectableItem implementation for AzureIaaSComputeVMProtectableItem. func (aiscvpi AzureIaaSComputeVMProtectableItem) AsIaaSVMProtectableItem() (*IaaSVMProtectableItem, bool) { return nil, false } // AzureIaaSComputeVMProtectedItem is iaaS VM workload-specific backup item representing the Azure Resource Manager VM. type AzureIaaSComputeVMProtectedItem struct { BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` WorkloadType DataSourceType `json:"workloadType,omitempty"` ContainerName *string `json:"containerName,omitempty"` SourceResourceID *string `json:"sourceResourceId,omitempty"` PolicyID *string `json:"policyId,omitempty"` LastRecoveryPoint *date.Time `json:"lastRecoveryPoint,omitempty"` ProtectedItemType ProtectedItemType `json:"protectedItemType,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` VirtualMachineID *string `json:"virtualMachineId,omitempty"` ProtectionStatus *string `json:"protectionStatus,omitempty"` ProtectionState ProtectionState `json:"protectionState,omitempty"` HealthStatus HealthStatus `json:"healthStatus,omitempty"` HealthDetails *[]AzureIaaSVMHealthDetails `json:"healthDetails,omitempty"` LastBackupStatus *string `json:"lastBackupStatus,omitempty"` LastBackupTime *date.Time `json:"lastBackupTime,omitempty"` ProtectedItemDataID *string `json:"protectedItemDataId,omitempty"` ExtendedInfo *AzureIaaSVMProtectedItemExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for AzureIaaSComputeVMProtectedItem. func (aiscvpi AzureIaaSComputeVMProtectedItem) MarshalJSON() ([]byte, error) { aiscvpi.ProtectedItemType = ProtectedItemTypeMicrosoftComputevirtualMachines type Alias AzureIaaSComputeVMProtectedItem return json.Marshal(&struct { Alias }{ Alias: (Alias)(aiscvpi), }) } // AsAzureIaaSClassicComputeVMProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSComputeVMProtectedItem. func (aiscvpi AzureIaaSComputeVMProtectedItem) AsAzureIaaSClassicComputeVMProtectedItem() (*AzureIaaSClassicComputeVMProtectedItem, bool) { return nil, false } // AsAzureIaaSComputeVMProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSComputeVMProtectedItem. func (aiscvpi AzureIaaSComputeVMProtectedItem) AsAzureIaaSComputeVMProtectedItem() (*AzureIaaSComputeVMProtectedItem, bool) { return &aiscvpi, true } // AsAzureIaaSVMProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSComputeVMProtectedItem. func (aiscvpi AzureIaaSComputeVMProtectedItem) AsAzureIaaSVMProtectedItem() (*AzureIaaSVMProtectedItem, bool) { return nil, false } // AsAzureSQLProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSComputeVMProtectedItem. func (aiscvpi AzureIaaSComputeVMProtectedItem) AsAzureSQLProtectedItem() (*AzureSQLProtectedItem, bool) { return nil, false } // AsDPMProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSComputeVMProtectedItem. func (aiscvpi AzureIaaSComputeVMProtectedItem) AsDPMProtectedItem() (*DPMProtectedItem, bool) { return nil, false } // AsMabFileFolderProtectedItem is the AzureIaaSVMProtectedItem implementation for AzureIaaSComputeVMProtectedItem. func (aiscvpi AzureIaaSComputeVMProtectedItem) AsMabFileFolderProtectedItem() (*MabFileFolderProtectedItem, bool) { return nil, false } // AzureIaaSVMErrorInfo is azure IaaS VM workload-specific error information. type AzureIaaSVMErrorInfo struct { ErrorCode *int32 `json:"errorCode,omitempty"` ErrorTitle *string `json:"errorTitle,omitempty"` ErrorString *string `json:"errorString,omitempty"` Recommendations *[]string `json:"recommendations,omitempty"` } // AzureIaaSVMHealthDetails is azure IaaS VM workload-specific Health Details. type AzureIaaSVMHealthDetails struct { Code *int32 `json:"code,omitempty"` Title *string `json:"title,omitempty"` Message *string `json:"message,omitempty"` Recommendations *[]string `json:"recommendations,omitempty"` } // AzureIaaSVMJob is azure IaaS VM workload-specifc job object. type AzureIaaSVMJob struct { EntityFriendlyName *string `json:"entityFriendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` Operation *string `json:"operation,omitempty"` Status *string `json:"status,omitempty"` StartTime *date.Time `json:"startTime,omitempty"` EndTime *date.Time `json:"endTime,omitempty"` ActivityID *string `json:"activityId,omitempty"` JobType JobType `json:"jobType,omitempty"` Duration *string `json:"duration,omitempty"` ActionsInfo *[]JobSupportedAction `json:"actionsInfo,omitempty"` ErrorDetails *[]AzureIaaSVMErrorInfo `json:"errorDetails,omitempty"` VirtualMachineVersion *string `json:"virtualMachineVersion,omitempty"` ExtendedInfo *AzureIaaSVMJobExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for AzureIaaSVMJob. func (aisj AzureIaaSVMJob) MarshalJSON() ([]byte, error) { aisj.JobType = JobTypeAzureIaaSVMJob type Alias AzureIaaSVMJob return json.Marshal(&struct { Alias }{ Alias: (Alias)(aisj), }) } // AsAzureIaaSVMJob is the Job implementation for AzureIaaSVMJob. func (aisj AzureIaaSVMJob) AsAzureIaaSVMJob() (*AzureIaaSVMJob, bool) { return &aisj, true } // AsDpmJob is the Job implementation for AzureIaaSVMJob. func (aisj AzureIaaSVMJob) AsDpmJob() (*DpmJob, bool) { return nil, false } // AsMabJob is the Job implementation for AzureIaaSVMJob. func (aisj AzureIaaSVMJob) AsMabJob() (*MabJob, bool) { return nil, false } // AzureIaaSVMJobExtendedInfo is azure IaaS VM workload-specific additional information for job. type AzureIaaSVMJobExtendedInfo struct { TasksList *[]AzureIaaSVMJobTaskDetails `json:"tasksList,omitempty"` PropertyBag *map[string]*string `json:"propertyBag,omitempty"` ProgressPercentage *float64 `json:"progressPercentage,omitempty"` DynamicErrorMessage *string `json:"dynamicErrorMessage,omitempty"` } // AzureIaaSVMJobTaskDetails is azure IaaS VM workload-specific job task details. type AzureIaaSVMJobTaskDetails struct { TaskID *string `json:"taskId,omitempty"` StartTime *date.Time `json:"startTime,omitempty"` EndTime *date.Time `json:"endTime,omitempty"` InstanceID *string `json:"instanceId,omitempty"` Duration *string `json:"duration,omitempty"` Status *string `json:"status,omitempty"` ProgressPercentage *float64 `json:"progressPercentage,omitempty"` } // AzureIaaSVMProtectedItem is iaaS VM workload-specific backup item. type AzureIaaSVMProtectedItem struct { BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` WorkloadType DataSourceType `json:"workloadType,omitempty"` ContainerName *string `json:"containerName,omitempty"` SourceResourceID *string `json:"sourceResourceId,omitempty"` PolicyID *string `json:"policyId,omitempty"` LastRecoveryPoint *date.Time `json:"lastRecoveryPoint,omitempty"` ProtectedItemType ProtectedItemType `json:"protectedItemType,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` VirtualMachineID *string `json:"virtualMachineId,omitempty"` ProtectionStatus *string `json:"protectionStatus,omitempty"` ProtectionState ProtectionState `json:"protectionState,omitempty"` HealthStatus HealthStatus `json:"healthStatus,omitempty"` HealthDetails *[]AzureIaaSVMHealthDetails `json:"healthDetails,omitempty"` LastBackupStatus *string `json:"lastBackupStatus,omitempty"` LastBackupTime *date.Time `json:"lastBackupTime,omitempty"` ProtectedItemDataID *string `json:"protectedItemDataId,omitempty"` ExtendedInfo *AzureIaaSVMProtectedItemExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for AzureIaaSVMProtectedItem. func (aispi AzureIaaSVMProtectedItem) MarshalJSON() ([]byte, error) { aispi.ProtectedItemType = ProtectedItemTypeAzureIaaSVMProtectedItem type Alias AzureIaaSVMProtectedItem return json.Marshal(&struct { Alias }{ Alias: (Alias)(aispi), }) } // AsAzureIaaSClassicComputeVMProtectedItem is the ProtectedItem implementation for AzureIaaSVMProtectedItem. func (aispi AzureIaaSVMProtectedItem) AsAzureIaaSClassicComputeVMProtectedItem() (*AzureIaaSClassicComputeVMProtectedItem, bool) { return nil, false } // AsAzureIaaSComputeVMProtectedItem is the ProtectedItem implementation for AzureIaaSVMProtectedItem. func (aispi AzureIaaSVMProtectedItem) AsAzureIaaSComputeVMProtectedItem() (*AzureIaaSComputeVMProtectedItem, bool) { return nil, false } // AsAzureIaaSVMProtectedItem is the ProtectedItem implementation for AzureIaaSVMProtectedItem. func (aispi AzureIaaSVMProtectedItem) AsAzureIaaSVMProtectedItem() (*AzureIaaSVMProtectedItem, bool) { return &aispi, true } // AsAzureSQLProtectedItem is the ProtectedItem implementation for AzureIaaSVMProtectedItem. func (aispi AzureIaaSVMProtectedItem) AsAzureSQLProtectedItem() (*AzureSQLProtectedItem, bool) { return nil, false } // AsDPMProtectedItem is the ProtectedItem implementation for AzureIaaSVMProtectedItem. func (aispi AzureIaaSVMProtectedItem) AsDPMProtectedItem() (*DPMProtectedItem, bool) { return nil, false } // AsMabFileFolderProtectedItem is the ProtectedItem implementation for AzureIaaSVMProtectedItem. func (aispi AzureIaaSVMProtectedItem) AsMabFileFolderProtectedItem() (*MabFileFolderProtectedItem, bool) { return nil, false } // AzureIaaSVMProtectedItemExtendedInfo is additional information on Azure IaaS VM specific backup item. type AzureIaaSVMProtectedItemExtendedInfo struct { OldestRecoveryPoint *date.Time `json:"oldestRecoveryPoint,omitempty"` RecoveryPointCount *int32 `json:"recoveryPointCount,omitempty"` PolicyInconsistent *bool `json:"policyInconsistent,omitempty"` } // AzureIaaSVMProtectionPolicy is iaaS VM workload-specific backup policy. type AzureIaaSVMProtectionPolicy struct { ProtectedItemsCount *int32 `json:"protectedItemsCount,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` SchedulePolicy SchedulePolicy `json:"schedulePolicy,omitempty"` RetentionPolicy RetentionPolicy `json:"retentionPolicy,omitempty"` TimeZone *string `json:"timeZone,omitempty"` } // MarshalJSON is the custom marshaler for AzureIaaSVMProtectionPolicy. func (aispp AzureIaaSVMProtectionPolicy) MarshalJSON() ([]byte, error) { aispp.BackupManagementType = BackupManagementTypeAzureIaasVM type Alias AzureIaaSVMProtectionPolicy return json.Marshal(&struct { Alias }{ Alias: (Alias)(aispp), }) } // AsAzureIaaSVMProtectionPolicy is the ProtectionPolicy implementation for AzureIaaSVMProtectionPolicy. func (aispp AzureIaaSVMProtectionPolicy) AsAzureIaaSVMProtectionPolicy() (*AzureIaaSVMProtectionPolicy, bool) { return &aispp, true } // AsAzureSQLProtectionPolicy is the ProtectionPolicy implementation for AzureIaaSVMProtectionPolicy. func (aispp AzureIaaSVMProtectionPolicy) AsAzureSQLProtectionPolicy() (*AzureSQLProtectionPolicy, bool) { return nil, false } // AsMabProtectionPolicy is the ProtectionPolicy implementation for AzureIaaSVMProtectionPolicy. func (aispp AzureIaaSVMProtectionPolicy) AsMabProtectionPolicy() (*MabProtectionPolicy, bool) { return nil, false } // UnmarshalJSON is the custom unmarshaler for AzureIaaSVMProtectionPolicy struct. func (aispp *AzureIaaSVMProtectionPolicy) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["schedulePolicy"] if v != nil { schedulePolicy, err := unmarshalSchedulePolicy(*m["schedulePolicy"]) if err != nil { return err } aispp.SchedulePolicy = schedulePolicy } v = m["retentionPolicy"] if v != nil { retentionPolicy, err := unmarshalRetentionPolicy(*m["retentionPolicy"]) if err != nil { return err } aispp.RetentionPolicy = retentionPolicy } v = m["timeZone"] if v != nil { var timeZone string err = json.Unmarshal(*m["timeZone"], &timeZone) if err != nil { return err } aispp.TimeZone = &timeZone } v = m["protectedItemsCount"] if v != nil { var protectedItemsCount int32 err = json.Unmarshal(*m["protectedItemsCount"], &protectedItemsCount) if err != nil { return err } aispp.ProtectedItemsCount = &protectedItemsCount } v = m["backupManagementType"] if v != nil { var backupManagementType BackupManagementType err = json.Unmarshal(*m["backupManagementType"], &backupManagementType) if err != nil { return err } aispp.BackupManagementType = backupManagementType } return nil } // AzureSQLContainer is azure Sql workload-specific container. type AzureSQLContainer struct { FriendlyName *string `json:"friendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` RegistrationStatus *string `json:"registrationStatus,omitempty"` HealthStatus *string `json:"healthStatus,omitempty"` ContainerType ContainerType `json:"containerType,omitempty"` ProtectableObjectType ProtectableObjectType `json:"protectableObjectType,omitempty"` } // MarshalJSON is the custom marshaler for AzureSQLContainer. func (asc AzureSQLContainer) MarshalJSON() ([]byte, error) { asc.ProtectableObjectType = ProtectableObjectTypeAzureSQLContainer type Alias AzureSQLContainer return json.Marshal(&struct { Alias }{ Alias: (Alias)(asc), }) } // AsAzureBackupServerContainer is the ProtectionContainer implementation for AzureSQLContainer. func (asc AzureSQLContainer) AsAzureBackupServerContainer() (*AzureBackupServerContainer, bool) { return nil, false } // AsAzureIaaSClassicComputeVMContainer is the ProtectionContainer implementation for AzureSQLContainer. func (asc AzureSQLContainer) AsAzureIaaSClassicComputeVMContainer() (*AzureIaaSClassicComputeVMContainer, bool) { return nil, false } // AsAzureIaaSComputeVMContainer is the ProtectionContainer implementation for AzureSQLContainer. func (asc AzureSQLContainer) AsAzureIaaSComputeVMContainer() (*AzureIaaSComputeVMContainer, bool) { return nil, false } // AsAzureSQLContainer is the ProtectionContainer implementation for AzureSQLContainer. func (asc AzureSQLContainer) AsAzureSQLContainer() (*AzureSQLContainer, bool) { return &asc, true } // AsDpmContainer is the ProtectionContainer implementation for AzureSQLContainer. func (asc AzureSQLContainer) AsDpmContainer() (*DpmContainer, bool) { return nil, false } // AsIaaSVMContainer is the ProtectionContainer implementation for AzureSQLContainer. func (asc AzureSQLContainer) AsIaaSVMContainer() (*IaaSVMContainer, bool) { return nil, false } // AsMabContainer is the ProtectionContainer implementation for AzureSQLContainer. func (asc AzureSQLContainer) AsMabContainer() (*MabContainer, bool) { return nil, false } // AzureSQLProtectedItem is azure SQL workload-specific backup item. type AzureSQLProtectedItem struct { BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` WorkloadType DataSourceType `json:"workloadType,omitempty"` ContainerName *string `json:"containerName,omitempty"` SourceResourceID *string `json:"sourceResourceId,omitempty"` PolicyID *string `json:"policyId,omitempty"` LastRecoveryPoint *date.Time `json:"lastRecoveryPoint,omitempty"` ProtectedItemType ProtectedItemType `json:"protectedItemType,omitempty"` ProtectedItemDataID *string `json:"protectedItemDataId,omitempty"` ProtectionState ProtectedItemState `json:"protectionState,omitempty"` ExtendedInfo *AzureSQLProtectedItemExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for AzureSQLProtectedItem. func (aspi AzureSQLProtectedItem) MarshalJSON() ([]byte, error) { aspi.ProtectedItemType = ProtectedItemTypeMicrosoftSqlserversdatabases type Alias AzureSQLProtectedItem return json.Marshal(&struct { Alias }{ Alias: (Alias)(aspi), }) } // AsAzureIaaSClassicComputeVMProtectedItem is the ProtectedItem implementation for AzureSQLProtectedItem. func (aspi AzureSQLProtectedItem) AsAzureIaaSClassicComputeVMProtectedItem() (*AzureIaaSClassicComputeVMProtectedItem, bool) { return nil, false } // AsAzureIaaSComputeVMProtectedItem is the ProtectedItem implementation for AzureSQLProtectedItem. func (aspi AzureSQLProtectedItem) AsAzureIaaSComputeVMProtectedItem() (*AzureIaaSComputeVMProtectedItem, bool) { return nil, false } // AsAzureIaaSVMProtectedItem is the ProtectedItem implementation for AzureSQLProtectedItem. func (aspi AzureSQLProtectedItem) AsAzureIaaSVMProtectedItem() (*AzureIaaSVMProtectedItem, bool) { return nil, false } // AsAzureSQLProtectedItem is the ProtectedItem implementation for AzureSQLProtectedItem. func (aspi AzureSQLProtectedItem) AsAzureSQLProtectedItem() (*AzureSQLProtectedItem, bool) { return &aspi, true } // AsDPMProtectedItem is the ProtectedItem implementation for AzureSQLProtectedItem. func (aspi AzureSQLProtectedItem) AsDPMProtectedItem() (*DPMProtectedItem, bool) { return nil, false } // AsMabFileFolderProtectedItem is the ProtectedItem implementation for AzureSQLProtectedItem. func (aspi AzureSQLProtectedItem) AsMabFileFolderProtectedItem() (*MabFileFolderProtectedItem, bool) { return nil, false } // AzureSQLProtectedItemExtendedInfo is additional information on Azure Sql specific protected item. type AzureSQLProtectedItemExtendedInfo struct { OldestRecoveryPoint *date.Time `json:"oldestRecoveryPoint,omitempty"` RecoveryPointCount *int32 `json:"recoveryPointCount,omitempty"` PolicyState *string `json:"policyState,omitempty"` } // AzureSQLProtectionPolicy is azure SQL workload-specific backup policy. type AzureSQLProtectionPolicy struct { ProtectedItemsCount *int32 `json:"protectedItemsCount,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` RetentionPolicy RetentionPolicy `json:"retentionPolicy,omitempty"` } // MarshalJSON is the custom marshaler for AzureSQLProtectionPolicy. func (aspp AzureSQLProtectionPolicy) MarshalJSON() ([]byte, error) { aspp.BackupManagementType = BackupManagementTypeAzureSQL type Alias AzureSQLProtectionPolicy return json.Marshal(&struct { Alias }{ Alias: (Alias)(aspp), }) } // AsAzureIaaSVMProtectionPolicy is the ProtectionPolicy implementation for AzureSQLProtectionPolicy. func (aspp AzureSQLProtectionPolicy) AsAzureIaaSVMProtectionPolicy() (*AzureIaaSVMProtectionPolicy, bool) { return nil, false } // AsAzureSQLProtectionPolicy is the ProtectionPolicy implementation for AzureSQLProtectionPolicy. func (aspp AzureSQLProtectionPolicy) AsAzureSQLProtectionPolicy() (*AzureSQLProtectionPolicy, bool) { return &aspp, true } // AsMabProtectionPolicy is the ProtectionPolicy implementation for AzureSQLProtectionPolicy. func (aspp AzureSQLProtectionPolicy) AsMabProtectionPolicy() (*MabProtectionPolicy, bool) { return nil, false } // UnmarshalJSON is the custom unmarshaler for AzureSQLProtectionPolicy struct. func (aspp *AzureSQLProtectionPolicy) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["retentionPolicy"] if v != nil { retentionPolicy, err := unmarshalRetentionPolicy(*m["retentionPolicy"]) if err != nil { return err } aspp.RetentionPolicy = retentionPolicy } v = m["protectedItemsCount"] if v != nil { var protectedItemsCount int32 err = json.Unmarshal(*m["protectedItemsCount"], &protectedItemsCount) if err != nil { return err } aspp.ProtectedItemsCount = &protectedItemsCount } v = m["backupManagementType"] if v != nil { var backupManagementType BackupManagementType err = json.Unmarshal(*m["backupManagementType"], &backupManagementType) if err != nil { return err } aspp.BackupManagementType = backupManagementType } return nil } // BackupEngineBase is the base backup engine class. All workload specific backup engines derive from this class. type BackupEngineBase interface { AsAzureBackupServerEngine() (*AzureBackupServerEngine, bool) AsDpmBackupEngine() (*DpmBackupEngine, bool) } func unmarshalBackupEngineBase(body []byte) (BackupEngineBase, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["backupEngineType"] { case string(BackupEngineTypeAzureBackupServerEngine): var abse AzureBackupServerEngine err := json.Unmarshal(body, &abse) return abse, err case string(BackupEngineTypeDpmBackupEngine): var dbe DpmBackupEngine err := json.Unmarshal(body, &dbe) return dbe, err default: return nil, errors.New("Unsupported type") } } func unmarshalBackupEngineBaseArray(body []byte) ([]BackupEngineBase, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } bebArray := make([]BackupEngineBase, len(rawMessages)) for index, rawMessage := range rawMessages { beb, err := unmarshalBackupEngineBase(*rawMessage) if err != nil { return nil, err } bebArray[index] = beb } return bebArray, nil } // BackupEngineBaseResource is the base backup engine class. All workload specific backup engines derive from this // class. type BackupEngineBaseResource struct { autorest.Response `json:"-"` ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties BackupEngineBase `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for BackupEngineBaseResource struct. func (bebr *BackupEngineBaseResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["properties"] if v != nil { properties, err := unmarshalBackupEngineBase(*m["properties"]) if err != nil { return err } bebr.Properties = properties } v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } bebr.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } bebr.Name = &name } v = m["type"] if v != nil { var typeVar string err = json.Unmarshal(*m["type"], &typeVar) if err != nil { return err } bebr.Type = &typeVar } v = m["location"] if v != nil { var location string err = json.Unmarshal(*m["location"], &location) if err != nil { return err } bebr.Location = &location } v = m["tags"] if v != nil { var tags map[string]*string err = json.Unmarshal(*m["tags"], &tags) if err != nil { return err } bebr.Tags = &tags } v = m["eTag"] if v != nil { var eTag string err = json.Unmarshal(*m["eTag"], &eTag) if err != nil { return err } bebr.ETag = &eTag } return nil } // BackupEngineBaseResourceList is list of BackupEngineBase resources type BackupEngineBaseResourceList struct { autorest.Response `json:"-"` NextLink *string `json:"nextLink,omitempty"` Value *[]BackupEngineBaseResource `json:"value,omitempty"` } // BackupEngineBaseResourceListPreparer prepares a request to retrieve the next set of results. It returns // nil if no more results exist. func (client BackupEngineBaseResourceList) BackupEngineBaseResourceListPreparer() (*http.Request, error) { if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { return nil, nil } return autorest.Prepare(&http.Request{}, autorest.AsJSON(), autorest.AsGet(), autorest.WithBaseURL(to.String(client.NextLink))) } // BackupEngineExtendedInfo is additional information on backup engine. type BackupEngineExtendedInfo struct { DatabaseName *string `json:"databaseName,omitempty"` ProtectedItemsCount *int32 `json:"protectedItemsCount,omitempty"` ProtectedServersCount *int32 `json:"protectedServersCount,omitempty"` DiskCount *int32 `json:"diskCount,omitempty"` UsedDiskSpace *float64 `json:"usedDiskSpace,omitempty"` AvailableDiskSpace *float64 `json:"availableDiskSpace,omitempty"` RefreshedAt *date.Time `json:"refreshedAt,omitempty"` AzureProtectedInstances *int32 `json:"azureProtectedInstances,omitempty"` } // BackupManagementUsage is backup management usages of a vault. type BackupManagementUsage struct { Unit UsagesUnit `json:"unit,omitempty"` QuotaPeriod *string `json:"quotaPeriod,omitempty"` NextResetTime *date.Time `json:"nextResetTime,omitempty"` CurrentValue *int64 `json:"currentValue,omitempty"` Limit *int64 `json:"limit,omitempty"` Name *NameInfo `json:"name,omitempty"` } // BackupManagementUsageList is backup management usage for vault. type BackupManagementUsageList struct { autorest.Response `json:"-"` Value *[]BackupManagementUsage `json:"value,omitempty"` } // BackupRequest is base class for backup request. Workload-specific backup requests are derived from this class. type BackupRequest interface { AsIaasVMBackupRequest() (*IaasVMBackupRequest, bool) } func unmarshalBackupRequest(body []byte) (BackupRequest, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["objectType"] { case string(ObjectTypeIaasVMBackupRequest): var ivbr IaasVMBackupRequest err := json.Unmarshal(body, &ivbr) return ivbr, err default: return nil, errors.New("Unsupported type") } } func unmarshalBackupRequestArray(body []byte) ([]BackupRequest, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } brArray := make([]BackupRequest, len(rawMessages)) for index, rawMessage := range rawMessages { br, err := unmarshalBackupRequest(*rawMessage) if err != nil { return nil, err } brArray[index] = br } return brArray, nil } // BackupRequestResource is base class for backup request. Workload-specific backup requests are derived from this // class. type BackupRequestResource struct { ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties BackupRequest `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for BackupRequestResource struct. func (brr *BackupRequestResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["properties"] if v != nil { properties, err := unmarshalBackupRequest(*m["properties"]) if err != nil { return err } brr.Properties = properties } v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } brr.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } brr.Name = &name } v = m["type"] if v != nil { var typeVar string err = json.Unmarshal(*m["type"], &typeVar) if err != nil { return err } brr.Type = &typeVar } v = m["location"] if v != nil { var location string err = json.Unmarshal(*m["location"], &location) if err != nil { return err } brr.Location = &location } v = m["tags"] if v != nil { var tags map[string]*string err = json.Unmarshal(*m["tags"], &tags) if err != nil { return err } brr.Tags = &tags } v = m["eTag"] if v != nil { var eTag string err = json.Unmarshal(*m["eTag"], &eTag) if err != nil { return err } brr.ETag = &eTag } return nil } // BackupResourceConfig is the resource storage details. type BackupResourceConfig struct { StorageType StorageType `json:"storageType,omitempty"` StorageTypeState StorageTypeState `json:"storageTypeState,omitempty"` } // BackupResourceConfigResource is the resource storage details. type BackupResourceConfigResource struct { autorest.Response `json:"-"` ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties *BackupResourceConfig `json:"properties,omitempty"` } // BackupResourceVaultConfig is backup resource vault config details. type BackupResourceVaultConfig struct { StorageType StorageType `json:"storageType,omitempty"` StorageTypeState StorageTypeState `json:"storageTypeState,omitempty"` EnhancedSecurityState EnhancedSecurityState `json:"enhancedSecurityState,omitempty"` } // BackupResourceVaultConfigResource is backup resource vault config details. type BackupResourceVaultConfigResource struct { autorest.Response `json:"-"` ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties *BackupResourceVaultConfig `json:"properties,omitempty"` } // BEKDetails is BEK is bitlocker encrpytion key. type BEKDetails struct { SecretURL *string `json:"secretUrl,omitempty"` SecretVaultID *string `json:"secretVaultId,omitempty"` SecretData *string `json:"secretData,omitempty"` } // BMSBackupEngineQueryObject is query parameters to fetch list of backup engines. type BMSBackupEngineQueryObject struct { Expand *string `json:"expand,omitempty"` } // BMSBackupEnginesQueryObject is query parameters to fetch list of backup engines. type BMSBackupEnginesQueryObject struct { BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` Expand *string `json:"expand,omitempty"` } // BMSBackupSummariesQueryObject is query parameters to fetch backup summaries. type BMSBackupSummariesQueryObject struct { Type Type `json:"type,omitempty"` } // BMSContainerQueryObject is the query filters that can be used with the list containers API. type BMSContainerQueryObject struct { BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` ContainerType ContainerType `json:"containerType,omitempty"` BackupEngineName *string `json:"backupEngineName,omitempty"` Status *string `json:"status,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` } // BMSPOQueryObject is filters to list items that can be backed up. type BMSPOQueryObject struct { BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` Status *string `json:"status,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` } // BMSRPQueryObject is filters to list backup copies. type BMSRPQueryObject struct { StartDate *date.Time `json:"startDate,omitempty"` EndDate *date.Time `json:"endDate,omitempty"` } // ClientDiscoveryDisplay is localized display information of an operation. type ClientDiscoveryDisplay struct { Provider *string `json:"Provider,omitempty"` Resource *string `json:"Resource,omitempty"` Operation *string `json:"Operation,omitempty"` Description *string `json:"Description,omitempty"` } // ClientDiscoveryForLogSpecification is class to represent shoebox log specification in json client discovery. type ClientDiscoveryForLogSpecification struct { Name *string `json:"name,omitempty"` DisplayName *string `json:"displayName,omitempty"` BlobDuration *string `json:"blobDuration,omitempty"` } // ClientDiscoveryForProperties is class to represent shoebox properties in json client discovery. type ClientDiscoveryForProperties struct { ServiceSpecification *ClientDiscoveryForServiceSpecification `json:"serviceSpecification,omitempty"` } // ClientDiscoveryForServiceSpecification is class to represent shoebox service specification in json client discovery. type ClientDiscoveryForServiceSpecification struct { LogSpecifications *[]ClientDiscoveryForLogSpecification `json:"logSpecifications,omitempty"` } // ClientDiscoveryResponse is operations List response which contains list of available APIs. type ClientDiscoveryResponse struct { autorest.Response `json:"-"` Value *[]ClientDiscoveryValueForSingleAPI `json:"Value,omitempty"` NextLink *string `json:"NextLink,omitempty"` } // ClientDiscoveryResponsePreparer prepares a request to retrieve the next set of results. It returns // nil if no more results exist. func (client ClientDiscoveryResponse) ClientDiscoveryResponsePreparer() (*http.Request, error) { if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { return nil, nil } return autorest.Prepare(&http.Request{}, autorest.AsJSON(), autorest.AsGet(), autorest.WithBaseURL(to.String(client.NextLink))) } // ClientDiscoveryValueForSingleAPI is available operation details. type ClientDiscoveryValueForSingleAPI struct { Name *string `json:"Name,omitempty"` Display *ClientDiscoveryDisplay `json:"Display,omitempty"` Origin *string `json:"Origin,omitempty"` Properties *ClientDiscoveryForProperties `json:"Properties,omitempty"` } // ClientScriptForConnect is client script details for file / folder restore. type ClientScriptForConnect struct { ScriptContent *string `json:"scriptContent,omitempty"` ScriptExtension *string `json:"scriptExtension,omitempty"` OsType *string `json:"osType,omitempty"` URL *string `json:"url,omitempty"` ScriptNameSuffix *string `json:"scriptNameSuffix,omitempty"` } // DailyRetentionFormat is daily retention format. type DailyRetentionFormat struct { DaysOfTheMonth *[]Day `json:"daysOfTheMonth,omitempty"` } // DailyRetentionSchedule is daily retention schedule. type DailyRetentionSchedule struct { RetentionTimes *[]date.Time `json:"retentionTimes,omitempty"` RetentionDuration *RetentionDuration `json:"retentionDuration,omitempty"` } // Day is day of the week. type Day struct { Date *int32 `json:"date,omitempty"` IsLast *bool `json:"isLast,omitempty"` } // DpmBackupEngine is data Protection Manager (DPM) specific backup engine. type DpmBackupEngine struct { FriendlyName *string `json:"friendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` RegistrationStatus *string `json:"registrationStatus,omitempty"` BackupEngineState *string `json:"backupEngineState,omitempty"` HealthStatus *string `json:"healthStatus,omitempty"` CanReRegister *bool `json:"canReRegister,omitempty"` BackupEngineID *string `json:"backupEngineId,omitempty"` DpmVersion *string `json:"dpmVersion,omitempty"` AzureBackupAgentVersion *string `json:"azureBackupAgentVersion,omitempty"` IsAzureBackupAgentUpgradeAvailable *bool `json:"isAzureBackupAgentUpgradeAvailable,omitempty"` IsDPMUpgradeAvailable *bool `json:"isDPMUpgradeAvailable,omitempty"` ExtendedInfo *BackupEngineExtendedInfo `json:"extendedInfo,omitempty"` BackupEngineType BackupEngineType `json:"backupEngineType,omitempty"` } // MarshalJSON is the custom marshaler for DpmBackupEngine. func (dbe DpmBackupEngine) MarshalJSON() ([]byte, error) { dbe.BackupEngineType = BackupEngineTypeDpmBackupEngine type Alias DpmBackupEngine return json.Marshal(&struct { Alias }{ Alias: (Alias)(dbe), }) } // AsAzureBackupServerEngine is the BackupEngineBase implementation for DpmBackupEngine. func (dbe DpmBackupEngine) AsAzureBackupServerEngine() (*AzureBackupServerEngine, bool) { return nil, false } // AsDpmBackupEngine is the BackupEngineBase implementation for DpmBackupEngine. func (dbe DpmBackupEngine) AsDpmBackupEngine() (*DpmBackupEngine, bool) { return &dbe, true } // DpmContainer is DPM workload-specific protection container. type DpmContainer struct { FriendlyName *string `json:"friendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` RegistrationStatus *string `json:"registrationStatus,omitempty"` HealthStatus *string `json:"healthStatus,omitempty"` ContainerType ContainerType `json:"containerType,omitempty"` ProtectableObjectType ProtectableObjectType `json:"protectableObjectType,omitempty"` CanReRegister *bool `json:"canReRegister,omitempty"` ContainerID *string `json:"containerId,omitempty"` ProtectedItemCount *int64 `json:"protectedItemCount,omitempty"` DpmAgentVersion *string `json:"dpmAgentVersion,omitempty"` DPMServers *[]string `json:"DPMServers,omitempty"` UpgradeAvailable *bool `json:"UpgradeAvailable,omitempty"` ProtectionStatus *string `json:"protectionStatus,omitempty"` ExtendedInfo *DPMContainerExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for DpmContainer. func (dc DpmContainer) MarshalJSON() ([]byte, error) { dc.ProtectableObjectType = ProtectableObjectTypeDPMContainer type Alias DpmContainer return json.Marshal(&struct { Alias }{ Alias: (Alias)(dc), }) } // AsAzureBackupServerContainer is the ProtectionContainer implementation for DpmContainer. func (dc DpmContainer) AsAzureBackupServerContainer() (*AzureBackupServerContainer, bool) { return nil, false } // AsAzureIaaSClassicComputeVMContainer is the ProtectionContainer implementation for DpmContainer. func (dc DpmContainer) AsAzureIaaSClassicComputeVMContainer() (*AzureIaaSClassicComputeVMContainer, bool) { return nil, false } // AsAzureIaaSComputeVMContainer is the ProtectionContainer implementation for DpmContainer. func (dc DpmContainer) AsAzureIaaSComputeVMContainer() (*AzureIaaSComputeVMContainer, bool) { return nil, false } // AsAzureSQLContainer is the ProtectionContainer implementation for DpmContainer. func (dc DpmContainer) AsAzureSQLContainer() (*AzureSQLContainer, bool) { return nil, false } // AsDpmContainer is the ProtectionContainer implementation for DpmContainer. func (dc DpmContainer) AsDpmContainer() (*DpmContainer, bool) { return &dc, true } // AsIaaSVMContainer is the ProtectionContainer implementation for DpmContainer. func (dc DpmContainer) AsIaaSVMContainer() (*IaaSVMContainer, bool) { return nil, false } // AsMabContainer is the ProtectionContainer implementation for DpmContainer. func (dc DpmContainer) AsMabContainer() (*MabContainer, bool) { return nil, false } // DPMContainerExtendedInfo is additional information of the DPMContainer. type DPMContainerExtendedInfo struct { LastRefreshedAt *date.Time `json:"lastRefreshedAt,omitempty"` } // DpmErrorInfo is DPM workload-specific error information. type DpmErrorInfo struct { ErrorString *string `json:"errorString,omitempty"` Recommendations *[]string `json:"recommendations,omitempty"` } // DpmJob is DPM workload-specifc job object. type DpmJob struct { EntityFriendlyName *string `json:"entityFriendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` Operation *string `json:"operation,omitempty"` Status *string `json:"status,omitempty"` StartTime *date.Time `json:"startTime,omitempty"` EndTime *date.Time `json:"endTime,omitempty"` ActivityID *string `json:"activityId,omitempty"` JobType JobType `json:"jobType,omitempty"` Duration *string `json:"duration,omitempty"` DpmServerName *string `json:"dpmServerName,omitempty"` ContainerName *string `json:"containerName,omitempty"` ContainerType *string `json:"containerType,omitempty"` WorkloadType *string `json:"workloadType,omitempty"` ActionsInfo *[]JobSupportedAction `json:"actionsInfo,omitempty"` ErrorDetails *[]DpmErrorInfo `json:"errorDetails,omitempty"` ExtendedInfo *DpmJobExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for DpmJob. func (dj DpmJob) MarshalJSON() ([]byte, error) { dj.JobType = JobTypeDpmJob type Alias DpmJob return json.Marshal(&struct { Alias }{ Alias: (Alias)(dj), }) } // AsAzureIaaSVMJob is the Job implementation for DpmJob. func (dj DpmJob) AsAzureIaaSVMJob() (*AzureIaaSVMJob, bool) { return nil, false } // AsDpmJob is the Job implementation for DpmJob. func (dj DpmJob) AsDpmJob() (*DpmJob, bool) { return &dj, true } // AsMabJob is the Job implementation for DpmJob. func (dj DpmJob) AsMabJob() (*MabJob, bool) { return nil, false } // DpmJobExtendedInfo is additional information on the DPM workload-specific job. type DpmJobExtendedInfo struct { TasksList *[]DpmJobTaskDetails `json:"tasksList,omitempty"` PropertyBag *map[string]*string `json:"propertyBag,omitempty"` DynamicErrorMessage *string `json:"dynamicErrorMessage,omitempty"` } // DpmJobTaskDetails is DPM workload-specific job task details. type DpmJobTaskDetails struct { TaskID *string `json:"taskId,omitempty"` StartTime *date.Time `json:"startTime,omitempty"` EndTime *date.Time `json:"endTime,omitempty"` Duration *string `json:"duration,omitempty"` Status *string `json:"status,omitempty"` } // DPMProtectedItem is additional information on Backup engine specific backup item. type DPMProtectedItem struct { BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` WorkloadType DataSourceType `json:"workloadType,omitempty"` ContainerName *string `json:"containerName,omitempty"` SourceResourceID *string `json:"sourceResourceId,omitempty"` PolicyID *string `json:"policyId,omitempty"` LastRecoveryPoint *date.Time `json:"lastRecoveryPoint,omitempty"` ProtectedItemType ProtectedItemType `json:"protectedItemType,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` BackupEngineName *string `json:"backupEngineName,omitempty"` ProtectionState ProtectedItemState `json:"protectionState,omitempty"` IsScheduledForDeferredDelete *bool `json:"isScheduledForDeferredDelete,omitempty"` ExtendedInfo *DPMProtectedItemExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for DPMProtectedItem. func (dpi DPMProtectedItem) MarshalJSON() ([]byte, error) { dpi.ProtectedItemType = ProtectedItemTypeDPMProtectedItem type Alias DPMProtectedItem return json.Marshal(&struct { Alias }{ Alias: (Alias)(dpi), }) } // AsAzureIaaSClassicComputeVMProtectedItem is the ProtectedItem implementation for DPMProtectedItem. func (dpi DPMProtectedItem) AsAzureIaaSClassicComputeVMProtectedItem() (*AzureIaaSClassicComputeVMProtectedItem, bool) { return nil, false } // AsAzureIaaSComputeVMProtectedItem is the ProtectedItem implementation for DPMProtectedItem. func (dpi DPMProtectedItem) AsAzureIaaSComputeVMProtectedItem() (*AzureIaaSComputeVMProtectedItem, bool) { return nil, false } // AsAzureIaaSVMProtectedItem is the ProtectedItem implementation for DPMProtectedItem. func (dpi DPMProtectedItem) AsAzureIaaSVMProtectedItem() (*AzureIaaSVMProtectedItem, bool) { return nil, false } // AsAzureSQLProtectedItem is the ProtectedItem implementation for DPMProtectedItem. func (dpi DPMProtectedItem) AsAzureSQLProtectedItem() (*AzureSQLProtectedItem, bool) { return nil, false } // AsDPMProtectedItem is the ProtectedItem implementation for DPMProtectedItem. func (dpi DPMProtectedItem) AsDPMProtectedItem() (*DPMProtectedItem, bool) { return &dpi, true } // AsMabFileFolderProtectedItem is the ProtectedItem implementation for DPMProtectedItem. func (dpi DPMProtectedItem) AsMabFileFolderProtectedItem() (*MabFileFolderProtectedItem, bool) { return nil, false } // DPMProtectedItemExtendedInfo is additional information of DPM Protected item. type DPMProtectedItemExtendedInfo struct { ProtectableObjectLoadPath *map[string]*string `json:"protectableObjectLoadPath,omitempty"` Protected *bool `json:"protected,omitempty"` IsPresentOnCloud *bool `json:"isPresentOnCloud,omitempty"` LastBackupStatus *string `json:"lastBackupStatus,omitempty"` LastRefreshedAt *date.Time `json:"lastRefreshedAt,omitempty"` OldestRecoveryPoint *date.Time `json:"oldestRecoveryPoint,omitempty"` RecoveryPointCount *int32 `json:"recoveryPointCount,omitempty"` OnPremiseOldestRecoveryPoint *date.Time `json:"onPremiseOldestRecoveryPoint,omitempty"` OnPremiseLatestRecoveryPoint *date.Time `json:"onPremiseLatestRecoveryPoint,omitempty"` OnPremiseRecoveryPointCount *int32 `json:"onPremiseRecoveryPointCount,omitempty"` IsCollocated *bool `json:"isCollocated,omitempty"` ProtectionGroupName *string `json:"protectionGroupName,omitempty"` DiskStorageUsedInBytes *string `json:"diskStorageUsedInBytes,omitempty"` TotalDiskStorageSizeInBytes *string `json:"totalDiskStorageSizeInBytes,omitempty"` } // EncryptionDetails is details needed if the VM was encrypted at the time of backup. type EncryptionDetails struct { EncryptionEnabled *bool `json:"encryptionEnabled,omitempty"` KekURL *string `json:"kekUrl,omitempty"` SecretKeyURL *string `json:"secretKeyUrl,omitempty"` KekVaultID *string `json:"kekVaultId,omitempty"` SecretKeyVaultID *string `json:"secretKeyVaultId,omitempty"` } // ExportJobsOperationResultInfo is this class is used to send blob details after exporting jobs. type ExportJobsOperationResultInfo struct { ObjectType ObjectTypeOperationResultInfoBase `json:"objectType,omitempty"` BlobURL *string `json:"blobUrl,omitempty"` BlobSasKey *string `json:"blobSasKey,omitempty"` } // MarshalJSON is the custom marshaler for ExportJobsOperationResultInfo. func (ejori ExportJobsOperationResultInfo) MarshalJSON() ([]byte, error) { ejori.ObjectType = ObjectTypeExportJobsOperationResultInfo type Alias ExportJobsOperationResultInfo return json.Marshal(&struct { Alias }{ Alias: (Alias)(ejori), }) } // AsExportJobsOperationResultInfo is the OperationResultInfoBase implementation for ExportJobsOperationResultInfo. func (ejori ExportJobsOperationResultInfo) AsExportJobsOperationResultInfo() (*ExportJobsOperationResultInfo, bool) { return &ejori, true } // AsOperationResultInfo is the OperationResultInfoBase implementation for ExportJobsOperationResultInfo. func (ejori ExportJobsOperationResultInfo) AsOperationResultInfo() (*OperationResultInfo, bool) { return nil, false } // GenericRecoveryPoint is generic backup copy. type GenericRecoveryPoint struct { ObjectType ObjectTypeRecoveryPoint `json:"objectType,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` RecoveryPointType *string `json:"recoveryPointType,omitempty"` RecoveryPointTime *date.Time `json:"recoveryPointTime,omitempty"` RecoveryPointAdditionalInfo *string `json:"recoveryPointAdditionalInfo,omitempty"` } // MarshalJSON is the custom marshaler for GenericRecoveryPoint. func (grp GenericRecoveryPoint) MarshalJSON() ([]byte, error) { grp.ObjectType = ObjectTypeGenericRecoveryPoint type Alias GenericRecoveryPoint return json.Marshal(&struct { Alias }{ Alias: (Alias)(grp), }) } // AsGenericRecoveryPoint is the RecoveryPoint implementation for GenericRecoveryPoint. func (grp GenericRecoveryPoint) AsGenericRecoveryPoint() (*GenericRecoveryPoint, bool) { return &grp, true } // AsIaasVMRecoveryPoint is the RecoveryPoint implementation for GenericRecoveryPoint. func (grp GenericRecoveryPoint) AsIaasVMRecoveryPoint() (*IaasVMRecoveryPoint, bool) { return nil, false } // GetProtectedItemQueryObject is filters to list backup items. type GetProtectedItemQueryObject struct { Expand *string `json:"expand,omitempty"` } // IaasVMBackupRequest is iaaS VM workload-specific backup request. type IaasVMBackupRequest struct { ObjectType ObjectType `json:"objectType,omitempty"` RecoveryPointExpiryTimeInUTC *date.Time `json:"recoveryPointExpiryTimeInUTC,omitempty"` } // MarshalJSON is the custom marshaler for IaasVMBackupRequest. func (ivbr IaasVMBackupRequest) MarshalJSON() ([]byte, error) { ivbr.ObjectType = ObjectTypeIaasVMBackupRequest type Alias IaasVMBackupRequest return json.Marshal(&struct { Alias }{ Alias: (Alias)(ivbr), }) } // AsIaasVMBackupRequest is the BackupRequest implementation for IaasVMBackupRequest. func (ivbr IaasVMBackupRequest) AsIaasVMBackupRequest() (*IaasVMBackupRequest, bool) { return &ivbr, true } // IaaSVMContainer is iaaS VM workload-specific container. type IaaSVMContainer struct { FriendlyName *string `json:"friendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` RegistrationStatus *string `json:"registrationStatus,omitempty"` HealthStatus *string `json:"healthStatus,omitempty"` ContainerType ContainerType `json:"containerType,omitempty"` ProtectableObjectType ProtectableObjectType `json:"protectableObjectType,omitempty"` VirtualMachineID *string `json:"virtualMachineId,omitempty"` VirtualMachineVersion *string `json:"virtualMachineVersion,omitempty"` ResourceGroup *string `json:"resourceGroup,omitempty"` } // MarshalJSON is the custom marshaler for IaaSVMContainer. func (isc IaaSVMContainer) MarshalJSON() ([]byte, error) { isc.ProtectableObjectType = ProtectableObjectTypeIaaSVMContainer type Alias IaaSVMContainer return json.Marshal(&struct { Alias }{ Alias: (Alias)(isc), }) } // AsAzureBackupServerContainer is the ProtectionContainer implementation for IaaSVMContainer. func (isc IaaSVMContainer) AsAzureBackupServerContainer() (*AzureBackupServerContainer, bool) { return nil, false } // AsAzureIaaSClassicComputeVMContainer is the ProtectionContainer implementation for IaaSVMContainer. func (isc IaaSVMContainer) AsAzureIaaSClassicComputeVMContainer() (*AzureIaaSClassicComputeVMContainer, bool) { return nil, false } // AsAzureIaaSComputeVMContainer is the ProtectionContainer implementation for IaaSVMContainer. func (isc IaaSVMContainer) AsAzureIaaSComputeVMContainer() (*AzureIaaSComputeVMContainer, bool) { return nil, false } // AsAzureSQLContainer is the ProtectionContainer implementation for IaaSVMContainer. func (isc IaaSVMContainer) AsAzureSQLContainer() (*AzureSQLContainer, bool) { return nil, false } // AsDpmContainer is the ProtectionContainer implementation for IaaSVMContainer. func (isc IaaSVMContainer) AsDpmContainer() (*DpmContainer, bool) { return nil, false } // AsIaaSVMContainer is the ProtectionContainer implementation for IaaSVMContainer. func (isc IaaSVMContainer) AsIaaSVMContainer() (*IaaSVMContainer, bool) { return &isc, true } // AsMabContainer is the ProtectionContainer implementation for IaaSVMContainer. func (isc IaaSVMContainer) AsMabContainer() (*MabContainer, bool) { return nil, false } // IaasVMILRRegistrationRequest is restore files/folders from a backup copy of IaaS VM. type IaasVMILRRegistrationRequest struct { ObjectType ObjectTypeILRRequest `json:"objectType,omitempty"` RecoveryPointID *string `json:"recoveryPointId,omitempty"` VirtualMachineID *string `json:"virtualMachineId,omitempty"` InitiatorName *string `json:"initiatorName,omitempty"` RenewExistingRegistration *bool `json:"renewExistingRegistration,omitempty"` } // MarshalJSON is the custom marshaler for IaasVMILRRegistrationRequest. func (ivrr IaasVMILRRegistrationRequest) MarshalJSON() ([]byte, error) { ivrr.ObjectType = ObjectTypeIaasVMILRRegistrationRequest type Alias IaasVMILRRegistrationRequest return json.Marshal(&struct { Alias }{ Alias: (Alias)(ivrr), }) } // AsIaasVMILRRegistrationRequest is the ILRRequest implementation for IaasVMILRRegistrationRequest. func (ivrr IaasVMILRRegistrationRequest) AsIaasVMILRRegistrationRequest() (*IaasVMILRRegistrationRequest, bool) { return &ivrr, true } // IaaSVMProtectableItem is iaaS VM workload-specific backup item. type IaaSVMProtectableItem struct { BackupManagementType *string `json:"backupManagementType,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` ProtectionState ProtectionStatus `json:"protectionState,omitempty"` ProtectableItemType ProtectableItemType `json:"protectableItemType,omitempty"` VirtualMachineID *string `json:"virtualMachineId,omitempty"` } // MarshalJSON is the custom marshaler for IaaSVMProtectableItem. func (ispi IaaSVMProtectableItem) MarshalJSON() ([]byte, error) { ispi.ProtectableItemType = ProtectableItemTypeIaaSVMProtectableItem type Alias IaaSVMProtectableItem return json.Marshal(&struct { Alias }{ Alias: (Alias)(ispi), }) } // AsAzureIaaSClassicComputeVMProtectableItem is the WorkloadProtectableItem implementation for IaaSVMProtectableItem. func (ispi IaaSVMProtectableItem) AsAzureIaaSClassicComputeVMProtectableItem() (*AzureIaaSClassicComputeVMProtectableItem, bool) { return nil, false } // AsAzureIaaSComputeVMProtectableItem is the WorkloadProtectableItem implementation for IaaSVMProtectableItem. func (ispi IaaSVMProtectableItem) AsAzureIaaSComputeVMProtectableItem() (*AzureIaaSComputeVMProtectableItem, bool) { return nil, false } // AsIaaSVMProtectableItem is the WorkloadProtectableItem implementation for IaaSVMProtectableItem. func (ispi IaaSVMProtectableItem) AsIaaSVMProtectableItem() (*IaaSVMProtectableItem, bool) { return &ispi, true } // IaasVMRecoveryPoint is iaaS VM workload specific backup copy. type IaasVMRecoveryPoint struct { ObjectType ObjectTypeRecoveryPoint `json:"objectType,omitempty"` RecoveryPointType *string `json:"recoveryPointType,omitempty"` RecoveryPointTime *date.Time `json:"recoveryPointTime,omitempty"` RecoveryPointAdditionalInfo *string `json:"recoveryPointAdditionalInfo,omitempty"` SourceVMStorageType *string `json:"sourceVMStorageType,omitempty"` IsSourceVMEncrypted *bool `json:"isSourceVMEncrypted,omitempty"` KeyAndSecret *KeyAndSecretDetails `json:"keyAndSecret,omitempty"` IsInstantILRSessionActive *bool `json:"isInstantILRSessionActive,omitempty"` RecoveryPointTierDetails *[]RecoveryPointTierInformation `json:"recoveryPointTierDetails,omitempty"` IsManagedVirtualMachine *bool `json:"isManagedVirtualMachine,omitempty"` VirtualMachineSize *string `json:"virtualMachineSize,omitempty"` OriginalStorageAccountOption *bool `json:"originalStorageAccountOption,omitempty"` } // MarshalJSON is the custom marshaler for IaasVMRecoveryPoint. func (ivrp IaasVMRecoveryPoint) MarshalJSON() ([]byte, error) { ivrp.ObjectType = ObjectTypeIaasVMRecoveryPoint type Alias IaasVMRecoveryPoint return json.Marshal(&struct { Alias }{ Alias: (Alias)(ivrp), }) } // AsGenericRecoveryPoint is the RecoveryPoint implementation for IaasVMRecoveryPoint. func (ivrp IaasVMRecoveryPoint) AsGenericRecoveryPoint() (*GenericRecoveryPoint, bool) { return nil, false } // AsIaasVMRecoveryPoint is the RecoveryPoint implementation for IaasVMRecoveryPoint. func (ivrp IaasVMRecoveryPoint) AsIaasVMRecoveryPoint() (*IaasVMRecoveryPoint, bool) { return &ivrp, true } // IaasVMRestoreRequest is iaaS VM workload-specific restore. type IaasVMRestoreRequest struct { ObjectType ObjectTypeRestoreRequest `json:"objectType,omitempty"` RecoveryPointID *string `json:"recoveryPointId,omitempty"` RecoveryType RecoveryType `json:"recoveryType,omitempty"` SourceResourceID *string `json:"sourceResourceId,omitempty"` TargetVirtualMachineID *string `json:"targetVirtualMachineId,omitempty"` TargetResourceGroupID *string `json:"targetResourceGroupId,omitempty"` StorageAccountID *string `json:"storageAccountId,omitempty"` VirtualNetworkID *string `json:"virtualNetworkId,omitempty"` SubnetID *string `json:"subnetId,omitempty"` TargetDomainNameID *string `json:"targetDomainNameId,omitempty"` Region *string `json:"region,omitempty"` AffinityGroup *string `json:"affinityGroup,omitempty"` CreateNewCloudService *bool `json:"createNewCloudService,omitempty"` OriginalStorageAccountOption *bool `json:"originalStorageAccountOption,omitempty"` EncryptionDetails *EncryptionDetails `json:"encryptionDetails,omitempty"` } // MarshalJSON is the custom marshaler for IaasVMRestoreRequest. func (ivrr IaasVMRestoreRequest) MarshalJSON() ([]byte, error) { ivrr.ObjectType = ObjectTypeIaasVMRestoreRequest type Alias IaasVMRestoreRequest return json.Marshal(&struct { Alias }{ Alias: (Alias)(ivrr), }) } // AsIaasVMRestoreRequest is the RestoreRequest implementation for IaasVMRestoreRequest. func (ivrr IaasVMRestoreRequest) AsIaasVMRestoreRequest() (*IaasVMRestoreRequest, bool) { return &ivrr, true } // ILRRequest is parameters to restore file/folders API. type ILRRequest interface { AsIaasVMILRRegistrationRequest() (*IaasVMILRRegistrationRequest, bool) } func unmarshalILRRequest(body []byte) (ILRRequest, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["objectType"] { case string(ObjectTypeIaasVMILRRegistrationRequest): var ivrr IaasVMILRRegistrationRequest err := json.Unmarshal(body, &ivrr) return ivrr, err default: return nil, errors.New("Unsupported type") } } func unmarshalILRRequestArray(body []byte) ([]ILRRequest, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } irArray := make([]ILRRequest, len(rawMessages)) for index, rawMessage := range rawMessages { ir, err := unmarshalILRRequest(*rawMessage) if err != nil { return nil, err } irArray[index] = ir } return irArray, nil } // ILRRequestResource is parameters to restore file/folders API. type ILRRequestResource struct { ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties ILRRequest `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for ILRRequestResource struct. func (irr *ILRRequestResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["properties"] if v != nil { properties, err := unmarshalILRRequest(*m["properties"]) if err != nil { return err } irr.Properties = properties } v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } irr.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } irr.Name = &name } v = m["type"] if v != nil { var typeVar string err = json.Unmarshal(*m["type"], &typeVar) if err != nil { return err } irr.Type = &typeVar } v = m["location"] if v != nil { var location string err = json.Unmarshal(*m["location"], &location) if err != nil { return err } irr.Location = &location } v = m["tags"] if v != nil { var tags map[string]*string err = json.Unmarshal(*m["tags"], &tags) if err != nil { return err } irr.Tags = &tags } v = m["eTag"] if v != nil { var eTag string err = json.Unmarshal(*m["eTag"], &eTag) if err != nil { return err } irr.ETag = &eTag } return nil } // InstantItemRecoveryTarget is target details for file / folder restore. type InstantItemRecoveryTarget struct { ClientScripts *[]ClientScriptForConnect `json:"clientScripts,omitempty"` } // Job is defines workload agnostic properties for a job. type Job interface { AsAzureIaaSVMJob() (*AzureIaaSVMJob, bool) AsDpmJob() (*DpmJob, bool) AsMabJob() (*MabJob, bool) } func unmarshalJob(body []byte) (Job, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["jobType"] { case string(JobTypeAzureIaaSVMJob): var aisj AzureIaaSVMJob err := json.Unmarshal(body, &aisj) return aisj, err case string(JobTypeDpmJob): var dj DpmJob err := json.Unmarshal(body, &dj) return dj, err case string(JobTypeMabJob): var mj MabJob err := json.Unmarshal(body, &mj) return mj, err default: return nil, errors.New("Unsupported type") } } func unmarshalJobArray(body []byte) ([]Job, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } jArray := make([]Job, len(rawMessages)) for index, rawMessage := range rawMessages { j, err := unmarshalJob(*rawMessage) if err != nil { return nil, err } jArray[index] = j } return jArray, nil } // JobQueryObject is filters to list the jobs. type JobQueryObject struct { Status JobStatus `json:"status,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` Operation JobOperationType `json:"operation,omitempty"` JobID *string `json:"jobId,omitempty"` StartTime *date.Time `json:"startTime,omitempty"` EndTime *date.Time `json:"endTime,omitempty"` } // JobResource is defines workload agnostic properties for a job. type JobResource struct { autorest.Response `json:"-"` ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties Job `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for JobResource struct. func (jr *JobResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["properties"] if v != nil { properties, err := unmarshalJob(*m["properties"]) if err != nil { return err } jr.Properties = properties } v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } jr.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } jr.Name = &name } v = m["type"] if v != nil { var typeVar string err = json.Unmarshal(*m["type"], &typeVar) if err != nil { return err } jr.Type = &typeVar } v = m["location"] if v != nil { var location string err = json.Unmarshal(*m["location"], &location) if err != nil { return err } jr.Location = &location } v = m["tags"] if v != nil { var tags map[string]*string err = json.Unmarshal(*m["tags"], &tags) if err != nil { return err } jr.Tags = &tags } v = m["eTag"] if v != nil { var eTag string err = json.Unmarshal(*m["eTag"], &eTag) if err != nil { return err } jr.ETag = &eTag } return nil } // JobResourceList is list of Job resources type JobResourceList struct { autorest.Response `json:"-"` NextLink *string `json:"nextLink,omitempty"` Value *[]JobResource `json:"value,omitempty"` } // JobResourceListPreparer prepares a request to retrieve the next set of results. It returns // nil if no more results exist. func (client JobResourceList) JobResourceListPreparer() (*http.Request, error) { if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { return nil, nil } return autorest.Prepare(&http.Request{}, autorest.AsJSON(), autorest.AsGet(), autorest.WithBaseURL(to.String(client.NextLink))) } // KEKDetails is KEK is encryption key for BEK. type KEKDetails struct { KeyURL *string `json:"keyUrl,omitempty"` KeyVaultID *string `json:"keyVaultId,omitempty"` KeyBackupData *string `json:"keyBackupData,omitempty"` } // KeyAndSecretDetails is BEK is bitlocker key. // KEK is encryption key for BEK // If the VM was encrypted then we will store follwing details : // 1. Secret(BEK) - Url + Backup Data + vaultId. // 2. Key(KEK) - Url + Backup Data + vaultId. // BEK and KEK can potentiallty have different vault ids. type KeyAndSecretDetails struct { KekDetails *KEKDetails `json:"kekDetails,omitempty"` BekDetails *BEKDetails `json:"bekDetails,omitempty"` } // LongTermRetentionPolicy is long term retention policy. type LongTermRetentionPolicy struct { RetentionPolicyType RetentionPolicyType `json:"retentionPolicyType,omitempty"` DailySchedule *DailyRetentionSchedule `json:"dailySchedule,omitempty"` WeeklySchedule *WeeklyRetentionSchedule `json:"weeklySchedule,omitempty"` MonthlySchedule *MonthlyRetentionSchedule `json:"monthlySchedule,omitempty"` YearlySchedule *YearlyRetentionSchedule `json:"yearlySchedule,omitempty"` } // MarshalJSON is the custom marshaler for LongTermRetentionPolicy. func (ltrp LongTermRetentionPolicy) MarshalJSON() ([]byte, error) { ltrp.RetentionPolicyType = RetentionPolicyTypeLongTermRetentionPolicy type Alias LongTermRetentionPolicy return json.Marshal(&struct { Alias }{ Alias: (Alias)(ltrp), }) } // AsLongTermRetentionPolicy is the RetentionPolicy implementation for LongTermRetentionPolicy. func (ltrp LongTermRetentionPolicy) AsLongTermRetentionPolicy() (*LongTermRetentionPolicy, bool) { return <rp, true } // AsSimpleRetentionPolicy is the RetentionPolicy implementation for LongTermRetentionPolicy. func (ltrp LongTermRetentionPolicy) AsSimpleRetentionPolicy() (*SimpleRetentionPolicy, bool) { return nil, false } // LongTermSchedulePolicy is long term policy schedule. type LongTermSchedulePolicy struct { SchedulePolicyType SchedulePolicyType `json:"schedulePolicyType,omitempty"` } // MarshalJSON is the custom marshaler for LongTermSchedulePolicy. func (ltsp LongTermSchedulePolicy) MarshalJSON() ([]byte, error) { ltsp.SchedulePolicyType = SchedulePolicyTypeLongTermSchedulePolicy type Alias LongTermSchedulePolicy return json.Marshal(&struct { Alias }{ Alias: (Alias)(ltsp), }) } // AsLongTermSchedulePolicy is the SchedulePolicy implementation for LongTermSchedulePolicy. func (ltsp LongTermSchedulePolicy) AsLongTermSchedulePolicy() (*LongTermSchedulePolicy, bool) { return <sp, true } // AsSimpleSchedulePolicy is the SchedulePolicy implementation for LongTermSchedulePolicy. func (ltsp LongTermSchedulePolicy) AsSimpleSchedulePolicy() (*SimpleSchedulePolicy, bool) { return nil, false } // MabContainer is container with items backed up using MAB backup engine. type MabContainer struct { FriendlyName *string `json:"friendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` RegistrationStatus *string `json:"registrationStatus,omitempty"` HealthStatus *string `json:"healthStatus,omitempty"` ContainerType ContainerType `json:"containerType,omitempty"` ProtectableObjectType ProtectableObjectType `json:"protectableObjectType,omitempty"` CanReRegister *bool `json:"canReRegister,omitempty"` ContainerID *int64 `json:"containerId,omitempty"` ProtectedItemCount *int64 `json:"protectedItemCount,omitempty"` AgentVersion *string `json:"agentVersion,omitempty"` ExtendedInfo *MabContainerExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for MabContainer. func (mc MabContainer) MarshalJSON() ([]byte, error) { mc.ProtectableObjectType = ProtectableObjectTypeMABWindowsContainer type Alias MabContainer return json.Marshal(&struct { Alias }{ Alias: (Alias)(mc), }) } // AsAzureBackupServerContainer is the ProtectionContainer implementation for MabContainer. func (mc MabContainer) AsAzureBackupServerContainer() (*AzureBackupServerContainer, bool) { return nil, false } // AsAzureIaaSClassicComputeVMContainer is the ProtectionContainer implementation for MabContainer. func (mc MabContainer) AsAzureIaaSClassicComputeVMContainer() (*AzureIaaSClassicComputeVMContainer, bool) { return nil, false } // AsAzureIaaSComputeVMContainer is the ProtectionContainer implementation for MabContainer. func (mc MabContainer) AsAzureIaaSComputeVMContainer() (*AzureIaaSComputeVMContainer, bool) { return nil, false } // AsAzureSQLContainer is the ProtectionContainer implementation for MabContainer. func (mc MabContainer) AsAzureSQLContainer() (*AzureSQLContainer, bool) { return nil, false } // AsDpmContainer is the ProtectionContainer implementation for MabContainer. func (mc MabContainer) AsDpmContainer() (*DpmContainer, bool) { return nil, false } // AsIaaSVMContainer is the ProtectionContainer implementation for MabContainer. func (mc MabContainer) AsIaaSVMContainer() (*IaaSVMContainer, bool) { return nil, false } // AsMabContainer is the ProtectionContainer implementation for MabContainer. func (mc MabContainer) AsMabContainer() (*MabContainer, bool) { return &mc, true } // MabContainerExtendedInfo is additional information of the container. type MabContainerExtendedInfo struct { LastRefreshedAt *date.Time `json:"lastRefreshedAt,omitempty"` BackupItemType BackupItemType `json:"backupItemType,omitempty"` BackupItems *[]string `json:"backupItems,omitempty"` PolicyName *string `json:"policyName,omitempty"` LastBackupStatus *string `json:"lastBackupStatus,omitempty"` } // MabErrorInfo is MAB workload-specific error information. type MabErrorInfo struct { ErrorString *string `json:"errorString,omitempty"` Recommendations *[]string `json:"recommendations,omitempty"` } // MabFileFolderProtectedItem is MAB workload-specific backup item. type MabFileFolderProtectedItem struct { BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` WorkloadType DataSourceType `json:"workloadType,omitempty"` ContainerName *string `json:"containerName,omitempty"` SourceResourceID *string `json:"sourceResourceId,omitempty"` PolicyID *string `json:"policyId,omitempty"` LastRecoveryPoint *date.Time `json:"lastRecoveryPoint,omitempty"` ProtectedItemType ProtectedItemType `json:"protectedItemType,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` ComputerName *string `json:"computerName,omitempty"` LastBackupStatus *string `json:"lastBackupStatus,omitempty"` ProtectionState *string `json:"protectionState,omitempty"` IsScheduledForDeferredDelete *bool `json:"isScheduledForDeferredDelete,omitempty"` DeferredDeleteSyncTimeInUTC *int64 `json:"deferredDeleteSyncTimeInUTC,omitempty"` ExtendedInfo *MabFileFolderProtectedItemExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for MabFileFolderProtectedItem. func (mffpi MabFileFolderProtectedItem) MarshalJSON() ([]byte, error) { mffpi.ProtectedItemType = ProtectedItemTypeMabFileFolderProtectedItem type Alias MabFileFolderProtectedItem return json.Marshal(&struct { Alias }{ Alias: (Alias)(mffpi), }) } // AsAzureIaaSClassicComputeVMProtectedItem is the ProtectedItem implementation for MabFileFolderProtectedItem. func (mffpi MabFileFolderProtectedItem) AsAzureIaaSClassicComputeVMProtectedItem() (*AzureIaaSClassicComputeVMProtectedItem, bool) { return nil, false } // AsAzureIaaSComputeVMProtectedItem is the ProtectedItem implementation for MabFileFolderProtectedItem. func (mffpi MabFileFolderProtectedItem) AsAzureIaaSComputeVMProtectedItem() (*AzureIaaSComputeVMProtectedItem, bool) { return nil, false } // AsAzureIaaSVMProtectedItem is the ProtectedItem implementation for MabFileFolderProtectedItem. func (mffpi MabFileFolderProtectedItem) AsAzureIaaSVMProtectedItem() (*AzureIaaSVMProtectedItem, bool) { return nil, false } // AsAzureSQLProtectedItem is the ProtectedItem implementation for MabFileFolderProtectedItem. func (mffpi MabFileFolderProtectedItem) AsAzureSQLProtectedItem() (*AzureSQLProtectedItem, bool) { return nil, false } // AsDPMProtectedItem is the ProtectedItem implementation for MabFileFolderProtectedItem. func (mffpi MabFileFolderProtectedItem) AsDPMProtectedItem() (*DPMProtectedItem, bool) { return nil, false } // AsMabFileFolderProtectedItem is the ProtectedItem implementation for MabFileFolderProtectedItem. func (mffpi MabFileFolderProtectedItem) AsMabFileFolderProtectedItem() (*MabFileFolderProtectedItem, bool) { return &mffpi, true } // MabFileFolderProtectedItemExtendedInfo is additional information on the backed up item. type MabFileFolderProtectedItemExtendedInfo struct { LastRefreshedAt *date.Time `json:"lastRefreshedAt,omitempty"` OldestRecoveryPoint *date.Time `json:"oldestRecoveryPoint,omitempty"` RecoveryPointCount *int32 `json:"recoveryPointCount,omitempty"` } // MabJob is MAB workload-specific job. type MabJob struct { EntityFriendlyName *string `json:"entityFriendlyName,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` Operation *string `json:"operation,omitempty"` Status *string `json:"status,omitempty"` StartTime *date.Time `json:"startTime,omitempty"` EndTime *date.Time `json:"endTime,omitempty"` ActivityID *string `json:"activityId,omitempty"` JobType JobType `json:"jobType,omitempty"` Duration *string `json:"duration,omitempty"` ActionsInfo *[]JobSupportedAction `json:"actionsInfo,omitempty"` MabServerName *string `json:"mabServerName,omitempty"` MabServerType MabServerType `json:"mabServerType,omitempty"` WorkloadType WorkloadType `json:"workloadType,omitempty"` ErrorDetails *[]MabErrorInfo `json:"errorDetails,omitempty"` ExtendedInfo *MabJobExtendedInfo `json:"extendedInfo,omitempty"` } // MarshalJSON is the custom marshaler for MabJob. func (mj MabJob) MarshalJSON() ([]byte, error) { mj.JobType = JobTypeMabJob type Alias MabJob return json.Marshal(&struct { Alias }{ Alias: (Alias)(mj), }) } // AsAzureIaaSVMJob is the Job implementation for MabJob. func (mj MabJob) AsAzureIaaSVMJob() (*AzureIaaSVMJob, bool) { return nil, false } // AsDpmJob is the Job implementation for MabJob. func (mj MabJob) AsDpmJob() (*DpmJob, bool) { return nil, false } // AsMabJob is the Job implementation for MabJob. func (mj MabJob) AsMabJob() (*MabJob, bool) { return &mj, true } // MabJobExtendedInfo is additional information for the MAB workload-specific job. type MabJobExtendedInfo struct { TasksList *[]MabJobTaskDetails `json:"tasksList,omitempty"` PropertyBag *map[string]*string `json:"propertyBag,omitempty"` DynamicErrorMessage *string `json:"dynamicErrorMessage,omitempty"` } // MabJobTaskDetails is MAB workload-specific job task details. type MabJobTaskDetails struct { TaskID *string `json:"taskId,omitempty"` StartTime *date.Time `json:"startTime,omitempty"` EndTime *date.Time `json:"endTime,omitempty"` Duration *string `json:"duration,omitempty"` Status *string `json:"status,omitempty"` } // MabProtectionPolicy is mab container-specific backup policy. type MabProtectionPolicy struct { ProtectedItemsCount *int32 `json:"protectedItemsCount,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` SchedulePolicy SchedulePolicy `json:"schedulePolicy,omitempty"` RetentionPolicy RetentionPolicy `json:"retentionPolicy,omitempty"` } // MarshalJSON is the custom marshaler for MabProtectionPolicy. func (mpp MabProtectionPolicy) MarshalJSON() ([]byte, error) { mpp.BackupManagementType = BackupManagementTypeMAB type Alias MabProtectionPolicy return json.Marshal(&struct { Alias }{ Alias: (Alias)(mpp), }) } // AsAzureIaaSVMProtectionPolicy is the ProtectionPolicy implementation for MabProtectionPolicy. func (mpp MabProtectionPolicy) AsAzureIaaSVMProtectionPolicy() (*AzureIaaSVMProtectionPolicy, bool) { return nil, false } // AsAzureSQLProtectionPolicy is the ProtectionPolicy implementation for MabProtectionPolicy. func (mpp MabProtectionPolicy) AsAzureSQLProtectionPolicy() (*AzureSQLProtectionPolicy, bool) { return nil, false } // AsMabProtectionPolicy is the ProtectionPolicy implementation for MabProtectionPolicy. func (mpp MabProtectionPolicy) AsMabProtectionPolicy() (*MabProtectionPolicy, bool) { return &mpp, true } // UnmarshalJSON is the custom unmarshaler for MabProtectionPolicy struct. func (mpp *MabProtectionPolicy) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["schedulePolicy"] if v != nil { schedulePolicy, err := unmarshalSchedulePolicy(*m["schedulePolicy"]) if err != nil { return err } mpp.SchedulePolicy = schedulePolicy } v = m["retentionPolicy"] if v != nil { retentionPolicy, err := unmarshalRetentionPolicy(*m["retentionPolicy"]) if err != nil { return err } mpp.RetentionPolicy = retentionPolicy } v = m["protectedItemsCount"] if v != nil { var protectedItemsCount int32 err = json.Unmarshal(*m["protectedItemsCount"], &protectedItemsCount) if err != nil { return err } mpp.ProtectedItemsCount = &protectedItemsCount } v = m["backupManagementType"] if v != nil { var backupManagementType BackupManagementType err = json.Unmarshal(*m["backupManagementType"], &backupManagementType) if err != nil { return err } mpp.BackupManagementType = backupManagementType } return nil } // MonthlyRetentionSchedule is monthly retention schedule. type MonthlyRetentionSchedule struct { RetentionScheduleFormatType RetentionScheduleFormat `json:"retentionScheduleFormatType,omitempty"` RetentionScheduleDaily *DailyRetentionFormat `json:"retentionScheduleDaily,omitempty"` RetentionScheduleWeekly *WeeklyRetentionFormat `json:"retentionScheduleWeekly,omitempty"` RetentionTimes *[]date.Time `json:"retentionTimes,omitempty"` RetentionDuration *RetentionDuration `json:"retentionDuration,omitempty"` } // NameInfo is the name of usage. type NameInfo struct { Value *string `json:"value,omitempty"` LocalizedValue *string `json:"localizedValue,omitempty"` } // OperationResultInfo is operation result info. type OperationResultInfo struct { ObjectType ObjectTypeOperationResultInfoBase `json:"objectType,omitempty"` JobList *[]string `json:"jobList,omitempty"` } // MarshalJSON is the custom marshaler for OperationResultInfo. func (ori OperationResultInfo) MarshalJSON() ([]byte, error) { ori.ObjectType = ObjectTypeOperationResultInfo type Alias OperationResultInfo return json.Marshal(&struct { Alias }{ Alias: (Alias)(ori), }) } // AsExportJobsOperationResultInfo is the OperationResultInfoBase implementation for OperationResultInfo. func (ori OperationResultInfo) AsExportJobsOperationResultInfo() (*ExportJobsOperationResultInfo, bool) { return nil, false } // AsOperationResultInfo is the OperationResultInfoBase implementation for OperationResultInfo. func (ori OperationResultInfo) AsOperationResultInfo() (*OperationResultInfo, bool) { return &ori, true } // OperationResultInfoBase is base class for operation result info. type OperationResultInfoBase interface { AsExportJobsOperationResultInfo() (*ExportJobsOperationResultInfo, bool) AsOperationResultInfo() (*OperationResultInfo, bool) } func unmarshalOperationResultInfoBase(body []byte) (OperationResultInfoBase, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["objectType"] { case string(ObjectTypeExportJobsOperationResultInfo): var ejori ExportJobsOperationResultInfo err := json.Unmarshal(body, &ejori) return ejori, err case string(ObjectTypeOperationResultInfo): var ori OperationResultInfo err := json.Unmarshal(body, &ori) return ori, err default: return nil, errors.New("Unsupported type") } } func unmarshalOperationResultInfoBaseArray(body []byte) ([]OperationResultInfoBase, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } oribArray := make([]OperationResultInfoBase, len(rawMessages)) for index, rawMessage := range rawMessages { orib, err := unmarshalOperationResultInfoBase(*rawMessage) if err != nil { return nil, err } oribArray[index] = orib } return oribArray, nil } // OperationResultInfoBaseResource is base class for operation result info. type OperationResultInfoBaseResource struct { autorest.Response `json:"-"` StatusCode HTTPStatusCode `json:"statusCode,omitempty"` Headers *map[string][]string `json:"Headers,omitempty"` Operation OperationResultInfoBase `json:"operation,omitempty"` } // UnmarshalJSON is the custom unmarshaler for OperationResultInfoBaseResource struct. func (oribr *OperationResultInfoBaseResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["operation"] if v != nil { operation, err := unmarshalOperationResultInfoBase(*m["operation"]) if err != nil { return err } oribr.Operation = operation } v = m["statusCode"] if v != nil { var statusCode HTTPStatusCode err = json.Unmarshal(*m["statusCode"], &statusCode) if err != nil { return err } oribr.StatusCode = statusCode } v = m["Headers"] if v != nil { var headers map[string][]string err = json.Unmarshal(*m["Headers"], &headers) if err != nil { return err } oribr.Headers = &headers } return nil } // OperationStatus is operation status. type OperationStatus struct { autorest.Response `json:"-"` ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Status OperationStatusValues `json:"status,omitempty"` StartTime *date.Time `json:"startTime,omitempty"` EndTime *date.Time `json:"endTime,omitempty"` Error *OperationStatusError `json:"error,omitempty"` Properties OperationStatusExtendedInfo `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for OperationStatus struct. func (osVar *OperationStatus) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } osVar.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } osVar.Name = &name } v = m["status"] if v != nil { var status OperationStatusValues err = json.Unmarshal(*m["status"], &status) if err != nil { return err } osVar.Status = status } v = m["startTime"] if v != nil { var startTime date.Time err = json.Unmarshal(*m["startTime"], &startTime) if err != nil { return err } osVar.StartTime = &startTime } v = m["endTime"] if v != nil { var endTime date.Time err = json.Unmarshal(*m["endTime"], &endTime) if err != nil { return err } osVar.EndTime = &endTime } v = m["error"] if v != nil { var errorVar OperationStatusError err = json.Unmarshal(*m["error"], &errorVar) if err != nil { return err } osVar.Error = &errorVar } v = m["properties"] if v != nil { properties, err := unmarshalOperationStatusExtendedInfo(*m["properties"]) if err != nil { return err } osVar.Properties = properties } return nil } // OperationStatusError is error information associated with operation status call. type OperationStatusError struct { Code *string `json:"code,omitempty"` Message *string `json:"message,omitempty"` } // OperationStatusExtendedInfo is base class for additional information of operation status. type OperationStatusExtendedInfo interface { AsOperationStatusJobExtendedInfo() (*OperationStatusJobExtendedInfo, bool) AsOperationStatusJobsExtendedInfo() (*OperationStatusJobsExtendedInfo, bool) AsOperationStatusProvisionILRExtendedInfo() (*OperationStatusProvisionILRExtendedInfo, bool) } func unmarshalOperationStatusExtendedInfo(body []byte) (OperationStatusExtendedInfo, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["objectType"] { case string(ObjectTypeOperationStatusJobExtendedInfo): var osjei OperationStatusJobExtendedInfo err := json.Unmarshal(body, &osjei) return osjei, err case string(ObjectTypeOperationStatusJobsExtendedInfo): var osjei OperationStatusJobsExtendedInfo err := json.Unmarshal(body, &osjei) return osjei, err case string(ObjectTypeOperationStatusProvisionILRExtendedInfo): var ospiei OperationStatusProvisionILRExtendedInfo err := json.Unmarshal(body, &ospiei) return ospiei, err default: return nil, errors.New("Unsupported type") } } func unmarshalOperationStatusExtendedInfoArray(body []byte) ([]OperationStatusExtendedInfo, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } oseiArray := make([]OperationStatusExtendedInfo, len(rawMessages)) for index, rawMessage := range rawMessages { osei, err := unmarshalOperationStatusExtendedInfo(*rawMessage) if err != nil { return nil, err } oseiArray[index] = osei } return oseiArray, nil } // OperationStatusJobExtendedInfo is operation status job extended info. type OperationStatusJobExtendedInfo struct { ObjectType ObjectTypeOperationStatusExtendedInfo `json:"objectType,omitempty"` JobID *string `json:"jobId,omitempty"` } // MarshalJSON is the custom marshaler for OperationStatusJobExtendedInfo. func (osjei OperationStatusJobExtendedInfo) MarshalJSON() ([]byte, error) { osjei.ObjectType = ObjectTypeOperationStatusJobExtendedInfo type Alias OperationStatusJobExtendedInfo return json.Marshal(&struct { Alias }{ Alias: (Alias)(osjei), }) } // AsOperationStatusJobExtendedInfo is the OperationStatusExtendedInfo implementation for OperationStatusJobExtendedInfo. func (osjei OperationStatusJobExtendedInfo) AsOperationStatusJobExtendedInfo() (*OperationStatusJobExtendedInfo, bool) { return &osjei, true } // AsOperationStatusJobsExtendedInfo is the OperationStatusExtendedInfo implementation for OperationStatusJobExtendedInfo. func (osjei OperationStatusJobExtendedInfo) AsOperationStatusJobsExtendedInfo() (*OperationStatusJobsExtendedInfo, bool) { return nil, false } // AsOperationStatusProvisionILRExtendedInfo is the OperationStatusExtendedInfo implementation for OperationStatusJobExtendedInfo. func (osjei OperationStatusJobExtendedInfo) AsOperationStatusProvisionILRExtendedInfo() (*OperationStatusProvisionILRExtendedInfo, bool) { return nil, false } // OperationStatusJobsExtendedInfo is operation status extended info for list of jobs. type OperationStatusJobsExtendedInfo struct { ObjectType ObjectTypeOperationStatusExtendedInfo `json:"objectType,omitempty"` JobIds *[]string `json:"jobIds,omitempty"` FailedJobsError *map[string]*string `json:"failedJobsError,omitempty"` } // MarshalJSON is the custom marshaler for OperationStatusJobsExtendedInfo. func (osjei OperationStatusJobsExtendedInfo) MarshalJSON() ([]byte, error) { osjei.ObjectType = ObjectTypeOperationStatusJobsExtendedInfo type Alias OperationStatusJobsExtendedInfo return json.Marshal(&struct { Alias }{ Alias: (Alias)(osjei), }) } // AsOperationStatusJobExtendedInfo is the OperationStatusExtendedInfo implementation for OperationStatusJobsExtendedInfo. func (osjei OperationStatusJobsExtendedInfo) AsOperationStatusJobExtendedInfo() (*OperationStatusJobExtendedInfo, bool) { return nil, false } // AsOperationStatusJobsExtendedInfo is the OperationStatusExtendedInfo implementation for OperationStatusJobsExtendedInfo. func (osjei OperationStatusJobsExtendedInfo) AsOperationStatusJobsExtendedInfo() (*OperationStatusJobsExtendedInfo, bool) { return &osjei, true } // AsOperationStatusProvisionILRExtendedInfo is the OperationStatusExtendedInfo implementation for OperationStatusJobsExtendedInfo. func (osjei OperationStatusJobsExtendedInfo) AsOperationStatusProvisionILRExtendedInfo() (*OperationStatusProvisionILRExtendedInfo, bool) { return nil, false } // OperationStatusProvisionILRExtendedInfo is operation status extended info for ILR provision action. type OperationStatusProvisionILRExtendedInfo struct { ObjectType ObjectTypeOperationStatusExtendedInfo `json:"objectType,omitempty"` RecoveryTarget *InstantItemRecoveryTarget `json:"recoveryTarget,omitempty"` } // MarshalJSON is the custom marshaler for OperationStatusProvisionILRExtendedInfo. func (ospiei OperationStatusProvisionILRExtendedInfo) MarshalJSON() ([]byte, error) { ospiei.ObjectType = ObjectTypeOperationStatusProvisionILRExtendedInfo type Alias OperationStatusProvisionILRExtendedInfo return json.Marshal(&struct { Alias }{ Alias: (Alias)(ospiei), }) } // AsOperationStatusJobExtendedInfo is the OperationStatusExtendedInfo implementation for OperationStatusProvisionILRExtendedInfo. func (ospiei OperationStatusProvisionILRExtendedInfo) AsOperationStatusJobExtendedInfo() (*OperationStatusJobExtendedInfo, bool) { return nil, false } // AsOperationStatusJobsExtendedInfo is the OperationStatusExtendedInfo implementation for OperationStatusProvisionILRExtendedInfo. func (ospiei OperationStatusProvisionILRExtendedInfo) AsOperationStatusJobsExtendedInfo() (*OperationStatusJobsExtendedInfo, bool) { return nil, false } // AsOperationStatusProvisionILRExtendedInfo is the OperationStatusExtendedInfo implementation for OperationStatusProvisionILRExtendedInfo. func (ospiei OperationStatusProvisionILRExtendedInfo) AsOperationStatusProvisionILRExtendedInfo() (*OperationStatusProvisionILRExtendedInfo, bool) { return &ospiei, true } // OperationWorkerResponse is this is the base class for operation result responses. type OperationWorkerResponse struct { StatusCode HTTPStatusCode `json:"statusCode,omitempty"` Headers *map[string][]string `json:"Headers,omitempty"` } // ProtectedItem is base class for backup items. type ProtectedItem interface { AsAzureIaaSClassicComputeVMProtectedItem() (*AzureIaaSClassicComputeVMProtectedItem, bool) AsAzureIaaSComputeVMProtectedItem() (*AzureIaaSComputeVMProtectedItem, bool) AsAzureIaaSVMProtectedItem() (*AzureIaaSVMProtectedItem, bool) AsAzureSQLProtectedItem() (*AzureSQLProtectedItem, bool) AsDPMProtectedItem() (*DPMProtectedItem, bool) AsMabFileFolderProtectedItem() (*MabFileFolderProtectedItem, bool) } func unmarshalProtectedItem(body []byte) (ProtectedItem, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["protectedItemType"] { case string(ProtectedItemTypeMicrosoftClassicComputevirtualMachines): var aisccvpi AzureIaaSClassicComputeVMProtectedItem err := json.Unmarshal(body, &aisccvpi) return aisccvpi, err case string(ProtectedItemTypeMicrosoftComputevirtualMachines): var aiscvpi AzureIaaSComputeVMProtectedItem err := json.Unmarshal(body, &aiscvpi) return aiscvpi, err case string(ProtectedItemTypeAzureIaaSVMProtectedItem): var aispi AzureIaaSVMProtectedItem err := json.Unmarshal(body, &aispi) return aispi, err case string(ProtectedItemTypeMicrosoftSqlserversdatabases): var aspi AzureSQLProtectedItem err := json.Unmarshal(body, &aspi) return aspi, err case string(ProtectedItemTypeDPMProtectedItem): var dpi DPMProtectedItem err := json.Unmarshal(body, &dpi) return dpi, err case string(ProtectedItemTypeMabFileFolderProtectedItem): var mffpi MabFileFolderProtectedItem err := json.Unmarshal(body, &mffpi) return mffpi, err default: return nil, errors.New("Unsupported type") } } func unmarshalProtectedItemArray(body []byte) ([]ProtectedItem, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } piArray := make([]ProtectedItem, len(rawMessages)) for index, rawMessage := range rawMessages { pi, err := unmarshalProtectedItem(*rawMessage) if err != nil { return nil, err } piArray[index] = pi } return piArray, nil } // ProtectedItemQueryObject is filters to list backup items. type ProtectedItemQueryObject struct { HealthState HealthState `json:"healthState,omitempty"` BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` ItemType DataSourceType `json:"itemType,omitempty"` PolicyName *string `json:"policyName,omitempty"` ContainerName *string `json:"containerName,omitempty"` BackupEngineName *string `json:"backupEngineName,omitempty"` FriendlyName *string `json:"friendlyName,omitempty"` } // ProtectedItemResource is base class for backup items. type ProtectedItemResource struct { autorest.Response `json:"-"` ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties ProtectedItem `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for ProtectedItemResource struct. func (pir *ProtectedItemResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["properties"] if v != nil { properties, err := unmarshalProtectedItem(*m["properties"]) if err != nil { return err } pir.Properties = properties } v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } pir.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } pir.Name = &name } v = m["type"] if v != nil { var typeVar string err = json.Unmarshal(*m["type"], &typeVar) if err != nil { return err } pir.Type = &typeVar } v = m["location"] if v != nil { var location string err = json.Unmarshal(*m["location"], &location) if err != nil { return err } pir.Location = &location } v = m["tags"] if v != nil { var tags map[string]*string err = json.Unmarshal(*m["tags"], &tags) if err != nil { return err } pir.Tags = &tags } v = m["eTag"] if v != nil { var eTag string err = json.Unmarshal(*m["eTag"], &eTag) if err != nil { return err } pir.ETag = &eTag } return nil } // ProtectedItemResourceList is list of ProtectedItem resources type ProtectedItemResourceList struct { autorest.Response `json:"-"` NextLink *string `json:"nextLink,omitempty"` Value *[]ProtectedItemResource `json:"value,omitempty"` } // ProtectedItemResourceListPreparer prepares a request to retrieve the next set of results. It returns // nil if no more results exist. func (client ProtectedItemResourceList) ProtectedItemResourceListPreparer() (*http.Request, error) { if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { return nil, nil } return autorest.Prepare(&http.Request{}, autorest.AsJSON(), autorest.AsGet(), autorest.WithBaseURL(to.String(client.NextLink))) } // ProtectionContainer is base class for container with backup items. Containers with specific workloads are derived // from this class. type ProtectionContainer interface { AsAzureBackupServerContainer() (*AzureBackupServerContainer, bool) AsAzureIaaSClassicComputeVMContainer() (*AzureIaaSClassicComputeVMContainer, bool) AsAzureIaaSComputeVMContainer() (*AzureIaaSComputeVMContainer, bool) AsAzureSQLContainer() (*AzureSQLContainer, bool) AsDpmContainer() (*DpmContainer, bool) AsIaaSVMContainer() (*IaaSVMContainer, bool) AsMabContainer() (*MabContainer, bool) } func unmarshalProtectionContainer(body []byte) (ProtectionContainer, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["protectableObjectType"] { case string(ProtectableObjectTypeAzureBackupServerContainer): var absc AzureBackupServerContainer err := json.Unmarshal(body, &absc) return absc, err case string(ProtectableObjectTypeMicrosoftClassicComputevirtualMachines): var aisccvc AzureIaaSClassicComputeVMContainer err := json.Unmarshal(body, &aisccvc) return aisccvc, err case string(ProtectableObjectTypeMicrosoftComputevirtualMachines): var aiscvc AzureIaaSComputeVMContainer err := json.Unmarshal(body, &aiscvc) return aiscvc, err case string(ProtectableObjectTypeAzureSQLContainer): var asc AzureSQLContainer err := json.Unmarshal(body, &asc) return asc, err case string(ProtectableObjectTypeDPMContainer): var dc DpmContainer err := json.Unmarshal(body, &dc) return dc, err case string(ProtectableObjectTypeIaaSVMContainer): var isc IaaSVMContainer err := json.Unmarshal(body, &isc) return isc, err case string(ProtectableObjectTypeMABWindowsContainer): var mc MabContainer err := json.Unmarshal(body, &mc) return mc, err default: return nil, errors.New("Unsupported type") } } func unmarshalProtectionContainerArray(body []byte) ([]ProtectionContainer, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } pcArray := make([]ProtectionContainer, len(rawMessages)) for index, rawMessage := range rawMessages { pc, err := unmarshalProtectionContainer(*rawMessage) if err != nil { return nil, err } pcArray[index] = pc } return pcArray, nil } // ProtectionContainerResource is base class for container with backup items. Containers with specific workloads are // derived from this class. type ProtectionContainerResource struct { autorest.Response `json:"-"` ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties ProtectionContainer `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for ProtectionContainerResource struct. func (pcr *ProtectionContainerResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["properties"] if v != nil { properties, err := unmarshalProtectionContainer(*m["properties"]) if err != nil { return err } pcr.Properties = properties } v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } pcr.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } pcr.Name = &name } v = m["type"] if v != nil { var typeVar string err = json.Unmarshal(*m["type"], &typeVar) if err != nil { return err } pcr.Type = &typeVar } v = m["location"] if v != nil { var location string err = json.Unmarshal(*m["location"], &location) if err != nil { return err } pcr.Location = &location } v = m["tags"] if v != nil { var tags map[string]*string err = json.Unmarshal(*m["tags"], &tags) if err != nil { return err } pcr.Tags = &tags } v = m["eTag"] if v != nil { var eTag string err = json.Unmarshal(*m["eTag"], &eTag) if err != nil { return err } pcr.ETag = &eTag } return nil } // ProtectionContainerResourceList is list of ProtectionContainer resources type ProtectionContainerResourceList struct { autorest.Response `json:"-"` NextLink *string `json:"nextLink,omitempty"` Value *[]ProtectionContainerResource `json:"value,omitempty"` } // ProtectionContainerResourceListPreparer prepares a request to retrieve the next set of results. It returns // nil if no more results exist. func (client ProtectionContainerResourceList) ProtectionContainerResourceListPreparer() (*http.Request, error) { if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { return nil, nil } return autorest.Prepare(&http.Request{}, autorest.AsJSON(), autorest.AsGet(), autorest.WithBaseURL(to.String(client.NextLink))) } // ProtectionPolicy is base class for backup policy. Workload-specific backup policies are derived from this class. type ProtectionPolicy interface { AsAzureIaaSVMProtectionPolicy() (*AzureIaaSVMProtectionPolicy, bool) AsAzureSQLProtectionPolicy() (*AzureSQLProtectionPolicy, bool) AsMabProtectionPolicy() (*MabProtectionPolicy, bool) } func unmarshalProtectionPolicy(body []byte) (ProtectionPolicy, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["backupManagementType"] { case string(BackupManagementTypeAzureIaasVM): var aispp AzureIaaSVMProtectionPolicy err := json.Unmarshal(body, &aispp) return aispp, err case string(BackupManagementTypeAzureSQL): var aspp AzureSQLProtectionPolicy err := json.Unmarshal(body, &aspp) return aspp, err case string(BackupManagementTypeMAB): var mpp MabProtectionPolicy err := json.Unmarshal(body, &mpp) return mpp, err default: return nil, errors.New("Unsupported type") } } func unmarshalProtectionPolicyArray(body []byte) ([]ProtectionPolicy, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } ppArray := make([]ProtectionPolicy, len(rawMessages)) for index, rawMessage := range rawMessages { pp, err := unmarshalProtectionPolicy(*rawMessage) if err != nil { return nil, err } ppArray[index] = pp } return ppArray, nil } // ProtectionPolicyQueryObject is filters the list backup policies API. type ProtectionPolicyQueryObject struct { BackupManagementType BackupManagementType `json:"backupManagementType,omitempty"` } // ProtectionPolicyResource is base class for backup policy. Workload-specific backup policies are derived from this // class. type ProtectionPolicyResource struct { autorest.Response `json:"-"` ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties ProtectionPolicy `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for ProtectionPolicyResource struct. func (ppr *ProtectionPolicyResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["properties"] if v != nil { properties, err := unmarshalProtectionPolicy(*m["properties"]) if err != nil { return err } ppr.Properties = properties } v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } ppr.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } ppr.Name = &name } v = m["type"] if v != nil { var typeVar string err = json.Unmarshal(*m["type"], &typeVar) if err != nil { return err } ppr.Type = &typeVar } v = m["location"] if v != nil { var location string err = json.Unmarshal(*m["location"], &location) if err != nil { return err } ppr.Location = &location } v = m["tags"] if v != nil { var tags map[string]*string err = json.Unmarshal(*m["tags"], &tags) if err != nil { return err } ppr.Tags = &tags } v = m["eTag"] if v != nil { var eTag string err = json.Unmarshal(*m["eTag"], &eTag) if err != nil { return err } ppr.ETag = &eTag } return nil } // ProtectionPolicyResourceList is list of ProtectionPolicy resources type ProtectionPolicyResourceList struct { autorest.Response `json:"-"` NextLink *string `json:"nextLink,omitempty"` Value *[]ProtectionPolicyResource `json:"value,omitempty"` } // ProtectionPolicyResourceListPreparer prepares a request to retrieve the next set of results. It returns // nil if no more results exist. func (client ProtectionPolicyResourceList) ProtectionPolicyResourceListPreparer() (*http.Request, error) { if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { return nil, nil } return autorest.Prepare(&http.Request{}, autorest.AsJSON(), autorest.AsGet(), autorest.WithBaseURL(to.String(client.NextLink))) } // RecoveryPoint is base class for backup copies. Workload-specific backup copies are derived from this class. type RecoveryPoint interface { AsGenericRecoveryPoint() (*GenericRecoveryPoint, bool) AsIaasVMRecoveryPoint() (*IaasVMRecoveryPoint, bool) } func unmarshalRecoveryPoint(body []byte) (RecoveryPoint, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["objectType"] { case string(ObjectTypeGenericRecoveryPoint): var grp GenericRecoveryPoint err := json.Unmarshal(body, &grp) return grp, err case string(ObjectTypeIaasVMRecoveryPoint): var ivrp IaasVMRecoveryPoint err := json.Unmarshal(body, &ivrp) return ivrp, err default: return nil, errors.New("Unsupported type") } } func unmarshalRecoveryPointArray(body []byte) ([]RecoveryPoint, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } rpArray := make([]RecoveryPoint, len(rawMessages)) for index, rawMessage := range rawMessages { rp, err := unmarshalRecoveryPoint(*rawMessage) if err != nil { return nil, err } rpArray[index] = rp } return rpArray, nil } // RecoveryPointResource is base class for backup copies. Workload-specific backup copies are derived from this class. type RecoveryPointResource struct { autorest.Response `json:"-"` ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties RecoveryPoint `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for RecoveryPointResource struct. func (rpr *RecoveryPointResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["properties"] if v != nil { properties, err := unmarshalRecoveryPoint(*m["properties"]) if err != nil { return err } rpr.Properties = properties } v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } rpr.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } rpr.Name = &name } v = m["type"] if v != nil { var typeVar string err = json.Unmarshal(*m["type"], &typeVar) if err != nil { return err } rpr.Type = &typeVar } v = m["location"] if v != nil { var location string err = json.Unmarshal(*m["location"], &location) if err != nil { return err } rpr.Location = &location } v = m["tags"] if v != nil { var tags map[string]*string err = json.Unmarshal(*m["tags"], &tags) if err != nil { return err } rpr.Tags = &tags } v = m["eTag"] if v != nil { var eTag string err = json.Unmarshal(*m["eTag"], &eTag) if err != nil { return err } rpr.ETag = &eTag } return nil } // RecoveryPointResourceList is list of RecoveryPoint resources type RecoveryPointResourceList struct { autorest.Response `json:"-"` NextLink *string `json:"nextLink,omitempty"` Value *[]RecoveryPointResource `json:"value,omitempty"` } // RecoveryPointResourceListPreparer prepares a request to retrieve the next set of results. It returns // nil if no more results exist. func (client RecoveryPointResourceList) RecoveryPointResourceListPreparer() (*http.Request, error) { if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { return nil, nil } return autorest.Prepare(&http.Request{}, autorest.AsJSON(), autorest.AsGet(), autorest.WithBaseURL(to.String(client.NextLink))) } // RecoveryPointTierInformation is recovery point tier information. type RecoveryPointTierInformation struct { Type RecoveryPointTierType `json:"type,omitempty"` Status RecoveryPointTierStatus `json:"status,omitempty"` } // Resource is ARM Resource. type Resource struct { ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` } // ResourceList is base for all lists of resources. type ResourceList struct { NextLink *string `json:"nextLink,omitempty"` } // RestoreRequest is base class for restore request. Workload-specific restore requests are derived from this class. type RestoreRequest interface { AsIaasVMRestoreRequest() (*IaasVMRestoreRequest, bool) } func unmarshalRestoreRequest(body []byte) (RestoreRequest, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["objectType"] { case string(ObjectTypeIaasVMRestoreRequest): var ivrr IaasVMRestoreRequest err := json.Unmarshal(body, &ivrr) return ivrr, err default: return nil, errors.New("Unsupported type") } } func unmarshalRestoreRequestArray(body []byte) ([]RestoreRequest, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } rrArray := make([]RestoreRequest, len(rawMessages)) for index, rawMessage := range rawMessages { rr, err := unmarshalRestoreRequest(*rawMessage) if err != nil { return nil, err } rrArray[index] = rr } return rrArray, nil } // RestoreRequestResource is base class for restore request. Workload-specific restore requests are derived from this // class. type RestoreRequestResource struct { ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties RestoreRequest `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for RestoreRequestResource struct. func (rrr *RestoreRequestResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["properties"] if v != nil { properties, err := unmarshalRestoreRequest(*m["properties"]) if err != nil { return err } rrr.Properties = properties } v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } rrr.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } rrr.Name = &name } v = m["type"] if v != nil { var typeVar string err = json.Unmarshal(*m["type"], &typeVar) if err != nil { return err } rrr.Type = &typeVar } v = m["location"] if v != nil { var location string err = json.Unmarshal(*m["location"], &location) if err != nil { return err } rrr.Location = &location } v = m["tags"] if v != nil { var tags map[string]*string err = json.Unmarshal(*m["tags"], &tags) if err != nil { return err } rrr.Tags = &tags } v = m["eTag"] if v != nil { var eTag string err = json.Unmarshal(*m["eTag"], &eTag) if err != nil { return err } rrr.ETag = &eTag } return nil } // RetentionDuration is retention duration. type RetentionDuration struct { Count *int32 `json:"count,omitempty"` DurationType RetentionDurationType `json:"durationType,omitempty"` } // RetentionPolicy is base class for retention policy. type RetentionPolicy interface { AsLongTermRetentionPolicy() (*LongTermRetentionPolicy, bool) AsSimpleRetentionPolicy() (*SimpleRetentionPolicy, bool) } func unmarshalRetentionPolicy(body []byte) (RetentionPolicy, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["retentionPolicyType"] { case string(RetentionPolicyTypeLongTermRetentionPolicy): var ltrp LongTermRetentionPolicy err := json.Unmarshal(body, <rp) return ltrp, err case string(RetentionPolicyTypeSimpleRetentionPolicy): var srp SimpleRetentionPolicy err := json.Unmarshal(body, &srp) return srp, err default: return nil, errors.New("Unsupported type") } } func unmarshalRetentionPolicyArray(body []byte) ([]RetentionPolicy, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } rpArray := make([]RetentionPolicy, len(rawMessages)) for index, rawMessage := range rawMessages { rp, err := unmarshalRetentionPolicy(*rawMessage) if err != nil { return nil, err } rpArray[index] = rp } return rpArray, nil } // SchedulePolicy is base class for backup schedule. type SchedulePolicy interface { AsLongTermSchedulePolicy() (*LongTermSchedulePolicy, bool) AsSimpleSchedulePolicy() (*SimpleSchedulePolicy, bool) } func unmarshalSchedulePolicy(body []byte) (SchedulePolicy, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["schedulePolicyType"] { case string(SchedulePolicyTypeLongTermSchedulePolicy): var ltsp LongTermSchedulePolicy err := json.Unmarshal(body, <sp) return ltsp, err case string(SchedulePolicyTypeSimpleSchedulePolicy): var ssp SimpleSchedulePolicy err := json.Unmarshal(body, &ssp) return ssp, err default: return nil, errors.New("Unsupported type") } } func unmarshalSchedulePolicyArray(body []byte) ([]SchedulePolicy, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } spArray := make([]SchedulePolicy, len(rawMessages)) for index, rawMessage := range rawMessages { sp, err := unmarshalSchedulePolicy(*rawMessage) if err != nil { return nil, err } spArray[index] = sp } return spArray, nil } // SimpleRetentionPolicy is simple policy retention. type SimpleRetentionPolicy struct { RetentionPolicyType RetentionPolicyType `json:"retentionPolicyType,omitempty"` RetentionDuration *RetentionDuration `json:"retentionDuration,omitempty"` } // MarshalJSON is the custom marshaler for SimpleRetentionPolicy. func (srp SimpleRetentionPolicy) MarshalJSON() ([]byte, error) { srp.RetentionPolicyType = RetentionPolicyTypeSimpleRetentionPolicy type Alias SimpleRetentionPolicy return json.Marshal(&struct { Alias }{ Alias: (Alias)(srp), }) } // AsLongTermRetentionPolicy is the RetentionPolicy implementation for SimpleRetentionPolicy. func (srp SimpleRetentionPolicy) AsLongTermRetentionPolicy() (*LongTermRetentionPolicy, bool) { return nil, false } // AsSimpleRetentionPolicy is the RetentionPolicy implementation for SimpleRetentionPolicy. func (srp SimpleRetentionPolicy) AsSimpleRetentionPolicy() (*SimpleRetentionPolicy, bool) { return &srp, true } // SimpleSchedulePolicy is simple policy schedule. type SimpleSchedulePolicy struct { SchedulePolicyType SchedulePolicyType `json:"schedulePolicyType,omitempty"` ScheduleRunFrequency ScheduleRunType `json:"scheduleRunFrequency,omitempty"` ScheduleRunDays *[]DayOfWeek `json:"scheduleRunDays,omitempty"` ScheduleRunTimes *[]date.Time `json:"scheduleRunTimes,omitempty"` ScheduleWeeklyFrequency *int32 `json:"scheduleWeeklyFrequency,omitempty"` } // MarshalJSON is the custom marshaler for SimpleSchedulePolicy. func (ssp SimpleSchedulePolicy) MarshalJSON() ([]byte, error) { ssp.SchedulePolicyType = SchedulePolicyTypeSimpleSchedulePolicy type Alias SimpleSchedulePolicy return json.Marshal(&struct { Alias }{ Alias: (Alias)(ssp), }) } // AsLongTermSchedulePolicy is the SchedulePolicy implementation for SimpleSchedulePolicy. func (ssp SimpleSchedulePolicy) AsLongTermSchedulePolicy() (*LongTermSchedulePolicy, bool) { return nil, false } // AsSimpleSchedulePolicy is the SchedulePolicy implementation for SimpleSchedulePolicy. func (ssp SimpleSchedulePolicy) AsSimpleSchedulePolicy() (*SimpleSchedulePolicy, bool) { return &ssp, true } // TokenInformation is the token information details. type TokenInformation struct { autorest.Response `json:"-"` Token *string `json:"token,omitempty"` ExpiryTimeInUtcTicks *int64 `json:"expiryTimeInUtcTicks,omitempty"` SecurityPIN *string `json:"securityPIN,omitempty"` } // WeeklyRetentionFormat is weekly retention format. type WeeklyRetentionFormat struct { DaysOfTheWeek *[]DayOfWeek `json:"daysOfTheWeek,omitempty"` WeeksOfTheMonth *[]WeekOfMonth `json:"weeksOfTheMonth,omitempty"` } // WeeklyRetentionSchedule is weekly retention schedule. type WeeklyRetentionSchedule struct { DaysOfTheWeek *[]DayOfWeek `json:"daysOfTheWeek,omitempty"` RetentionTimes *[]date.Time `json:"retentionTimes,omitempty"` RetentionDuration *RetentionDuration `json:"retentionDuration,omitempty"` } // WorkloadProtectableItem is base class for backup item. Workload-specific backup items are derived from this class. type WorkloadProtectableItem interface { AsAzureIaaSClassicComputeVMProtectableItem() (*AzureIaaSClassicComputeVMProtectableItem, bool) AsAzureIaaSComputeVMProtectableItem() (*AzureIaaSComputeVMProtectableItem, bool) AsIaaSVMProtectableItem() (*IaaSVMProtectableItem, bool) } func unmarshalWorkloadProtectableItem(body []byte) (WorkloadProtectableItem, error) { var m map[string]interface{} err := json.Unmarshal(body, &m) if err != nil { return nil, err } switch m["protectableItemType"] { case string(ProtectableItemTypeMicrosoftClassicComputevirtualMachines): var aisccvpi AzureIaaSClassicComputeVMProtectableItem err := json.Unmarshal(body, &aisccvpi) return aisccvpi, err case string(ProtectableItemTypeMicrosoftComputevirtualMachines): var aiscvpi AzureIaaSComputeVMProtectableItem err := json.Unmarshal(body, &aiscvpi) return aiscvpi, err case string(ProtectableItemTypeIaaSVMProtectableItem): var ispi IaaSVMProtectableItem err := json.Unmarshal(body, &ispi) return ispi, err default: return nil, errors.New("Unsupported type") } } func unmarshalWorkloadProtectableItemArray(body []byte) ([]WorkloadProtectableItem, error) { var rawMessages []*json.RawMessage err := json.Unmarshal(body, &rawMessages) if err != nil { return nil, err } wpiArray := make([]WorkloadProtectableItem, len(rawMessages)) for index, rawMessage := range rawMessages { wpi, err := unmarshalWorkloadProtectableItem(*rawMessage) if err != nil { return nil, err } wpiArray[index] = wpi } return wpiArray, nil } // WorkloadProtectableItemResource is base class for backup item. Workload-specific backup items are derived from this // class. type WorkloadProtectableItemResource struct { ID *string `json:"id,omitempty"` Name *string `json:"name,omitempty"` Type *string `json:"type,omitempty"` Location *string `json:"location,omitempty"` Tags *map[string]*string `json:"tags,omitempty"` ETag *string `json:"eTag,omitempty"` Properties WorkloadProtectableItem `json:"properties,omitempty"` } // UnmarshalJSON is the custom unmarshaler for WorkloadProtectableItemResource struct. func (wpir *WorkloadProtectableItemResource) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { return err } var v *json.RawMessage v = m["properties"] if v != nil { properties, err := unmarshalWorkloadProtectableItem(*m["properties"]) if err != nil { return err } wpir.Properties = properties } v = m["id"] if v != nil { var ID string err = json.Unmarshal(*m["id"], &ID) if err != nil { return err } wpir.ID = &ID } v = m["name"] if v != nil { var name string err = json.Unmarshal(*m["name"], &name) if err != nil { return err } wpir.Name = &name } v = m["type"] if v != nil { var typeVar string err = json.Unmarshal(*m["type"], &typeVar) if err != nil { return err } wpir.Type = &typeVar } v = m["location"] if v != nil { var location string err = json.Unmarshal(*m["location"], &location) if err != nil { return err } wpir.Location = &location } v = m["tags"] if v != nil { var tags map[string]*string err = json.Unmarshal(*m["tags"], &tags) if err != nil { return err } wpir.Tags = &tags } v = m["eTag"] if v != nil { var eTag string err = json.Unmarshal(*m["eTag"], &eTag) if err != nil { return err } wpir.ETag = &eTag } return nil } // WorkloadProtectableItemResourceList is list of WorkloadProtectableItem resources type WorkloadProtectableItemResourceList struct { autorest.Response `json:"-"` NextLink *string `json:"nextLink,omitempty"` Value *[]WorkloadProtectableItemResource `json:"value,omitempty"` } // WorkloadProtectableItemResourceListPreparer prepares a request to retrieve the next set of results. It returns // nil if no more results exist. func (client WorkloadProtectableItemResourceList) WorkloadProtectableItemResourceListPreparer() (*http.Request, error) { if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { return nil, nil } return autorest.Prepare(&http.Request{}, autorest.AsJSON(), autorest.AsGet(), autorest.WithBaseURL(to.String(client.NextLink))) } // YearlyRetentionSchedule is yearly retention schedule. type YearlyRetentionSchedule struct { RetentionScheduleFormatType RetentionScheduleFormat `json:"retentionScheduleFormatType,omitempty"` MonthsOfYear *[]MonthOfYear `json:"monthsOfYear,omitempty"` RetentionScheduleDaily *DailyRetentionFormat `json:"retentionScheduleDaily,omitempty"` RetentionScheduleWeekly *WeeklyRetentionFormat `json:"retentionScheduleWeekly,omitempty"` RetentionTimes *[]date.Time `json:"retentionTimes,omitempty"` RetentionDuration *RetentionDuration `json:"retentionDuration,omitempty"` }